原文地址http://www.theserverside.com/articles/article.tss?l=J2EEClustering .
此文章寫的非常通俗易懂,用詞簡單,建議閱讀一下,就是有點長.
相關術語
Scalability
可度量
High Availability
高可用性
Load balancing
負載均衡
Fault Tolerance
錯誤冗余
Failover
崩潰挽回?
Idempotent methods
等冪函數? 意思就是函數本身也是從集群中獲取一個節點來執行的函數...(咳,這么別扭)
HTTPSession 集群實現
- Database persistence approach 數據庫保存
- Memory replication approach 內存保存
- Tomcat’s approach :Multi-servers replication 多服務器復制:互相復制
- Weblogic, Jboss and WebSphere’s approach-- paired servers replication 結對復制
- IBM’s Approach -- centralized state server 中心服務器
- Sun’s approach – special Database 特殊數據庫復制(內存)
JNDI 集群實現
- Shared global JNDI Tree 共享JNDI樹
- Independent JNDI 獨立的JNDI
- Centralized JNDI 中心服務器JNDI
有些Application支持多個地址用逗號分割
EJB集群實現
(略過...)
JMS和數據庫連接的集群支持
很多不支持...
Myths about J2EE clustering J2EE集群神話
- Failover can avoid errors completely. -- Negative FailOver能完全避免錯誤 --并非如此
執行到一半發生錯誤是很難避免的,除非調用的是"Idempotent methods"
不過我覺得可以不考慮這個問題?
- Stand-alone applications can be transmit transparently to a cluster structure. -- Negative! 單機程序能夠透明地發布到集群構架上 --并非如此
- Http Session 限制
保存在session里面的數據必須支持序列化
避免保存大的對象
內存復制集群的必須防止交叉引用
setAttribute方法的調用
- Cache
很多時候緩存不起效果
- Static variables
類似單態的使用會造成問題,如果沒有考慮集群的話
- External resource
外部資源例如上傳文件如果保存在某個服務器的磁盤上會有問題.這時候要保存在數據庫里或者使用磁盤陣列等解決方式.
- Special Services
例如定時的服務,會造成每臺服務器都去調用的可能,所以要考慮.
- Distributed structure is more flexible than collocated one? -- Maybe Not! 分布式結構比集中配置靈活 --可能不是
分析了Web容器和EJB容器的關系.
Conclusion 結論
集群并不是那么簡單,從項目的開始就要考慮相關問題.