昨天发了个很什么的随笔,今天把与集群有关的东西搜了搜。整理一下。
什么是集群,集群的概念。下面这个BLOG讲的非常清楚:
http://blog.csdn.net/ESoftWind/archive/2006/10/19/1341089.aspxweb层次的集群方案讨论,看完javaeye相关的讨论,你会大概了解:
http://www.javaeye.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里面东西越少越好,越稳定越好。
谁有这方面的经验?
http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)
posted on 2007-02-12 23:18
ronghao 阅读(1293)
评论(0) 编辑 收藏 所属分类:
工作日志