文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-07 18:29

关注

这篇文章将为大家详细讲解有关在Linux分布式环境中对session进行处理的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

什么是Linux系统

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

第一种:粘性session

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

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

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

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

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

?

1

2

3

4

5

6

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集群功能

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

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上。

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

② 非粘性session处理方式

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

在Linux分布式环境中对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

粘性模式配置:

在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/50773174?ref=myread

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯