集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。

1. 客户端cookie加密

这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。

问题:session中数据不能太多,最好只有个用户id。

参考实现:http://rollerweblogger.org/

2. application server的session复制

可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。

问题:

性能随着服务器增加急剧下降,而且容易引起广播风暴;

session数据需要序列化,影响性能。

如何序列化,可以参考 对象的序列化和反序列化.

参考资料:

Tomcat 5集群中的SESSION复制一

Tomcat 5集群中的SESSION复制二

应用服务器-JBoss 4.0.2集群指南

3. 使用数据库保存session

使用数据库来保存session,就算服务器宕机了也没事,session照样在。

问题:

程序需要定制;

每次请求都进行数据库读写开销不小(使用内存数据库可以提高性能,宕机就会丢失数据。可供选择的内存数据库有BerkeleyDB,Mysql的内存表);

数据库是一个单点,当然可以做数据库的ha来解决这个问题。

4. 使用共享存储来保存session

和数据库类似,就算服务器宕机了也没事,session照样在。使用nfs或windows文件共享都可以,或者专用的共享存储设备。

问题:

程序需要定制;

频繁的进行数据的序列化和反序列化,性能是否有影响;

共享存储是一个单点,这个可以通过raid来解决。

5. 使用memcached来保存session

这种方式跟数据库类似,不过因为是内存存取的,性能自然要比数据库好多了。

问题:

程序需要定制,增加了工作量;

存入memcached中的数据都需要序列化,效率较低;

memcached服务器一死,所有session全丢。memchached能不能做HA? 我也不知道,网站上没提。

参考资料:

应用memcached保存session会话信息

正确认识memcached的缓存失效

扩展Tomcat 6.x,使用memcached存放session信息

6. 使用terracotta来保存session

跟memcached类似,但是数据不需要序列化,并且是Find-Grained Changes,性能更好。配置对原来的应用完全透明,原有程序几乎不用做任何修改。而且terracotta本身支持HA。

问题:terracotta的HA本身进行数据复制性能如何?

参考资料:

转载于:https://www.cnblogs.com/isoftware/p/3785499.html

集群中几种session同步解决方案的比较[转]相关推荐

  1. 6 张图带你搞懂 Kubernetes 集群中几种常见的流量暴露方案

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ❝ 作者:KaliArch(薛磊),某 Cloud MSP 服务商产品负责人,熟悉企业级高可用 / 高并发架构,包 ...

  2. 集群没有leader_ZooKeeper 集群中 Leader 与 Follower 的4种数据同步策略

    首先要声明一点,zk集群中,leader服务器有着比较重要的存在,Follower 服务器只是处理非事务性请求,leader服务器主要负责事务性请求,Follower 服务器在遇到事务性请求以后还是会 ...

  3. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

  4. Shiro结合Redis解决集群中session同步问题

    Shiro结合Redis解决集群中session同步问题 参考文章: (1)Shiro结合Redis解决集群中session同步问题 (2)https://www.cnblogs.com/Luke-M ...

  5. Tomcat5集群中的SESSION复制详解

    Tomcat 5服务器为集群和SESSION复制提供了集成的支持.本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的 内在工作机制一个概要认识.我将会讨论SE ...

  6. PHP集群中SESSION共享方案之Redis

      我记得我之前有写过在PHP集群中使用memcached来共享SESSION的解决方法,其实redis还是一样!出差在外,咱就别太讲究了,码篇博客做为睡前甜点吧 搭建PHP集群的第一步就是设置负载均 ...

  7. Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略

    文章目录 流程图 why ? How ? 何时触发数据同步的机制? 同步哪些数据 同步方式 DIFF 同步 TRUNC+DIFF 同步 TRUNC 同步 SNAP 同步 同步后的处理 源码分析 流程图 ...

  8. zookeeper集群部署监控与选举同步流程等工作原理

    部署一个zookeeper集群,要多简单就能有多简单(下载压缩包,解压,修改配置文件zoo.cfg,执行启动脚本),但是想要真的把这套东西玩好了,还是需要费些功夫研究一番的.就跟自己搭建一个lnmp的 ...

  9. ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步

    Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段.近期有场景需要做Oracle到Hadoop体系的实时导入,这里以此案例做以介绍. Oracle作为商业化的数据库解 ...

最新文章

  1. LeetCode Intersection of Two Arrays
  2. JS获取URL中GET的参数
  3. 研究生报考苏州大学计算机科学与技术,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
  4. docker run与docker start的区别?
  5. QT的QGLFunctions类的使用
  6. Linux之Server环境配置
  7. SpringBootAdmin项目创建
  8. IETF:名词历史简介互联网精神的典范
  9. 强烈推荐 MicroSoft Office OneNote
  10. python怎么调用navicat_三十七、python操作mysql,和navicat
  11. Java 7 对ArrayList和HashMap的性能的提升
  12. 无需安装Oracle,用PL/SQL直接连接Oracle服务器
  13. ORA-01078和LRM-00109问题导致ORACLE启动失败解决方法
  14. 【编辑器】用CodeRunner打造VScode的C++开发环境
  15. 联想V480(扬天) EI Capitan 完美驱动教程
  16. 最全面贴片电阻知识,封装、尺寸、最大承受功率及选型统统包括-电子技术方案|电路图讲解
  17. SAP S/4 HANA Cloud自定义报表制作方法二
  18. 如何绘制日式厚涂插画_厚涂样式
  19. 浩辰CAD参考图剪辑编辑
  20. Thickbox使用中的一些问题

热门文章

  1. mysql 查询姓张或者姓王_mysql查询练习
  2. java atomicfloat_Java:有没有AtomicFloat或AtomicDouble?
  3. 电脑切换用户关闭计算机会怎样,电脑中的“睡眠、关机、注销、切换用户、待机、休眠”都什么意思?有什么区别...
  4. python 钉钉机器人自定义发送文件_Python自定义钉钉机器人发送自动化结果报告...
  5. 010_TreeMap键使用Comparator排序
  6. arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
  7. 本科是学计算机研究生学教育学,教育学研究生好考吗?
  8. echart 圆饼图 显示单位_玩转ECharts之实现“1/2圆的玫瑰图”
  9. Oralce数据库数据迁移到另一个数据
  10. java导出word表格_使用PowerDesigner16.5 逆向数据库 导出word文档