当前位置: 代码迷 >> Web前端 >> Terrocatta Web Sessions原理(转从论坛)
  详细解决方案

Terrocatta Web Sessions原理(转从论坛)

热度:341   发布时间:2012-07-01 13:15:00.0
Terrocatta Web Sessions原理(转自论坛)

http://forums.terracotta.org/forums/posts/list/2904.page

?

由于Terracotta服务器对所有集群中共享的数据和客户端程序都作记录和管理,在客户端对任何一个 共享数据的访问都最终变成对服务器上的数据的请求(当然里面有复杂的缓存机制,这里为简单起见,暂时不考虑),服务器也就记录了哪一个客户端在使用哪一个 数据对象的信息。

当一个节点修改一个共享数据的时候,Terracotta服务器就反查该对象被哪一些客户端使用了,然后把修改的数据通知给那些客户端。这样做不仅保证了 数据的全局一致性,当其他节点访问这个数据的时候,他们只需要在本地内存访问(因为数据被服务器push过来了),效率也很高。

? 如果你使用Terracotta Session集群,我们的确建议您在Web服务器前端安装负载均衡器,通过Sticky Session来分发http请求。这样相同用户的请求总被发送到相同的Web服务器上。他的session也就只保存在这一台Web服务器和 Terracotta服务器上。这样做的好处是效率高。由于任何一个session只在一个web服务器上使用,对session的修改就不会引起该数据 向其他节点的发送。
但是,当该节点宕机的时候,负载均衡器会把该节点原来处理的用户的请求转发到其他节点。当其他节点需要获取这些用户的session的时 候,Terracotta服务器会从服务器上把这些数据转过来,这样session的数据不会因为web服务器宕机儿丢失,因而起到了灾难回复的作用。经 过一段时间的使用,整个集群又进入一个稳定均衡的状态。

  相关解决方案