首页 > 其他分享 >分布式session一致性方案

分布式session一致性方案

时间:2023-04-12 22:07:56浏览次数:30  
标签:存储 Terracotta redis session 一致性 服务器 共享 分布式


分布式session一致性方案_session共享

当服务器不止一台,就需要session共享,避免多次登录

1、客户端存储

原理

将session存储在浏览器cookie中

优点:服务端不需要存储session,不会出现session不一致的问题

缺点:存储在客户端不安全,并且每次请求都携带session,占用宽带,并且存储大小受到浏览器的限制。

分布式session一致性方案_session共享_02

2、粘性session

原理

对于同一个用户的session锁定到某一台服务器,当用户请求时负载均衡器会转发到锁定的那台服务器上,相当于将用户好服务器粘到了一块

实现

使用nginx的负载均衡,采用ip_hash算法,将用户绑定到固定的服务器上,实现session一致性

优点:简单,不需要特殊处理

缺点:缺乏容错性,当服务器发生故障,会导致session丢失

适用场景:发生故障影响小

3、服务器session复制

原理

每个服务器都存一份session,当有一台服务器session发生改变,就广播给其他服务器进行session复制,以此来保证session同步

实现

开启tomcat的集群配置实现

优点:可容错,各服务器session能够实时响应

缺点:服务器压力大,当session量大的话,会拖慢服务器性能

分布式session一致性方案_memcached_03

4、session共享

使用分布式缓存方案比如memcached、redis,但是要求是集群环境,分两种情况

1)粘性session共享:每个用户的session绑定到一个tomcat上,memcached/redis作为备份

2)非粘性session共享:tomcat本身不存储session,而是存入memcached/redis中,memcached/redis集群构建主从复制架构

分布式session一致性方案_memcached_04

5、session持久化到数据库

使用专门的数据库存储session,虽然session不对丢失,但是当访问量大的情况下,会对数据库造成比较大的压力

分布式session一致性方案_服务器_05

6、Terracotta实现session复制

Terracotta的基本原理就是对于集群间共享的数据,当一个节点发生变化的时候只把变化部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点,属于session复制的优化,Terracotta+Tomcat+nginx实现session的共享实例可以参考:https://blog.51cto.com/icenycmh/1844360

标签:存储,Terracotta,redis,session,一致性,服务器,共享,分布式
From: https://blog.51cto.com/u_11702014/6186303

相关文章

  • 05-分布式通信
    一、Netty和网络通信(一)Netty框架简介​1、BIO​存在性能问题、可靠性问题、可维护性问题​​BIO的核心问题是同步阻塞publicvoidservice()throwsIOException{ServerSocketserverSocket=newServerSocket(port);......
  • 关于浏览器sessionStorage共享问题
    今天也是闲暇之余看了点前端基础知识发现了好玩的window.open("同源页面")这种方式新开的页面会复制之前的sessionStorage通过a标签新开的页面同样也会,原理相同,在这就不赘述了。SessionStorage也有同源策略的限制,但是SessionStorage有一条更加严格的限制SessionStorage只有在......
  • hadoop完全分布式
    准备工作三台虚拟机,关闭防火墙,关闭selinux查看防火状态systemctlstatusfirewalld暂时关闭防火墙systemctlstopfirewalld永久关闭防火墙systemctldisablefirewalld查看selinux状态getenforce暂时关闭selinuxsetenforce0永久关闭selinux在/etc/selinux/confi......
  • sqlalchemy快速插入数据,scoped_session线程安全,加载类上的装饰器,基本增删改查,django中
    今日内容sqlalchemy快速插入数据sqlalchemy是什么orm框架,跟其他web框架没有必然联系,可以独立使用安装,快速使用,执行原生sql创建表和删除表不能创建数据库不能修改字段(增加,删除)使用orm插入第一步:生成engine对象engine=create_engine("mysql+pymysql://[email protected].......
  • TDSQL 是什么?腾讯推出的分布式数据库 TDSQL 简介
    TDSQL是什么?腾讯推出的分布式数据库TDSQL简介 0BY 董德多 ON 2022年5月12日数据库分布式数据库(TencentDistributedSQL,以下简称TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高SQL兼容度、分布式水平扩展、高性能、完整的分布式事务支......
  • 分布式监控平台------Zabbix
    一、Zabbix概述作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以:●通过一个友好的界面进行浏览整个网站所有的服务器状态●可以在Web前端方便的查看监控数据●可以回......
  • flask框架06 sqlalchemy使用 scoped_session线程安全 一对多 多对多 增删改查
    今日内容详细目录今日内容详细1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删查改3.1基本增删查改和高级查询3.2原生sql3.3django中执行原生sql4一对多4.1表模型4.2新增和基于对象的查询5多对多5.1表模型5.2增加和基于......
  • flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-
    目录flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-多对多-连表查询今日内容1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删改查3.1基本增删改查和高级查询3.2原生sql3.3django中执行原生sq......
  • 前端临时储存cookies、sessionStorage、localStorage
    cookies、sessionStorage、localStorage的区别是什么?(浏览器)1、cookie(1)本身用于客户端和服务端通信(2)但是它有本地存储的功能,于是就被“借用”(3)document.cookie=…获取和修改即可(4)cookie用于存储的缺点①存储量太小,只有4kb②所有http请求都带着,会影响获取资源的效率③api简单,需......
  • 04-分布式服务
    一、分布式服务体系(一)分布式系统概述​单体系统存在业务扩展性(任何业务的调整都需要发布整个系统)、性能扩展性(动态扩容对单体系统而言效率低下)、代码复杂度(修改一处代码容易引发连锁反应)的问题。​系统扩展性,指的是当系统的业务需求发生变化时,我们对现在系统改......