昨天發了個很什么的隨筆,今天把與集群有關的東西搜了搜。整理一下。
什么是集群,集群的概念。下面這個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.aygfsteel.com/ronghao 榮浩原創,轉載請注明出處:)
posted on 2007-02-12 23:18
ronghao 閱讀(1302)
評論(0) 編輯 收藏 所屬分類:
工作日志