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服务器宕机儿丢失,因而起到了灾难回复的作用。经
过一段时间的使用,整个集群又进入一个稳定均衡的状态。