码迷,mamicode.com
首页 > 其他好文 > 详细

使用RabbitMQ管理Tomcat Sessions

时间:2014-09-09 10:35:18      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   io   使用   ar   strong   for   数据   

云架构的流行,使得水平伸缩成为王者( horizontal scalability is king),而传统的Tomcat集群是通过广播集群,

也就是让一台机器上的Session广播到其他机器上,这样的坏处就是大量Session中数据在服务器之间不停被复制拷贝,

增加服务器负担,服务器越多,复制越厉害,Tomcat的服务器也就不能无限任意增加,水平伸缩很差。

该文引入RabbitMQ消息系统,用来控制tomcat的Session无限复制,

也就是设计一种Session管理器:使得任何一个用户请求都可以被随机分配到任何一台tomcat服务器上。

作者对Session管理器要求是:
1.轻量,Terracotta虽然号称可以帮助session复制,可惜重量。作者没有选择。
2.Reliable 可靠
3.Scalable 可伸缩
4.No single point of failure 无单点风险
5.Asynchronous (for speed and efficiency) 异步
6.Easy to configure易于配置
7.Zero (or nearly so) maintenance 零维护。

Session管理器的工作原理如下:当一个tomcat服务器被要求加载用户的session,

它首先将session的ID传到云存储中CloudStore(使用 Redis 或其他 NoSQL 数据库),

检查内部的session ID列表. 如果发现存在这个ID, 就知道这是一个已经激活的session,

然后检查内部Map看看其是否已经存在当前服务器本地了,

如果没有,发出"load"消息给相应队列queue. 当前用户请求的线程就堵塞等待Session在本地加载复制。

使用RabbitMQ管理Tomcat Sessions

标签:style   color   os   io   使用   ar   strong   for   数据   

原文地址:http://www.cnblogs.com/muzhongjiang/p/3961205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!