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

2022年 10月 16日 发表评论

新春采购季点击领腾讯云8888元代金券阿里云史上最大力度降价,最高降55%:点击了解续费贵、升级贵,选配置高、长期的产品;腾讯云老用户享新人优惠方法:用Q登录、1人可注册3个新账号帕鲁火热:点击一键部署阿里云帕鲁服务器点击一键部署腾讯云帕鲁服务器

本文将详细解释如何在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进行处理的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

小咸鱼

发表评论

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