关闭

集群中几种session同步解决方案的比较

标签: 分布式
1554人阅读 评论(0) 收藏 举报
分类:

在集群中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本身进行数据复制性能如何?

参考资料:

JVM-level clustering

Terracotta集群Tomcat实现Session同步

使用Terracotta和Tomcat建立ACTIVE-PASSIVE模式的集群

用Spring Web Flow和Terracotta搭建Web应用

Terracotta实战示例——集群RIFE

Terracotta近况:转向开源,接受度,Hibernate支持

0
0
查看评论

关于 tomcat 集群中 session 共享的三种方法

前两种均需要使用 memcached 或redis 存储 session ,最后一种使用 terracotta 服务器共享。 建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富, 不只是缓存 session,还可以做其他用途,一举几得啊。 ...
  • QH_JAVA
  • QH_JAVA
  • 2015-05-27 22:39
  • 59996

集群间Session共享问题解决方案

1.背景 随着互联网的日益壮大,网站的pv和uv成线性或者指数倍的增加.单服务器单数据库早已经不能满足实际需求。目前大多数大型网站的服务器都采用了分布式服务集群的部署方式,所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。但是在服务集群中,session共享往往是一个比较头疼的...
  • lingzhm
  • lingzhm
  • 2015-07-20 10:14
  • 10113

OSGi:生命周期层

前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的。生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或者两者的结合),并且给了应用本身很大的动态性。  1 什么是生命周期管理 一般来说,程序(或者程序...
  • longteng2011
  • longteng2011
  • 2013-06-21 16:30
  • 756

kylin使用中曾遇到的问题整理

kylin使用中曾遇到的问题整理
  • seashouwang
  • seashouwang
  • 2017-09-06 15:37
  • 2423

Kylin 的优化以及使用总结

转:http://www.cnblogs.com/hark0623/p/5521006.html Apache Kylin对传统MOLAP的改进   计算Cube的存储代价以及计算代价都是比较大的, 传统OLAP的维度爆炸的问题Kylin也一样会遇到。 Kylin提供...
  • weixin_36630761
  • weixin_36630761
  • 2017-10-11 18:18
  • 297

如何实现集群多个节点之间的数据同步

集群中节点的配置文件或脚本文件发生改变后,如何将数据同步到其他节点?
  • weiyuefei
  • weiyuefei
  • 2016-08-29 15:42
  • 4091

集群session一致性和同步问题

一. 何为session 用户使用网站的服务,基本上需要浏览器和web服务器进行多次交互,web服务器如何知道哪些请求是来自哪个会话的? 具体方式为:在会话开始时,分配一个唯一的会话标识(sessionId),通过cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会...
  • kk936321732
  • kk936321732
  • 2015-05-04 18:06
  • 3233

集群中几种session同步解决方案的比较

在集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。 1. 客户端cookie加密    这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用...
  • snakeqi
  • snakeqi
  • 2007-11-09 14:53
  • 1393

web集群中常用的session同步解决方案及对比

随着网站的功能越来越多,用户量越来越庞大,单节点模式已经严重不能支撑整个系统的正常运作,轻则用户页面访问时间越来越慢,重则就会导致整个系统瘫痪。这时候 就需要优化或调整目前的架构,大部分人就会采用各种负载均衡软件例如nginx、hproxy、LVS等,也有的采用分布式的方式把系统根据功能拆分成很多系...
  • Mr_Smile2014
  • Mr_Smile2014
  • 2015-12-07 22:17
  • 4449

对于 分布式下session同步问题 解决方案的思考

List: 1.前言 2.解决方案 3.总结思考 ……1.前言……        随着web访问量的日渐增加,高并发的问题出现。大型网站web架构都使用集群或分布式来提高网站的服务效率。之前一个用户访问商城网页,如果使用Ngi...
  • u012904383
  • u012904383
  • 2017-03-19 11:47
  • 952
    个人资料
    • 访问:557005次
    • 积分:6394
    • 等级:
    • 排名:第4534名
    • 原创:130篇
    • 转载:33篇
    • 译文:22篇
    • 评论:159条
    统计
    Flag Counter
    小鼠
    个人简介
    Java工程师,参与过网上银行、短信平台、渠道整合平台等大型Java EE项目开发,2016年与清华大学出版社合作编写并出版《AngularJS入门与进阶》一书。

    图书封面:


    图书简介
    目前淘宝、京东等电商网站有售。
    点我购书
    联系方式: jiangrongbo@gmail.com
    博客专栏
    最新评论