一、為什么要集群裳擎?
1.JavaEE項目拓巧,如果部署在一臺Tomcat上斯碌,所有的請求,都由這一臺服務器處理肛度,存在很大風險:
A:并發(fā)處理能力有限(一般單臺服務器處理的并發(fā)量為250左右傻唾,超過250,可能會出現(xiàn)數(shù)據(jù)丟失承耿,鏈接不穩(wěn)定的情況)冠骄。因為單服務器的性能有限制。所以單臺Tomcat的最大連接數(shù)有限制加袋,
B:容錯率低凛辣,一旦服務器故障职烧,整個服務就無法訪問了扁誓。
eBay于 1999年6月停機22小時的事故,中斷了約230萬的拍賣阳堕,使eBay的股票下降了9.2個百分點跋理。
C:單臺服務器計算能力低蔑匣,無法完成復雜的海量數(shù)據(jù)計算力奋。
提高CPU主頻和總線帶寬是最初提供計算機性能的主要手段。但是這一手段對系統(tǒng)性能的提供是有限的酥艳。接著人們通過增加CPU個數(shù)和內存容量來提高性能壹堰,于是出現(xiàn)了向量機拭卿,對稱多處理機(SMP)等。但是當CPU的個數(shù)超過某一閾值贱纠,這些多處理機系統(tǒng)的可擴展性就變的極差峻厚。主要瓶頸在于CPU訪問內存的帶寬并不能隨著CPU個數(shù)的增加而有效增長。與SMP相反谆焊,集群系統(tǒng)的性能隨著CPU個數(shù)的增加幾乎是線性變化的惠桃。
二、什么是集群
集群是是指將多臺服務器集中在一起辖试,每臺服務器都實現(xiàn)相同的業(yè)務辜王,做相同的事情。但是每臺服務器并不是缺一不可罐孝,存在的作用主要是緩解并發(fā)壓力和單點故障轉移問題呐馆。可以利用一些廉價的符合工業(yè)標準的硬件構造高性能的系統(tǒng)莲兢。實現(xiàn):高擴展汹来、高性能续膳、低成本、高可用收班!
2.1伸縮性(Scalability)
在一些大的系統(tǒng)中坟岔,預測最終用戶的數(shù)量和行為是非常困難的,伸縮性是指系統(tǒng)適應不斷增長的用戶數(shù)的能力闺阱。提高這種并發(fā)會話能力的一種最直觀的方式就增加資源(CPU炮车,內存,硬盤等)酣溃,集群是解決這個問題的另一種方式瘦穆,它允許一組服務器組在一起,像單個服務器一樣分擔處理一個繁重的任務赊豌,我們只需要將新的服務器加入集群中即可扛或,對于客戶來看,服務無論從連續(xù)性還是性能上都幾乎沒有變化碘饼,好像系統(tǒng)在不知不覺中完成了升級
2.2高可用性(High availability)
單一服務器的解決方案并不是一個健壯方式熙兔,因為容易出現(xiàn)單點失效。像銀行艾恼、賬單處理這樣一些關鍵的應用程序是不能容忍哪怕是幾分鐘的死機住涉。它們需要這樣一些服務在任何時間都可以訪問并在可預期的合理的時間周期內有響應。高可用性集群的出現(xiàn)是為了使集群的整體服務盡可能可用钠绍,以便考慮計算硬件和軟件的易錯性舆声。如果高可用性集群中的主節(jié)點發(fā)生了故障,那么這段時間內將由次節(jié)點代替它柳爽。次節(jié)點通常是主節(jié)點的鏡像媳握,所以當它代替主節(jié)點時,它可以完全接管其身份磷脯,并且因此使系統(tǒng)環(huán)境對于用戶是一致的蛾找。
2.3負載均衡(Load balancing)
負載均衡集群為企業(yè)需求提供了更實用的系統(tǒng)。如名稱所暗示的赵誓,該系統(tǒng)使負載可以在計算機集群中盡可能平均地分攤處理打毛。該負載可能是需要均衡的應用程序處理負載或網(wǎng)絡流量負載。這樣的系統(tǒng)非常適合于運行同一組應用程序的大量用戶俩功。每個節(jié)點都可以處理一部分負載隘冲,并且可以在節(jié)點之間動態(tài)分配負載,以實現(xiàn)平衡绑雄。
2.4高性能 (High Performance )
通常,第一種涉及為集群開發(fā)并行編程應用程序奥邮,以解決復雜的科學問題万牺。這是并行計算的基礎罗珍,盡管它不使用專門的并行超級計算機,這種超級計算機內部由十至上萬個獨立處理器組成脚粟。但它卻使用商業(yè)系統(tǒng)覆旱,如通過高速連接來鏈接的一組單處理器或雙處理器 PC,并且在公共消息傳遞層上進行通信以運行并行應用程序核无。因此扣唱,您會常常聽說又有一種便宜的 Linux 超級計算機問世了。但它實際是一個計算機集群团南,其處理能力與真的超級計算機相等
三噪沙、為什么要進行分布式
傳統(tǒng)的項目中,我們將各個模塊放在一個系統(tǒng)中吐根,系統(tǒng)過于龐大正歼,開發(fā)維護困難,各個功能模塊之間的耦合度增高拷橘,無法針對單個模塊進行優(yōu)化局义,也無法進行水平擴展。
四冗疮、什么事分布式
分布式是指將多臺服務器集中在一起萄唇,每臺服務器都實現(xiàn)總體中的不同業(yè)務,做不同的事情术幔。并且每臺服務器都缺一不可另萤,如果某臺服務器故障,則網(wǎng)站部分功能缺失特愿,或導致整體無法運行仲墨。存在的主要作用是大幅度的提高效率,緩解服務器的訪問和存儲壓力揍障。
注意:該圖中最大特點是:每個Web服務器(Tomcat)程序都負責一個網(wǎng)站中不同的功能目养,缺一不可。如果某臺服務器故障毒嫡,則對應的網(wǎng)站功能缺失癌蚁,也可以導致其依賴功能甚至全部功能都不能夠使用。
五兜畸、分布式和集群的關系努释。
在開發(fā)中我們可以將分布式和集群分開嗎?
針對這個問題咬摇,我們可以根據(jù)分布式的介紹看出伐蒂,其主要的功能是用了將我們的系統(tǒng)模塊化,將系統(tǒng)進行解耦的肛鹏,方便我們的維護和開發(fā)的逸邦,但是其并不能解決我們的并發(fā)問題恩沛,也無法保證我們的系統(tǒng)在服務器宕機后的正常運轉。
而集群呢缕减?其恰好彌補了分布式的缺陷雷客,集群,就是多個服務器處理相同的業(yè)務桥狡,這在一方面可以解決或者說改善我們系統(tǒng)的并發(fā)問題搅裙,一方面可以解決我們服務器如果出現(xiàn)一定數(shù)量的宕機后,系統(tǒng)仍然可以正常運轉裹芝。
因此我說部逮,分布式和集群式一堆好基友,誰也離不開誰局雄。甥啄。。炬搭。