16 分布式session和无状态的会话

在我们传统的应用中session存储在服务端,减少服务端的查询压力。如果以集群的方式部署,用户登录的session存储在该次登录的服务器节点上,如果下次访问服务端的请求落到其他节点上就需要重新生成session,这样用户需要频繁的登录。

nginx使用ip hash的方式代理服务

当nginx使用该方式代理请求转发时,相同ip的用户请求会落到相同的机器上,这样就可以避免了频繁的登录。

该方式部署简单,在nginx上做相应的配置即可。该方案缺乏容错性,如果用户请求的机器发生故障,请求就会落到其他的节点上,session就会失效。适用于发生故障对用户影响小,并且服务器发生概率低的场景。

服务端的session复制

web容器在session发生改变的时候都会把session序列号并广播到其他web容器,以此来保证session的同步。

该方案保证了容错性,如果在用户量很大的情况下网络会成为同步的瓶颈,整个集群的性能会受到严重的影响。

如果使用tomcat作为web容器的情况下,设置server.xml开启tomcat的集群同步功能

session共享

使用中间件存储session信息。一般使用redis集群或memcached,中间件一般使用集群部署的方式,防止单点故障

session持久化

把session持久化到数据库中,该方案在用户量很大的情况下会对数据库造成很大的压力

terracotta实现session复制

terracotta实现的session复制只是在session的变化部分复制到terracotta服务器,并且各个节点和terracotta保持tcp连接。这样避免了网络的压力,并实现了灾难恢复的功能。

相关推荐
失散1311 小时前
分布式专题——33 一台新机器进行Web页面请求的历程
分布式·tcp/ip·http·路由器·交换机
2501_9212904414 小时前
嵌入式第六十六天(I2C子系统架构)
系统架构
稚辉君.MCA_P8_Java15 小时前
kafka解决了什么问题?mmap 和sendfile
java·spring boot·分布式·kafka·kubernetes
沐浴露z15 小时前
分布式场景下防止【缓存击穿】的不同方案
redis·分布式·缓存·redission
zhuyasen16 小时前
让压测回归简单:体验 PerfTest 分布式模式的“开箱即用”
分布式·压力测试
lypzcgf18 小时前
Coze源码分析-资源库-编辑知识库-后端源码-流程/技术/总结
系统架构·知识库·coze·coze源码分析·智能体平台·ai应用平台·agent平台
jackaroo202018 小时前
后端_Redis 分布式锁实现指南
数据库·redis·分布式
00后程序员张18 小时前
RabbitMQ核心机制
java·大数据·分布式
爱吃烤鸡翅的酸菜鱼20 小时前
深度掌握 Git 分支体系:从基础操作到高级策略与实践案例
分布式·git·后端·gitee·github
yenggd1 天前
vxlan-bgp-evnp分布式网关配置案例
网络·分布式·华为