分布式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做一次网络交互,多了点网络开销。

相关推荐
yxy___4 小时前
达梦分布式集群DPC_分区表重建与性能优化操作指南_yxy
分布式·性能优化·分区表
走遍西兰花.jpg4 小时前
spark的shuffle原理及调优
大数据·分布式·spark
小邓睡不饱耶4 小时前
Spark 3.5.1 全栈实战指南:从环境部署到生产优化
大数据·分布式·spark
挨踢学霸5 小时前
技术全面重构|MsgHelper 新版深度拆解:交互、视觉与逻辑的底层优化(二)
经验分享·笔记·微信·架构·自动化
姚不倒6 小时前
三节点 TiDB 集群部署与负载均衡搭建实战
运维·数据库·分布式·负载均衡·tidb
前端技术6 小时前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
aini_lovee6 小时前
33节点配电网分布式发电(DG)最优分布MATLAB实现
分布式·matlab·wpf
不爱编程的小陈6 小时前
自研基于Raft的高性能分布式KV存储系统(一)
分布式
珠海西格6 小时前
聚焦痛点|分布式光伏消纳困境的三大表现及红区治理难点
服务器·网络·分布式·安全·区块链
OxyTheCrack6 小时前
【C++】简述Observer观察者设计模式附样例(C++实现)
开发语言·c++·笔记·设计模式