集群中几种session同步解决方案的比较[转]
集群中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同步解决方案的比较[转]相关推荐
- 6 张图带你搞懂 Kubernetes 集群中几种常见的流量暴露方案
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ❝ 作者:KaliArch(薛磊),某 Cloud MSP 服务商产品负责人,熟悉企业级高可用 / 高并发架构,包 ...
- 集群没有leader_ZooKeeper 集群中 Leader 与 Follower 的4种数据同步策略
首先要声明一点,zk集群中,leader服务器有着比较重要的存在,Follower 服务器只是处理非事务性请求,leader服务器主要负责事务性请求,Follower 服务器在遇到事务性请求以后还是会 ...
- redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...
先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...
- Shiro结合Redis解决集群中session同步问题
Shiro结合Redis解决集群中session同步问题 参考文章: (1)Shiro结合Redis解决集群中session同步问题 (2)https://www.cnblogs.com/Luke-M ...
- Tomcat5集群中的SESSION复制详解
Tomcat 5服务器为集群和SESSION复制提供了集成的支持.本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的 内在工作机制一个概要认识.我将会讨论SE ...
- PHP集群中SESSION共享方案之Redis
我记得我之前有写过在PHP集群中使用memcached来共享SESSION的解决方法,其实redis还是一样!出差在外,咱就别太讲究了,码篇博客做为睡前甜点吧 搭建PHP集群的第一步就是设置负载均 ...
- Apache ZooKeeper - ZooKeeper 集群中 Leader 与 Follower 的数据同步策略
文章目录 流程图 why ? How ? 何时触发数据同步的机制? 同步哪些数据 同步方式 DIFF 同步 TRUNC+DIFF 同步 TRUNC 同步 SNAP 同步 同步后的处理 源码分析 流程图 ...
- zookeeper集群部署监控与选举同步流程等工作原理
部署一个zookeeper集群,要多简单就能有多简单(下载压缩包,解压,修改配置文件zoo.cfg,执行启动脚本),但是想要真的把这套东西玩好了,还是需要费些功夫研究一番的.就跟自己搭建一个lnmp的 ...
- ogg oracle 测试kafka_基于OGG的Oracle与Hadoop集群/kafka准实时同步
Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段.近期有场景需要做Oracle到Hadoop体系的实时导入,这里以此案例做以介绍. Oracle作为商业化的数据库解 ...
最新文章
- LeetCode Intersection of Two Arrays
- JS获取URL中GET的参数
- 研究生报考苏州大学计算机科学与技术,【图片】18年苏州大学计算机872考研经验分享【苏州大学研究生吧】_百度贴吧...
- docker run与docker start的区别?
- QT的QGLFunctions类的使用
- Linux之Server环境配置
- SpringBootAdmin项目创建
- IETF:名词历史简介互联网精神的典范
- 强烈推荐 MicroSoft Office OneNote
- python怎么调用navicat_三十七、python操作mysql,和navicat
- Java 7 对ArrayList和HashMap的性能的提升
- 无需安装Oracle,用PL/SQL直接连接Oracle服务器
- ORA-01078和LRM-00109问题导致ORACLE启动失败解决方法
- 【编辑器】用CodeRunner打造VScode的C++开发环境
- 联想V480(扬天) EI Capitan 完美驱动教程
- 最全面贴片电阻知识,封装、尺寸、最大承受功率及选型统统包括-电子技术方案|电路图讲解
- SAP S/4 HANA Cloud自定义报表制作方法二
- 如何绘制日式厚涂插画_厚涂样式
- 浩辰CAD参考图剪辑编辑
- Thickbox使用中的一些问题
热门文章
- mysql 查询姓张或者姓王_mysql查询练习
- java atomicfloat_Java:有没有AtomicFloat或AtomicDouble?
- 电脑切换用户关闭计算机会怎样,电脑中的“睡眠、关机、注销、切换用户、待机、休眠”都什么意思?有什么区别...
- python 钉钉机器人自定义发送文件_Python自定义钉钉机器人发送自动化结果报告...
- 010_TreeMap键使用Comparator排序
- arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
- 本科是学计算机研究生学教育学,教育学研究生好考吗?
- echart 圆饼图 显示单位_玩转ECharts之实现“1/2圆的玫瑰图”
- Oralce数据库数据迁移到另一个数据
- java导出word表格_使用PowerDesigner16.5 逆向数据库 导出word文档