分布式session 笔记

概念

解决方案'

复制

复制代码
 session同步,让集群下的服务器进行session同步,一种传统的服务器集群session管理机制,常用于服务器不多的集群环境。<br />        集群下,进行session同步的服务器的session数据是相同的,任何一台服务器挂掉,都不会丢失用户的session数据。<br />        但是,session同步是通过广播的方式来异步同步session,会通过网络进行数据传输。当服务器越来越多时,session同步会占用大量带宽,并且每台服务器需要存储的session数据也越来越大,占用大量服务器内存。<br />所以,session同步策略一般适用于集群服务器不多的场景。<br />![image.png](https://cdn.nlark.com/yuque/0/2024/png/32623986/1704440649767-8ec30650-5d97-4f00-81d9-6397cd408a8f.png#averageHue=%23f9f4ee&clientId=u8c725f63-58f8-4&from=paste&height=476&id=u1c526622&originHeight=595&originWidth=1252&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=163941&status=done&style=none&taskId=u3f62f8af-b441-449b-a4ec-2ecf5b54c8d&title=&width=1001.6)

hash一致性

修改nginx的负载均衡配置,设置为ip-hash策略,将客户端与服务器进行绑定,让来自同一ip的请求,全都转发到同一台服务器。

此方案配置简单,但有一台服务器挂掉之后,该服务器上的session信息将全部丢失,与该服务器绑定的客户端,必须得重新登录。并且在进行水平扩展时,会重新对客户端ip进行hash操作,部分ip会被重新映射服务器。

java 复制代码
# 配置负载均衡服务器组名称和地址
upstream web_server {
    ip_hash;
    server 192.168.12.36;
    server 192.168.12.37;
    server 192.168.12.38;
}

# nginx路由配置
server {
    listen       8080;
    server_name  localhost;
    location / {
        proxy_pass http://web_server;
    }
}

基于Redis的分布式session

将集群下所有服务器的session都存储到redis集群中。

直接使用Spring封装的Spring Session,引入相关依赖,使用简单,session数据保存在redis中,无缝接入,无安全隐患;且Redis也可做主从集群架构,方便管理。唯一的缺点是,服务器需要与Redis做一次网络交互,多了点网络开销。

相关推荐
2501_941805312 小时前
使用Python和Go构建高性能分布式任务调度系统的实践分享
分布式·python·golang
狐572 小时前
2026-01-20-论文阅读-Can-1B-LLM-Surpass-405B-LLM?
论文阅读·笔记
徐先生 @_@|||2 小时前
数据分析体系全览导图综述
大数据·hadoop·分布式·数据分析
Tiaoxiaobai2 小时前
如何实现亚细胞定位
人工智能·笔记
龙仔7252 小时前
n2n supernode Linux完整部署笔记,包含离线部署,
linux·运维·笔记·n2n·supernode
2501_944332163 小时前
深圳的售后服务系统解决方案有哪些提供商?
笔记
虹科网络安全4 小时前
艾体宝洞察 | 缓存策略深度解析:从内存缓存到 Redis 分布式缓存
redis·分布式·缓存
weixin_440730504 小时前
04python编程笔记-01基础知识+02三种结构
java·笔记·python
WYH2874 小时前
TTSY-学习笔记1
笔记·学习
被遗忘的旋律.4 小时前
Linux驱动开发笔记(二十四)——(下)IIO + MPU6050驱动
linux·驱动开发·笔记