使用RabbitMQ使得Tomcat Sessions 变得更加云化

10-06-22 banq
Clustering Cloud-friendly Tomcat Sessions with RabbitMQ: Part I | TomcatExpert

云架构的流行,使得水平伸缩成为王者( 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在本地加载复制。

[该贴被banq于2010-06-22 10:55修改过]

                   

6
amao
2010-06-22 13:31
who has the most update-to-date session copy, then?

arden
2010-06-24 00:04
没看明白~~

kof99
2010-06-24 11:03
单点风险是什么?

猜你喜欢
2Go 1 2 下一页