关于集群的补课 (转)
http://www.blogjava.net/RongHao/archive/2007/02/12/99560.html
昨天发了个很什么的随笔,今天把与集群有关的东西搜了搜。整理一下。 什么是集群,集群的概念。下面这个BLOG讲的非常清楚:http://blog.csdn.net/ESoftWind/archive/2006/10/19/1341089.aspx web层次的集群方案讨论,看完javaeye相关的讨论,你会大概了解:http://www.iteye.com/topic/20298 注意里面robbin的无共享架构(Share Nothing Architecture)SNA。web层次的集群主要技术就是:负载均衡和http session的失败转移。 负载均衡不再多说,焦点在于http session的失败转移。各个节点的http session复制会极大的影响性能。如何避免,robbin提出保持每个节点的无状态性,不再使用Session来保持全局状态。用户标示从cookie取得,假设不使用分布式Cache,session直接放在数据库中。他推荐了memcached作为分布式Cache,这样在从数据库读取session时中间又隔了一层Cache来提高性能。大致的方法是这样:用户登陆的时候给他一个cookie,存放userId,同时给这个用户分配一个Session,存放user对象,然后把这个session保存到数据库和分布式 Cache里。黏性会话。写一个filter或者 webwork拦截器对用户请求进行拦截,如果他有cookie,但是session里面没有user对象,说明前一个节点down掉了,就根据 cookie里面的userId查数据库或者是分布式 Cache获得先前保存的session,把原先的session复制到他的新session里面。这样各个节点间的 session就不用复制,因为 session是没有状态的。我们的程序对使用session不受影响,只是session里的对象要可序列化,当改变session里的对象时需要同步到cache和数据库。当然,效率的原因,session里面东西越少越好,越稳定越好。 谁有这方面的经验?
------------------------------------------------------继续收集-----------------
wiki
http://en.wikipedia.org/wiki/Shared_nothing_architecture
高扩展WEB应用HTTP SESSION共享方案
http://blog168.chinaunix.net/space.php?uid=15114047&do=blog&cuid=2418373
一个现成的基于修改 tomcat session 存储至 memcache 的成熟开源项目
http://code.google.com/p/memcached-session-manager/
相关资源:基于无共享的数据库集群