理解集羣、負載均衡

    在“高併發,海量數據,分佈式,NoSql,雲計算......”概念滿天飛的年代,相信不少朋友都聽說過甚至常與人提起“集羣,負載均衡”等,但不是所有人都有機會真正接觸到這些技術,也不是所有人都真正理解了這些“聽起來很牛的”技術名詞。下面簡單解釋一下吧。(從一個網站上面看到的,例子很有趣,分享給大家)


   集羣(Cluster)

   所謂集羣是指一組獨立的計算機系統構成的一個鬆耦合的多處理器系統,它們之間通過網絡實現進程間的通信。應    用程序可以通過網絡共享內存進行消息傳送,實現分佈式計算機。通俗一點來說,就是讓若干臺計算機聯合起來工    作(服務),可以是並行的,也可以是做備份。

   負載均衡(Load Balance)

   網絡的負載均衡是一種動態均衡技術,常見的實現方式是通過一些工具實時地分析數據包,掌握網絡中的數據流量    狀況,把任務合理均衡地分配出去。這種技術基於現有網絡結構,提供了一種擴展服務器帶寬和增加服務器吞吐量    的廉價有效的方法,加強了網絡數據處理能力,提高了網絡的靈活性和可用性。日常生活中到處都能看到“負載均    衡”,一個超市的收營員高峯期只能服務10位顧客,當做活動時有20位顧客需要服務的話可能就會排長隊,這樣購    物體驗將會很差(就像客戶抱怨系統/網站訪問太慢)。最簡單的辦法就是再招個營業員,重新開通一個出口。負載均    衡的核心就是“分攤壓力”。

   大規模集羣,通常具備以下一些特點:

   (1)高可靠性(HA)

   利用集羣管理軟件,當主服務器故障時,備份服務器能夠自動接管主服務器的工作,並及時切換過去,以實現對用    戶的不間斷服務。
   (2)高性能計算(HP)
   即充分利用集羣中的每一臺計算機的資源,實現複雜運算的並行處理,通常用於科學計算領域,比如基因分析、化    學分析等。
   (3)負載平衡(LB)
   即把負載壓力根據某種算法合理分配到集羣中的每一臺計算機上,以減輕主服務器的壓力,降低對主服務器的硬件    和軟件要求。

   當然,以上的這些特點,在某些適應場合下是需要同時具備的。常用的集羣又分以下幾種:
   load balance cluster(負載均衡集羣)
   一共有四兄弟開裁縫鋪,生意特別多,一個人做不下來,老是延誤工期,於是四個兄弟商量:老大接訂單, 三個兄      弟來幹活。 客戶多起來之後,老大根據一定的原則(policy) 根據三兄弟手上的工作量來分派新任務。

   High availability cluster(高可用集羣)
   兩兄弟開早餐鋪,生意不大,但是每天早上7點到9點之間客戶很多並且不能中斷。爲了保證2個小時內這個早餐鋪      能夠保證持續提供服務,兩兄弟商量幾個方法:

   方法一:平時老大做生意,老二這個時間段在家等候,一旦老大無法做生意了,老二就出來頂上,這個叫做              Active/Standby.(雙機熱備)
   方法二:平時老大做生意,老二這個時候就在旁邊幫工,一旦老大無法做生意,老二就馬上頂上,這個叫做              Active/Passive.(雙機雙工)

   方法三:平時老大賣包子,老二也在旁邊賣豆漿,老大有問題,老二就又賣包子,又賣豆漿,老二不行了,老大就    又賣包子,又賣豆漿.這個叫做Active/Active (dual Active)(雙機互備)

   (包子= application package, 互相照應叫做heartbeat, 頂替對方工作叫做 failover/takeover. 如果兩個兄弟突然      都瞎了聾了,不知道現在對方到底是否正在幹活,都認爲自己要頂對方的工作,這個叫做brain-split, 然後需要第三    者,比如他們的老爹來解決問題,這個叫做tier-breaker, 或者讓他們兩個的媳婦過來拉走其中一個,這個叫做          fency。)

   high computing clustering(高性能計算集羣)
   10個兄弟一起做手工傢俱生意,一個客戶來找他們的老爹要求做一套非常複雜的仿古傢俱,一個人做也可以做,不     過要做很久很久,爲了1個星期就交出這一套傢俱,10個兄弟決定一起做。
   老爹把這套傢俱的不同部分分開交給兒子們作,然後每個兒子都在做木製傢俱的加工,最後拼在一起叫貨。

   老爹是scheduler任務調度器,兒子們是compute node. 他們做的工作叫做作業。 


   (其實,還有一種,分佈式存儲相關的集羣,應用於超大規模網站,雲計算平臺等等。涉及點存儲方面的,這裏就不    介紹了)

   嚴格來講,這些已經超過了一般開發人員的知識範疇了,想真正理解和掌握這些並不太容易,有時候需要真正的實踐而不是閉門造車。從運維人員和系統架構師的角度來看,不僅需要具備豐富的操作系統配置和管理的經驗,更要具備網絡協議、存儲等相關的知識(懂算法和底層的就更完美了)。從開發人員和軟件架構師的角度來看,需要考慮的重點又不同了。當然,遠遠不止我所提到的這些。現在的Web應用一般都比較依賴於基礎架構,而越來越脫離了”純軟件架構“的本質。集羣不是萬能的,但有時候確實相當有用。由於項目和工作關係,我本人目前主要使用的是微軟的技術體系(當然,目前大都是基於windows平臺的)。有機會的話,我可以將自己在這方面的研究和實踐分享出來,更希望有興趣的朋友在一塊分享和交流。


   總結:

   分佈式是指將不同的業務分佈在不同的地方,集羣指的是將幾臺服務器集中在一起,實現同一業務。在現有網絡結構之上,負載均衡提供了一種廉價有效的方法擴展服務器帶寬和增加吞吐量,加強網絡數據處理能力,提高網絡的靈活性和可用性。你對三者瞭解了麼?



---------------------------------------------------------------------------------------------------------------------

另附一組簡短的解釋:


1. 集羣(Cluster):是一組獨立的計算機系統構成一個鬆耦合的多處理器系統,它們之間通過網絡實現進程間的通信。應用程序可以通過網絡共享內存進行消息傳送,實現分佈式計算機。

2. 負載均衡(Load Balance):先得從集羣講起,集羣就是一組連在一起的計算機,從外部看它是一個系統,各節點可以是不同的操作系統或不同硬件構成的計算機。如一個提供Web服務的集羣,對外界來看是一個大Web服務器。不過集羣的節點也可以單獨提供服務。

3. 特點:在現有網絡結構之上,負載均衡提供了一種廉價有效的方法擴展服務器帶寬和增加吞吐量,加強網絡數據處理能力,提高網絡的靈活性和可用性。集羣系統 (Cluster)主要解決下面幾個問題:高可靠性(HA):利用集羣管理軟件,當主服務器故障時,備份服務器能夠自動接管主服務器的工作,並及時切換過去,以實現對用戶的不間斷服務。高性能計算(HP):即充分利用集羣中的每一臺計算機的資源,實現複雜運算的並行處理,通常用於科學計算領域,比如基因分析,化學分析等。負載平衡:即把負載壓力根據某種算法合理分配到集羣中的每一臺計算機上,以減輕主服務器的壓力,降低對主服務器的硬件和軟件要求。



原文鏈接:http://blog.csdn.net/zhou2s_101216/article/details/51707270


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章