在Linux分布式环境中对session进行处理的方法

2022年 10月 16日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

本文将详细解释如何在Linux分布式环境中处理会话。文章内容质量较高,本站将与大家分享,以供参考。希望大家看完这篇文章后对相关知识有一定的了解。

什么是Linux系统

Linux是一个类似Unix的操作系统,可以自由使用和自由传播。它是一个基于POSIX的多用户、多任务、多线程、多CPU的操作系统。Linux可以运行主要的UNIX工具软件、应用程序和网络协议。

第一种:粘性session

原理:粘性会话是指将用户锁定在某个服务器,例如,当用户第一次请求时,负载均衡器将用户的请求转发给A服务器,如果负载均衡器设置了粘性会话,那么用户的每个请求都会转发给A服务器,这相当于将用户和A服务器粘在一起。这就是粘性会话机制。

优点:很简单,不需要在会话中做任何处理。

缺点:缺乏容错能力。如果当前服务器失败,用户被转移到第二个服务器,他的会话信息将无效。

适用场景:的失败对客户的影响较小;服务器的失败是一个低概率事件。

实现方式:以nginx为例,在上游模块配置ip_hash属性可以实现粘性会话。

一个

2

上游mycluster{

#这里添加的是上面开始的两只雄猫服务器

ip _ hash#粘性会话

服务器192.168.22.229:8080权重=1;

服务器192.168.22.230:8080权重=1;

}

第二种:服务器session复制

如果原理:任何一个服务器上的会话发生改变(添加、删除或修改),该节点将序列化该会话的所有内容,然后将其广播给所有其他节点,而不管其他服务器是否需要会话,以确保会话的同步。

优点:是容错的,服务器之间的会话可以实时响应。

缺点:会对网络负载造成一定的压力,如果会话数量多,可能会造成网络拥塞,降低服务器的性能

实现方式:

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

在Linux分布式环境中对session进行处理的方法

Address:只需填写原生ip,设置端口号,防止端口冲突。

向应用程序添加信息:通知应用程序它当前处于集群环境中,并且支持分布式

将选项可分发/添加到web.xml

第三种:session共享机制

使用分布式缓存方案,如memcached和redis,但要求memcached或redis是一个集群。

使用会话共享有两种机制,如下所示:

粘性session处理方式

原理:不同的tomcat指定访问不同的主memcached。多个memcached之间的信息是同步的,可以从主机备份到从机,并且高度可用。当用户访问时,他首先在tomcat中创建一个会话,然后复制该会话并将其放入相应的memcahed中。Memcache只起备份作用,读写都在tomcat上。当tomcat挂机时,集群定位用户对备用tomcat的访问,然后根据存储在cookie中的sessionid找到会话。如果找不到,它会转到相应的memcached会话,并在找到后将其复制到备用tomcat。

进行处理的方法">

② 非粘性session处理方式

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

在Linux分布式环境中对session进行处理的方法

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

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

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

javamemcached客户端: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

粘性模式配置:

在Linux分布式环境中对session进行处理的方法

非粘性配置:

在Linux分布式环境中对session进行处理的方法

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

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

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

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

第五种terracotta实现session复制

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

在Linux分布式环境中对session进行处理的方法

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

原文链接:http://blog.csdn.net/u010028869/article/details/50773174ref=myread

关于在Linux分布式环境中对session进行处理的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

腾讯云正在大促:点击 https://2bcd.com/go/tx/进入最新活动页】领取无门槛代金券,附云服务器价格表,2核2G4M轻量应用服务器99元1年,新老用户都可以买,可以享受1次续费99元一年、135元15个月、三年560元,MySQL云数据库59元1年起,2核2G3M配置82元1年,2核4G5M配置188元一年、3年900元,4核8G12M轻量服务器880元15个月,8核16G配置1890元15个月,更多16核32G28M带宽和云服务器CVM标准型S5、GPU服务器、CVM标准型SA2租用优惠价格如下,可以 点此进入最新活动页 查看当前最新的优惠券和活动信息。还可以领下10元无门槛代金券:点此直达 阿里云限量超级红包:点击领取】5亿上云补贴和2088元满减代金券,阿里云服务器租用费用最新价格表【点击了解】,最便宜轻量应用服务器2核2G3M带宽82元1年,ECS云服务器2核2G3M带宽99元一年,ECS u1实例2核4G5M带宽优惠价格199元一年,香港30M带宽轻量服务器24元1个月、288元一年,4核8G服务器706元一年,ECS云服务器4核16G10M带宽30元1个月、90元3个月,云服务器8核32G10M带宽109元1个月、327元3个月。阿里云产品最高降价55%,点击 https://2bcd.com/go/aliyun/ 进入最新活动页了解。 腾讯云续费贵,一次性买3年/5年,免得续费贵。3年轻量 2核2G 4M 560元;3年轻量 2核4G 5M 3年900元,活动入口:点击前往(下拉到“爆品专区”即可看到)。 老用户享新人优惠的方法:用Qq登录、1人可注册3个新账号/用家人朋友的身份注册新号(点击注册新账号)。
小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: