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连接。这样避免了网络的压力,并实现了灾难恢复的功能。

相关推荐
装不满的克莱因瓶7 小时前
设计模式之策略模式核心概念和应用场景
java·后端·设计模式·架构·系统架构·策略模式
kiwixing7 小时前
GaussDB|集中式还是分布式?三把尺子选型
分布式·gaussdb
真上帝的左手17 小时前
30. 技术专题-‌应用框架组件-分布式架构
分布式·架构·系统架构·分布式架构
zixu_star1 天前
从单机到分布式:定时任务如何处理大量数据与执行失败?
分布式
lsc_blog2 天前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
Lansonli3 天前
大数据Spark(八十七):Spark-Submit 参数详解
大数据·分布式·spark
qq_452396233 天前
第二篇:《CommitLog + ConsumeQueue:一条日志解决 Kafka 多分区随机写的难题》
分布式·kafka
吴建旭 智宅焕3 天前
智能家居B端客户路径诊断的系统架构设计与实现:背景采集、经验分层与交付确定性
系统架构·智能家居
Alluxio4 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
阿卡好可爱4 天前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua