J2EE叢集原理
http://www.theserverside.com/articles/article.tss?l=J2EEClustering
TSS上這篇來自Wang yu的文章,文章闡述了負載平衡和failover的意思,比較了Web層Tomcat的動態負載平衡和HttpSession Failover原理,由於Tomcat 5採取的是多伺服器記憶體複製策略實現的HttpSession Failover,當一個伺服器中的session改變,Tomcat要通知所有的伺服器,Tomcat作為Web伺服器主要負責客戶端連線,當訪問量增加時,Tomcat的這種Session複製策略無疑是雪上加霜,因此沒有太大的實用價值。
因為Tomcat是隻支援Web應用系統,所以採取struts+hibernate或tapestry+hibernate(或者中間加上Spring/Jdon)都屬於Web應用系統,他們都是單機Stand-alone系統,利用上述Tomcat的負載平衡只能勉強支撐兩三臺伺服器,而且隨著訪問量增加,Tomcat等Web伺服器將趨於緩慢,從這篇文章觀點來看,Web應用程式在效能的伸縮性不太高。
下面討論的都是因為使用EJB後而使得你的應用程式自動獲得的能力:
以Weblogic JBoss為主的採取的paired servers 對伺服器複製策略則要提高效能很多,但是對load balancer演算法要求高,有些普通的load balancer不一定符合要求。
IBM採取的是中央狀態伺服器策略;而SUN則採取的是特殊資料庫複製HADB策略。
該文最後分析了JNDI EJB和JMS的叢集原理,實際也是闡述了從效能叢集原理上說,為什麼會誕生EJB等複雜技術以及對於一些大型應用為什麼需要使用EJB的原因所在。
文章還否定了這樣的觀點:單機系統幾乎可以透明的遷移到叢集結構。
在遷移時,需要考慮很多問題,如狀態/快取 httpsession以及特殊的服務等。
另外觀點:分散式結構一定比配置定製結構可靠嗎?不一定。
在使用EJB時有人喜歡什麼都實現分散式,其實這是不必的,一般可讓Web應用程式首先選擇同臺伺服器中的EJB服務,這叫配置結構。
作者的結論是:
Clustering is different from the stand-alone environment
叢集架構是完全不同於單機結構的。在建立一個大型的可伸縮系統之前,我們必須對不同的J2EE伺服器產品實現叢集有不同的瞭解和掌握,選擇合適的第三方框架保證確認他們也是支援叢集環境的(如Jdon框架),合適的架構設計將從叢集中得益,而不是將苦難留給你的企業及其其他後來的同事(國人經常是在架構設計時,喜歡方便自己,害了系統和他人)。
一直以來,所謂輕量的架構系統受到狂熱分子的鼓吹和極端追從,甚至提出否定EJB的觀點(如Spring作者提出的without EJB),這些禍患人心的觀點不能說是完全錯誤的,但是至少是極端,屬於一葉遮目,看待EJB不能只從OO設計角度,還要從實際應用效能上考慮,就象看到SOA結構一樣,設計和效能是實際架構選擇的兩個基本點,善於平衡才是我們實際架構選擇的主要宗旨。
相關文章
- redis叢集原理Redis
- Redis 叢集伸縮原理Redis
- Redis 叢集原理與使用Redis
- redis叢集之主從複製叢集的原理和部署Redis
- 請教banq大哥j2ee叢集開發
- redis叢集之分片叢集的原理和常用代理環境部署Redis
- redis原理及叢集主從配置Redis
- Docker 容器搭建及 Redis 叢集原理DockerRedis
- Elasticsearch(二)--叢集原理及優化Elasticsearch優化
- Redis 叢集實現原理探討Redis
- Quartz叢集原理及配置應用quartz
- redis通訊與高可用叢集原理Redis
- RabbitMQ和Kafka的高可用叢集原理MQKafka
- Zookeeper客戶端使用與叢集原理客戶端
- Zookeeper叢集 + Kafka叢集Kafka
- Nacos配置中心叢集原理及原始碼分析原始碼
- Keepalived高可用叢集工作原理示意圖
- 搭建zookeeper叢集(偽叢集)
- web叢集與ejb叢集Web
- redis叢集資料儲存和獲取原理Redis
- zookeeper叢集及kafka叢集搭建Kafka
- redis偽叢集配置Cluster叢集模式Redis模式
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- Redis叢集 - cluster叢集、資料分片Redis
- Kubernetes叢集排程器原理剖析及思考
- 雙機備份和叢集的原理與比較
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Zookeeper叢集 + Kafka叢集 + KafkaOffsetMonitor 監控薦Kafka
- mongodb副本叢集和分片叢集佈署MongoDB
- EJB叢集和Webservice叢集的討論Web
- rabbitmq 原理、叢集、基本運維操作、常見故障處理MQ運維
- RabbitMQ叢集MQ
- redis 叢集Redis
- 叢集搭建
- SolrCloud叢集SolrCloud
- redis叢集Redis
- ceph叢集
- 【Redis叢集原理專題】分析一下相關的Redis叢集模式下的腦裂問題!Redis模式