科學群集 、高性能集群(High performance cluster,HPC)
它是利用一個集群中的多台機器共同完成同一件任務,使得完成任務的速度和可靠性都遠遠高於單機運行的效果。彌補了單機性能上的不足。該集群在天氣預報、環境監控等數據量大,計算復雜的環境中應用比較多;
通常,這種集群涉及為群集開發並行編程應用程序,以解決復雜的科學問題。它不使用專門的超級並行計算機,而是用商業系統(如通過高速連接來鏈接的一組單處理器或雙處理器PC),並且在公共消息傳遞層上進行通信以運行並行應用程序。我們常常聽說一種便宜的 Linux 超級計算機問世了,大多數情況就是指這種集群系統,其處理能力與真的超級計算機相當,而其價格與上百萬美元的專用超級計算機相比是相當的便宜。
負載均衡集群(Load balance cluster, LBC)
它是利用一個集群中的多台單機,完成許多並行的小的工作。一般情況下,如果一個應用使用的人多了,那么用戶請求的相應時間就會增大,機器的性能也會受到影響,如果使用負載均衡集群,那么集群中任意一台機器都能相應用戶的請求,這樣集群就會在用戶發出服務請求之后,選擇當時負載最小,能夠提供最好的服務的這台機器來接受請求並相應,這樣就可用用集群來增加系統的可用性和穩定性。這類集群在網站中使用較多;
負載均衡群集為企業需求提供了更為實用的系統。如其名稱,這種系統使負載可以在多台計算機中盡可能平均地分攤處理。負載可以是需要均衡的應用程序處理負載或網絡流量負載。在系統中,每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。對於網絡流量也是如此。
高可用性集群(High availability cluster,HAC)
它是利用集群中系統 的冗余,當系統中某台機器發生損壞的時候,其他后備的機器可以迅速的接替它來啟動服務,等待故障機的維修和返回。最大限度的保證集群中服務的可用性。這類系統一般在銀行,電信服務這類對系統可靠性有高的要求的領域有着廣泛的應用。
高可用性群集的出現是為了使群集的整體服務盡可能可用。如果高可用性群集中的主節點發生了故障,那么這段時間內將由次節點代替它。次節點通常是主節點的鏡像,所以當它代替主節點時,它可以完全接管其身份,對用戶沒有任何影響。
在群集的這三種基本類型之間,經常會發生交叉、混合。比如:在高可用性的群集系統中也可以在其節點之間實現負載均衡,同時仍然維持着其高可用性。
2、負載均衡系統: 負載均衡又有DNS負載均衡(比較常用)、IP負載均衡、反向代理負載均衡等,也就是在集群中有服務器A、B、C,它們都是互不影響,互不相干的,任何一台的機器宕了,都不會影響其他機器的運行,當用戶來一個請求,有負載均衡器的算法決定由哪台機器來處理,假如你的算法是采用round算法,有用戶a、b、c,那么分別由服務器A、B、C來處理;
3、分布式是指將不同的業務分布在不同的地方。
而集群指的是將幾台服務器集中在一起,實現同一業務。
分布式中的每一個節點,都可以做集群。
而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應服務器,后面幾台服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪台服務器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較松散,不像集群,有一個組織性,一台服務器垮了,其它的服務器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。
1. 集群(Cluster):是一組獨立的計算機系統構成一個松耦合的多處理器系統,它們之間通過網絡實現進程間的通信。應用程序可以通過網絡共享內存進行消息傳送,實現分布式計算機。
2. 負載均衡(Load Balance):先得從集群講起,集群就是一組連在一起的計算機,從外部看它是一個系統,各節點可以是不同的操作系統或不同硬件構成的計算機。如一個提 供Web服務的集群,對外界來看是一個大Web服務器。不過集群的節點也可以單獨提供服務。
3. 特點:在現有網絡結構之上,負載均衡提供了一種廉價有效的方法擴展服務器帶寬和增加吞吐量,加強網絡數據處理能力,提高網絡的靈活性和可用性。集群系統 (Cluster)主要解決下面幾個問題:高可靠性(HA):利用集群管理軟件,當主服務器故障時,備份服務器能夠自動接管主服務器的工作,並及時切換過 去,以實現對用戶的不間斷服務。高性能計算(HP):即充分利用集群中的每一台計算機的資源,實現復雜運算的並行處理,通常用於科學計算領域,比如基因分 析,化學分析等。負載平衡:即把負載壓力根據某種算法合理分配到集群中的每一台計算機上,以減輕主服務器的壓力,降低對主服務器的硬件和軟件要求。
在IDF05(Intel Developer Forum 2005)上,Intel首席執行官Craig Barrett就取消4GHz芯片計划一事,半開玩笑當眾單膝下跪致歉,給廣大軟件開發者一個明顯的信號,單純依靠垂直提升硬件性能來提高系統性能的時代已結束,分布式開發的時代實際上早已悄悄地成為了時代的主流,吵得很熱的雲計算實際上只是包裝在分布式之外的商業概念,很多開發者(包括我)都想加入研究雲計算這個潮流,在google上通過“雲計算”這個關鍵詞來查詢資料,查到的都是些概念性或商業性的宣傳資料,其實真正需要深入的還是那個早以被人熟知的概念------分布式。
分布式可繁也可以簡,最簡單的分布式就是大家最常用的,在負載均衡服務器后加一堆web服務器,然后在上面搞一個緩存服務器來保存臨時狀態,后面共享一個數據庫,其實很多號稱分布式專家的人也就停留於此,大致結構如下圖所示:
這種環境下真正進行分布式的只是web server而已,並且web server之間沒有任何聯系,所以結構和實現都非常簡單。
有些情況下,對分布式的需求就沒這么簡單,在每個環節上都有分布式的需求,比如Load Balance、DB、Cache和文件等等,並且當分布式節點之間有關聯時,還得考慮之間的通訊,另外,節點非常多的時候,得有監控和管理來支撐。這樣看起來,分布式是一個非常龐大的體系,只不過你可以根據具體需求進行適當地裁剪。按照最完備的分布式體系來看,可以由以下模塊組成:
分布式任務處理服務:負責具體的業務邏輯處理
分布式節點注冊和查詢:負責管理所有分布式節點的命名和物理信息的注冊與查詢,是節點之間聯系的橋梁
分布式DB:分布式結構化數據存取
分布式Cache:分布式緩存數據(非持久化)存取
分布式文件:分布式文件存取
網絡通信:節點之間的網絡數據通信
監控管理:搜集、監控和診斷所有節點運行狀態
分布式編程語言:用於分布式環境下的專有編程語言,比如Elang、Scala
分布式算法:為解決分布式環境下一些特有問題的算法,比如解決一致性問題的Paxos算法
因此,若要深入研究雲計算和分布式,就得深入研究以上領域,而這些領域每一塊的水都很深,都需要很底層的知識和技術來支撐,所以說,對於想提升技術的開發者來說,以分布式來作為切入點是非常好的,可以以此為線索,探索計算機世界的各個角落。
只要是一堆機器,就可以叫集群,他們是不是一起協作着干活,這個誰也不知道;一個程序或系統,只要運行在不同的機器上,就可以叫分布式,嗯,C/S架構也可以叫分布式。
集群一般是物理集中、統一管理的,而分布式系統則不強調這一點。
所以,集群可能運行着一個或多個分布式系統,也可能根本沒有運行分布式系統;分布式系統可能運行在一個集群上,也可能運行在不屬於一個集群的多台(2台也算多台)機器上。
集群就是邏輯上處理同一任務的機器集合,可以屬於同一機房,也可分屬不同的機房。分布式這個概念可以運行在某個集群里面,某個集群也可作為分布式概念的一個節點。
一句話,就是:“分頭做事”與“一堆人”的區別
分布式中的每一個節點,都可以做集群。 而集群並不一定就是分布式的。
舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應服務器,后面幾台服務器完成同一業務,如果有業務訪問的時候,響應服務器看哪台服務器的負載不是很重,就將給哪一台去完成。
而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較松散,不像集群,有一個組織性,一台服務器垮了,其它的服務器可以頂上來。
分布式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。
2:簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。
例如:
如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一台服務器上執行該任務需10小時。
采用分布式方案,提供10台服務器,每台服務器只負責處理一個子任務,不考慮子任務間的依賴關系,執行完這個任務只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Reduce分布式計算模型)
而采用集群方案,同樣提供10台服務器,每台服務器都能獨立處理這個任務。假設有10個任務同時到達,10個服務器將同時工作,1小時后,10個任務同時完成,這樣,整身來看,還是1小時內完成一個任務!
集群一般被分為三種類型,高可用集群如RHCS、LifeKeeper等,負載均衡集群如LVS等、高性能運算集群;分布式應該是高性能運算集群范疇內。
集群:同一個業務部署在多台機器上,提高系統可用性