当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/526795.html

相关文章:

  • SpringBoot整合Swagger UI 用于提供接口可视化界面
  • 如何实现滑动开关功能
  • 数仓的数据加工过程-ETL
  • 自动驾驶中的多传感器时间同步
  • CYT3BB_4BB:Clock system
  • C# OpenCV机器视觉:利用CNN实现快速模板匹配
  • 消息队列篇--通信协议扩展篇--二进制编码(ASCII,UTF-8,UTF-16,Unicode等)
  • Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法
  • 跟我学C++中级篇——容器的连接
  • java求职学习day15
  • 【脚本】如何禁用谷歌浏览器自动更新
  • 【Linux】华为服务器使用U盘安装统信操作系统
  • WPF3-在xaml中引用其他程序集的名称空间
  • Python 在Word中添加、或删除超链接
  • 基于 WPF 平台使用纯 C# 实现动态处理 json 字符串
  • 「全网最细 + 实战源码案例」设计模式——单例设计模式
  • 第01章 19 通过点数据逐级构建球体体数据的综合性小例子
  • CVE-2024-23897-Jenkins任意文件读取漏洞复现
  • 前端react后端java实现提交antd form表单成功即导出压缩包
  • 基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础
  • 接口(完)
  • 数据结构——实验七·排序
  • JVM堆空间
  • 【详细】SSH公私钥认证与渗透测试攻击场景
  • 常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
  • C++异步future
  • Oracle 12c 中的 CDB和PDB的启动和关闭
  • Vue组件开发-使用 html2canvas 和 jspdf 库实现PDF文件导出 设置页面大小及方向
  • chrome插件:网页图片高清下载
  • 汽车定速巡航