网站首页 > 技术教程 正文
在集群中实现session共享存储,主要有以下几种方法:
- 粘滞会话(会话保持):在负载均衡环境中,确保用户的连续请求被转发到同一台服务器上,从而保持session的连续性。
- 会话复制:在服务器集群中,通过同步机制将会话信息从一个服务器复制到其他服务器,使得每个服务器都有相同的会话信息。
- Session数据集中存储:将会话信息存储在数据库中,所有服务器都可以访问同一个数据库来获取或更新会话信息。这种方法的稳定性好,但可能会影响数据库的性能。
- 基于Token认证(如JWT):将用户会话信息加密并存储在客户端来实现会话共享。服务器无需存储会话信息,使得服务器可以无状态运行。
另外,将session存储到Redis中也是实现集群环境下session共享的一种有效方式。通过引入Redis依赖和Redis-session依赖,可以实现Spring Session与Redis的整合,从而在集群环境中共享session。
Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不存在的情况下(session 生命周期到了/用户第一次登录),创建一个新的 Session;
但是,如果我们在集群环境下,假设我们有两台服务器 A,B,用户的请求会由Nginx 服务器进行转发(别的方案也是同理),用户登录时,Nginx 将请求转发至服务器 A 上,A 创建了新的 session,并将 SessionID 返回给客户端,用户在浏览其他页面时,客户端验证登录状态,Nginx 将请求转发至服务器 B,由于 B 上并没有对应客户端发来 sessionId 的 session,所以会重新创建一个新的 session,并且再将这个新的 sessionID 返回给客户端,这样,我们可以想象一下,用户每一次操作都有 1/2 的概率进行再次的登录,这样不仅对用户体验特别差,还会让服务器上的 session 激增,加大服务器的运行压力。
为了解决集群环境下的 seesion 共享问题,共有 4 种解决方案:
1.粘性 session
粘性 session 是指 Ngnix 每次都将同一用户的所有请求转发至同一台服务器上,
即将用户与服务器绑定。
2.服务器 session 复制
即每次 session 发生变化时,创建或者修改,就广播给所有集群中的服务器,使
所有的服务器上的 session 相同。
3.session 共享
缓存 session,使用 redis, memcached。
4.session 持久化
将 session 存储至数据库中,像操作数据一样才做 session。
至于二进制协议,它是一种计算机网络中广泛使用的协议类型。它将信息的传输和处理转化为由0和1构成的二进制数据。在二进制协议中,信息以二进制形式进行传输,每个二进制位(bit)可以表示一个0或者1。根据不同的协议规定,二进制位可以表示不同的含义,如字符、数字、图片等。二进制协议具有传输速度快、数据精确、协议简单等特点,广泛应用于网络通信、文件传输、图像处理等领域。
关于二进制最好的信息当然是二进制协议规范:
二进制协议尝试为端提供一个更有效的、可靠的协议,减少客户端/服务器端因处理协议而产生的 CPU 时间。
根据 Facebook 的测试,解析 ASCII 协议是 memcached 中消耗 CPU 时间最多的环节。
猜你喜欢
- 2024-10-13 PHP 分布式集群中session共享问题以及session有效期的设置
- 2024-10-13 spring-session的使用详解(spring sessionfactory)
- 2024-10-13 springboot集成springsession利用redis来实现session共享
- 2024-10-13 「SSO单点登录」分布式Session存在问题 spring-session的设计之妙
- 2024-10-13 【第一篇】Spring-Session实现Session共享入门教程
- 2024-10-13 分布式环境session共享实战课程(分布式怎么实现session共享)
- 2024-10-13 SpringBoot一个依赖搞定session共享,没有比这更简单的方案了
- 2024-10-13 #高可用的并发解决方案nginx+keepalived(二)
- 2024-10-13 阿里十年架构师带你学分布式高性能架构Dubbo+Nginx+Session+RPC
- 2024-10-13 Spring Boot一个依赖搞定 Session 共享
你 发表评论:
欢迎- 最近发表
-
- Oracle 在其新的 Linux 内核中引入了热补丁功能
- CentOS 7.6下安装Oracle 11.2.0.4
- ORACLE体系 - 2(oracle体系讲解)
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- Hadoop自学系列集(二) ---- CentOS下安装JDK
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 搭建Oracle数据库服务器(oracle服务器创建用户)
- OGG同步到Kafka(oggforbigdata到kafka)
- oracle是什么软件?(oracle是干什么用的)
- 脚本化修改Oracle用户的密码以及执行sql(增删改查等)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)