在「高併發,海量數據,分佈式,NoSql,雲計算......」概念滿天飛的年代,相信很多朋友都據說過甚至常與人提起「集羣,負載均衡」等,但不是全部人都有機會真正接觸到這些技術,也不是全部人都真正理解了這些「聽起來很牛的」技術名詞。下面簡單解釋一下吧。
集羣(Cluster)node
所謂集羣是指一組獨立的計算機系統構成的一個鬆耦合的多處理器系統,它們之間經過網絡實現進程間的通訊。應用程序能夠經過網絡共享內存進行消息傳送,實現分佈式計算機。通俗一點來講,就是讓若干臺計算機聯合起來工做(服務),能夠是並行的,也能夠是作備份。算法
負載均衡(Load Balance)windows
網絡的負載均衡是一種動態均衡技術,常見的實現方式是經過一些工具實時地分析數據包,掌握網絡中的數據流量情況,把任務合理均衡地分配出去。這種技術基於現有網絡結構,提供了一種擴展服務器帶寬和增長服務器吞吐量的廉價有效的方法,增強了網絡數據處理能力,提升了網絡的靈活性和可用性。平常生活中處處都能看到「負載均衡」,一個超市的收營員高峯期只能服務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平臺的)。有機會的話,我能夠將本身在這方面的研究和實踐分享出來,更但願有興趣的朋友在一塊分享和交流。架構