全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Linux集群/分布式环境下session处理的五种策略详解

前言

我们一般在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会将用户踢到登录页面。这将大大降低用户体验度,导致用户的流失,这种情况是项目绝不应该出现的。

我们应当对产生的Session进行处理,通过粘性Session,Session复制或Session共享等方式保证用户的体验度。

以下我将说明5种Session处理策略,并分析其优劣性。话不多说了,来一起看看详细的介绍吧。

第一种:粘性session

原理:粘性Session是指将用户锁定到某一个服务器上,比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,如果负载均衡器设置了粘性Session的话,那么用户以后的每次请求都会转发到A服务器上,相当于把用户和A服务器粘到了一块,这就是粘性Session机制。

优点:简单,不需要对session做任何处理。

缺点:缺乏容错性,如果当前访问的服务器发生故障,用户被转移到第二个服务器上时,他的session信息都将失效。

适用场景:发生故障对客户产生的影响较小;服务器发生故障是低概率事件。

实现方式:以Nginx为例,在upstream模块配置ip_hash属性即可实现粘性Session。

upstream mycluster{
 #这里添加的是上面启动好的两台Tomcat服务器
 ip_hash;#粘性Session
  server 192.168.22.229:8080 weight=1;
  server 192.168.22.230:8080 weight=1;
}

第二种:服务器session复制

原理:任何一个服务器上的session发生改变(增删改),该节点会把这个 session的所有内容序列化,然后广播给所有其它节点,不管其他服务器需不需要session,以此来保证Session同步。

优点:可容错,各个服务器间session能够实时响应。

缺点:会对网络负荷造成一定压力,如果session量大的话可能会造成网络堵塞,拖慢服务器性能。

实现方式:

① 设置tomcat ,server.xml 开启tomcat集群功能

Address:填写本机ip即可,设置端口号,预防端口冲突。

② 在应用里增加信息:通知应用当前处于集群环境中,支持分布式

在web.xml中添加选项 <distributable/>

第三种:session共享机制

使用分布式缓存方案比如memcached、redis,但是要求Memcached或Redis必须是集群。

使用Session共享也分两种机制,两种情况如下:

① 粘性session处理方式

原理:不同的 tomcat指定访问不同的主memcached。多个Memcached之间信息是同步的,能主从备份和高可用。用户访问时首先在tomcat中创建session,然后将session复制一份放到它对应的memcahed上。memcache只起备份作用,读写都在tomcat上。当某一个tomcat挂掉后,集群将用户的访问定位到备tomcat上,然后根据cookie中存储的SessionId找session,找不到时,再去相应的memcached上去session,找到之后将其复制到备tomcat上。

② 非粘性session处理方式

原理:memcached做主从复制,写入session都往从memcached服务上写,读取都从主memcached读取,tomcat本身不存储session

优点:可容错,session实时响应。

实现方式:用开源的msm插件解决tomcat之间的session共享:Memcached_Session_Manager(MSM)

a. 复制相关jar包到tomcat/lib 目录下

JAVA memcached客户端:spymemcached.jarmsm项目相关的jar包:1. 核心包,memcached-session-manager-{version}.jar2. Tomcat版本对应的jar包:memcached-session-manager-tc{tomcat-version}-{version}.jar序列化工具包:可选kryo,javolution,xstream等,不设置时使用jdk默认序列化。

b. 配置Context.xml ,加入处理Session的Manager

粘性模式配置:

非粘性配置:

 

第四种:session持久化到数据库

原理:就不用多说了吧,拿出一个数据库,专门用来存储session信息。保证session的持久化。

优点:服务器出现问题,session不会丢失

缺点:如果网站的访问量很大,把session存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库。

第五种terracotta实现session复制

原理:Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。可以看成是对第二种方案的优化。

优点:这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在session同步上,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。

实现方式:篇幅原因,下篇再论。

小结

以上讲述的就是集群或分布式环境下,session的5种处理策略。其中就应用广泛性而言,第三种方式,也就是基于第三方缓存框架共享session,应用的最为广泛,无论是效率还是扩展性都很好。而Terracotta作为一个JVM级的开源群集框架,不仅提供HTTP Session复制,它还能做分布式缓存,POJO群集,跨越群集的JVM来实现分布式应用程序协调等,也值得学习一下。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# 集群  # session  # 集群环境session共享  # 集群session共享  # 使用Docker Swarm搭建分布式爬虫集群的方法示例  # Centos7.3 RabbitMQ分布式集群搭建示例  # PHP实现分布式memcache设置web集群session同步的方法  # Linux下Kafka分布式集群安装教程  # Linux下ZooKeeper分布式集群安装教程  # 详解CentOS 6.5搭建Redis3.2.8单机分布式集群  # 详解使用docker搭建hadoop分布式集群  # java 分布式与集群的区别和联系  # Hadoop单机版和全分布式(集群)安装  # 爬虫技术之分布式爬虫架构的讲解  # 分布式和集群的概述讲解  # 均衡器  # 器上  # 序列化  # 两种  # 将其  # 会对  # 负载均衡  # 两台  # 第二种  # 开源  # 第三种  # 的是  # 就会  # 都在  # 也就  # 多个  # 不需要  # 说了  # 这就是  # 是指 


相关文章: 宝塔新建站点为何无法访问?如何排查?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何通过NAT技术实现内网高效建站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  常州自助建站工具推荐:低成本搭建与模板选择技巧  建站VPS配置与SEO优化指南:关键词排名提升策略  如何制作网站标识牌,动态网站如何制作(教程)?  个人摄影网站制作流程,摄影爱好者都去什么网站?  网站网页制作专业公司,怎样制作自己的网页?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何通过FTP服务器快速搭建网站?  建站之星上传入口如何快速找到?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星如何开启自定义404页面避免用户流失?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  黑客如何通过漏洞一步步攻陷网站服务器?  建站之星后台密码遗忘如何找回?  如何做网站制作流程,*游戏网站怎么搭建?  如何高效完成自助建站业务培训?  建站之星安装后界面空白如何解决?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  建站之星与建站宝盒如何选择最佳方案?  如何规划企业建站流程的关键步骤?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  制作证书网站有哪些,全国城建培训中心证书查询官网?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站之星好吗?新手能否轻松上手建站?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  大连网站制作公司哪家好一点,大连买房网站哪个好?  nginx修改上传文件大小限制的方法  装修招标网站设计制作流程,装修招标流程?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何高效配置香港服务器实现快速建站?  家庭服务器如何搭建个人网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何快速生成高效建站系统源代码?  建站之星免费模板:自助建站系统与智能响应式一键生成  ,制作一个手机app网站要多少钱?  ui设计制作网站有哪些,手机UI设计网址吗?  如何选择CMS系统实现快速建站与SEO优化?  如何在云服务器上快速搭建个人网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  焦点电影公司作品,电影焦点结局是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。