分布式與集群的區(qū)別
一、是什么
一般簡單說,分布式是以縮短單個任務(wù)的執(zhí)行時間來提升效率的,而集群則是通過提高單位時間內(nèi)執(zhí)行的任務(wù)數(shù)來提升效率。
例如:
如果一個任務(wù)由10個子任務(wù)組成,每個子任務(wù)單獨(dú)執(zhí)行需1小時,則在一臺服務(wù)器上執(zhí)行改任務(wù)需10小時。采用分布式方案,提供10臺服務(wù)器,每臺服務(wù)器只負(fù)責(zé)處理一個子任務(wù),不考慮子任務(wù)間的依賴關(guān)系,執(zhí)行完這個任務(wù)只需一個小時。(這種工作模式的一個典型代表就是Hadoop的Map/Reduce分布式計算模型)而采用集群方案,同樣提供10臺服務(wù)器,每臺服務(wù)器都能獨(dú)立處理這個任務(wù)。假設(shè)有10個任務(wù)同時到達(dá),10個服務(wù)器將同時工作,10小后,10個任務(wù)同時完成,這樣,整身來看,還是1小時內(nèi)完成一個任務(wù)!
二、集群概念
- 兩大關(guān)鍵特性
集群是一組協(xié)同工作的服務(wù)實(shí)體,用以提供比單一服務(wù)實(shí)體更具擴(kuò)展性與可用性的服務(wù)平臺。在客戶端看來,一個集群就象是一個服務(wù)實(shí)體,但事實(shí)上集群由一組服務(wù)實(shí)體組成。與單一服務(wù)實(shí)體相比較,集群提供了以下兩個關(guān)鍵特性:
- ?可擴(kuò)展性--集群的性能不限于單一的服務(wù)實(shí)體,新的服務(wù)實(shí)體可以動態(tài)地加入到集群,從而增強(qiáng)集群的性能。
- ?高可用性--集群通過服務(wù)實(shí)體冗余使客戶端免于輕易遇到out of service的警告。在集群中,同樣的服務(wù)可以由多個服務(wù)實(shí)體提供。如果一個服務(wù)實(shí)體失敗了,另一個服務(wù)實(shí)體會接管失敗的服務(wù)實(shí)體。集群提供的從一個出 錯的服務(wù)實(shí)體恢復(fù)到另一個服務(wù)實(shí)體的功能增強(qiáng)了應(yīng)用的可用性。
- 兩大能力
為了具有可擴(kuò)展性和高可用性特點(diǎn),集群的必須具備以下兩大能力:
- ?負(fù)載均衡--負(fù)載均衡能把任務(wù)比較均衡地分布到集群環(huán)境下的計算和網(wǎng)絡(luò)資源。
- ?錯誤恢復(fù)--由于某種原因,執(zhí)行某個任務(wù)的資源出現(xiàn)故障,另一服務(wù)實(shí)體中執(zhí)行同一任務(wù)的資源接著完成任務(wù)。這種由于一個實(shí)體中的資源不能工作,另一個實(shí)體中的資源透明的繼續(xù)完成任務(wù)的過程叫錯誤恢復(fù)。
負(fù)載均衡和錯誤恢復(fù)都要求各服務(wù)實(shí)體中有執(zhí)行同一任務(wù)的資源存在,而且對于同一任務(wù)的各個資源來說,執(zhí)行任務(wù)所需的信息視圖(信息上下文)必須是一樣的。
- 兩大技術(shù)
實(shí)現(xiàn)集群務(wù)必要有以下兩大技術(shù):
- ?集群地址--集群由多個服務(wù)實(shí)體組成,集群客戶端通過訪問集群的集群地址獲取集群內(nèi)部各服務(wù)實(shí)體的功能。具有單一集群地址(也叫單一影像)是集群的一個基 本特征。維護(hù)集群地址的設(shè)置被稱為負(fù)載均衡器。負(fù)載均衡器內(nèi)部負(fù)責(zé)管理各個服務(wù)實(shí)體的加入和退出,外部負(fù)責(zé)集群地址向內(nèi)部服務(wù)實(shí)體地址的轉(zhuǎn)換。有的負(fù)載均 衡器實(shí)現(xiàn)真正的負(fù)載均衡算法,有的只支持任務(wù)的轉(zhuǎn)換。只實(shí)現(xiàn)任務(wù)轉(zhuǎn)換的負(fù)載均衡器適用于支持ACTIVE-STANDBY的集群環(huán)境,在那里,集群中只有 一個服務(wù)實(shí)體工作,當(dāng)正在工作的服務(wù)實(shí)體發(fā)生故障時,負(fù)載均衡器把后來的任務(wù)轉(zhuǎn)向另外一個服務(wù)實(shí)體。
- ?內(nèi)部通信--為了能協(xié)同工作、實(shí)現(xiàn)負(fù)載均衡和錯誤恢復(fù),集群各實(shí)體間必須時常通信,比如負(fù)載均衡器對服務(wù)實(shí)體心跳測試信息、服務(wù)實(shí)體間任務(wù)執(zhí)行上下文信息的通信。
具有同一個集群地址使得客戶端能訪問集群提供的計算服務(wù),一個集群地址下隱藏了各個服務(wù)實(shí)體的內(nèi)部地址,使得客戶要求的計算服務(wù)能在各個服務(wù)實(shí)體之間分布。內(nèi)部通信是集群能正常運(yùn)轉(zhuǎn)的基礎(chǔ),它使得集群具有均衡負(fù)載和錯誤恢復(fù)的能力。