对于大型分布式网站来说,一个业务后面往往对应着多台服务器。用户的请求将在不同的服务器之间进行跳转,这样的情形下,我们就需要保持session在不同服务器之间的同步。

1、基于数据库的session共享。

原理:使用数据库专门用来存储session信息,保证session的持久化。

优点:服务器出现问题,session不会丢失。

缺点:如果网站的访问量很大,把session存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库,系统整体的吞吐会受到很大的影响。

2、session 复制

原理:将一台机器上的Session数据广播复制到集群中其余机器上

优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问

缺点:在机器较少,网络流量较小广播式复制到其余机器上,当机器数量增多时候会有一定廷时,带来一定网络开销

3、基于redis的分布式session

原理:将sessionId作为key, session 作为value 保存在redis集群中

优点:实现了集群之间的session同步,实现了服务器的高可用

实现流程:用户请求通过负载均衡设备(比如nginx)转发到不同的应用服务器集群上,应用服务器会根据sessionId来访问redis 集群进行session的存取。这样即使某台服务器宕机了,也不会影响到其他的服务器。

java session 同步_session同步相关推荐

  1. java session持久化_Session的生命周期和持久化

    ![](https://box.kancloud.cn/44537ef796e6a49c6421fd9186276df6_468x371.png) web.xml中配置,session的计算是从停止操 ...

  2. Java多线程-线程的同步与锁

    一.同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏. 例如:两个线程ThreadA.ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据. package ...

  3. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站

    Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...

  4. java 代码同步_Java同步代码块 转

    Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静 ...

  5. java中什么是同步_Java中,“synchronized”(同步)是什么意思?什么时候应该用synchronized? - Break易站...

    synchronized关键字的意义是什么? 什么时候应该是方法synchronized? 这是什么编程和逻辑? Java中,"synchronized"(同步)是什么意思?什么时 ...

  6. java异步接口转同步接口_如果今天设计了Java:同步接口

    java异步接口转同步接口 Java已经走了很长一段路. 很长的路要走. 它带有早期设计决策中的所有"垃圾". 一遍又一遍后悔的一件事是, 每个对象(可能)都包含一个监视器 . 几 ...

  7. java每一个小时同步_Java同步块(synchronized block)使用详解

    Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静 ...

  8. java多线程采集+线程同步-【多线程数据采集之四】

    前些日子讲解了java数据抓取, 今天就讲解最核心的. java多线程数据抓取. java多线程采集+数据同步+线程同步[多线程数据采集之四] 主要讲解多线程抓取,多线程同步,多线程启动,控制等操作. ...

  9. java 线程 john_教你Java开发中多线程同步技巧

    教你Java开发中多线程同步技巧 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java ...

最新文章

  1. unbutu18.04.4 截图工具 flameshot
  2. parent winform 位置_winform 弹出窗体指定位置
  3. springmvc导出excel并弹出下载框
  4. Beyond Compare 3.3.8 build 16340 + Key
  5. Beta冲刺(9/7)——2019.5.31
  6. Echarts pie 饼图类型后显示数据
  7. extjs office java_Extjs使用(最最基础)
  8. Nginx服务器学习(一)CentOS7系统安装Nginx
  9. MySQL不同字段比较大小_mysql 字段定义 对 大小比较的影响
  10. Java基础-面向对象-封装继承多态
  11. Android平台上的PacketSender
  12. 90952-27-5,Thiol-PEG4-alcohol含有羟基和巯基的交联剂
  13. Sepic变换器的基本原理
  14. 后台系统的权限控制与管理
  15. 前端:Tomcat服务器部署Web项目
  16. chrome浏览器调试JS代码
  17. 京东2017实习生招聘试题 方法调用
  18. 罗技高清网络摄像头 C270 64位win7适用软件
  19. Cover Letter实用指南
  20. 如何对CAD图层线型进行修改?

热门文章

  1. 守护基于JVM的应用程序
  2. 处理Akka应用程序中的每个事件
  3. 玩Java 8 – Lambda和并发
  4. Java方法中的参数太多,第5部分:方法命名
  5. Spring Data Solr教程:向所有存储库添加自定义方法
  6. Spring集成文件轮询和测试
  7. 一些基于Java的AI框架:Encog,JavaML,Weka
  8. 春天遇见Apache Hadoop
  9. 重新查看Play Framework发布的值
  10. html 元素的属性