專家博客:探討分布式系統與集群的區別

2020-12-13 IT168

    【IT168 技術】簡單說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行的任務數來提升效率。

  例如:如果一個任務由10個子任務組成,每個子任務單獨執行需1小時,則在一臺伺服器上執行改任務需10小時。

  採用分布式方案,提供10臺伺服器,每臺伺服器只負責處理一個子任務,不考慮子任務間的依賴關係,執行完這個任務只需一個小時。

  而採用集群方案,同樣提供10臺伺服器,每臺伺服器都能獨立處理這個任務。假設有10個任務同時到達,10個伺服器將同時工作,10小後,10個任務同時完成,這樣,整身來看,還是1小時內完成一個任務!

  集群概念

  1. 兩大關鍵特性

  集群是一組協同工作的服務實體,用以提供比單一服務實體更具擴展性與可用性的服務平臺。在客戶端看來,一個集群就象是一個服務實體,但事實上集群由一組服務實體組成。與單一服務實體相比較,集群提供了以下兩個關鍵特性:

  · 可擴展性--集群的性能不限於單一的服務實體,新的服務實體可以動態地加入到集群,從而增強集群的性能。

  · 高可用性--集群通過服務實體冗餘使客戶端免於輕易遇到out of service的警告。在集群中,同樣的服務可以由多個服務實體提供。如果一個服務實體失敗了,另一個服務實體會接管失敗的服務實體。集群提供的從一個出 錯的服務實體恢復到另一個服務實體的功能增強了應用的可用性。

  2. 兩大能力

  為了具有可擴展性和高可用性特點,集群的必須具備以下兩大能力:

  · 負載均衡--負載均衡能把任務比較均衡地分布到集群環境下的計算和網絡資源。

  · 錯誤恢復--由於某種原因,執行某個任務的資源出現故障,另一服務實體中執行同一任務的資源接著完成任務。這種由於一個實體中的資源不能工作,另一個實體中的資源透明的繼續完成任務的過程叫錯誤恢復。

  負載均衡和錯誤恢復都要求各服務實體中有執行同一任務的資源存在,而且對於同一任務的各個資源來說,執行任務所需的信息視圖(信息上下文)必須是一樣的。

  3. 兩大技術

  實現集群務必要有以下兩大技術:

  · 集群地址--集群由多個服務實體組成,集群客戶端通過訪問集群的集群地址獲取集群內部各服務實體的功能。具有單一集群地址(也叫單一影像)是集群的一個基 本特徵。維護集群地址的設置被稱為負載均衡器。負載均衡器內部負責管理各個服務實體的加入和退出,外部負責集群地址向內部服務實體地址的轉換。有的負載均 衡器實現真正的負載均衡算法,有的只支持任務的轉換。只實現任務轉換的負載均衡器適用於支持ACTIVE-STANDBY的集群環境,在那裡,集群中只有 一個服務實體工作,當正在工作的服務實體發生故障時,負載均衡器把後來的任務轉向另外一個服務實體。

  · 內部通信--為了能協同工作、實現負載均衡和錯誤恢復,集群各實體間必須時常通信,比如負載均衡器對服務實體心跳測試信息、服務實體間任務執行上下文信息的通信。

  具有同一個集群地址使得客戶端能訪問集群提供的計算服務,一個集群地址下隱藏了各個服務實體的內部地址,使得客戶要求的計算服務能在各個服務實體之間分布。內部通信是集群能正常運轉的基礎,它使得集群具有均衡負載和錯誤恢復的能力。

  集群分類

  Linux集群主要分成三大類( 高可用集群, 負載均衡集群,科學計算集群),高可用集群( High Availability Cluster),負載均衡集群(Load Balance Cluster),科學計算集群(High Performance Computing Cluster)

  具體包括:

  Linux High Availability 高可用集群:普通兩節點雙機熱備,多節點HA集群,RAC, shared, share-nothing集群等;Linux Load Balance 負載均衡集群:LVS等....;Linux High Performance Computing 高性能科學計算集群:Beowulf 類集群....;分布式存儲;其他類linux集群:如Openmosix, rendering farm 等..

  詳細介紹

  1. 高可用集群(High Availability Cluster)

  常見的就是2個節點做成的HA集群,有很多通俗的不科學的名稱,比如"雙機熱備", "雙機互備", "雙機".

  高可用集群解決的是保障用戶的應用程式持續對外提供服務的能力。 (請注意高可用集群既不是用來保護業務數據的,保護的是用戶的業務程序對外不間斷提供服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度)。

  2. 負載均衡集群(Load Balance Cluster)

  負載均衡系統:集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般Web伺服器集群、資料庫集群和應用伺服器集群都屬於這種類型。

  負載均衡集群一般用於相應網絡請求的網頁伺服器,資料庫伺服器。這種集群可以在接到請求時,檢查接受請求較少,不繁忙的伺服器,並把請求轉到這些伺服器上。從檢查其他伺服器狀態這一點上看,負載均衡和容錯集群很接近,不同之處是數量上更多。

  3. 科學計算集群(High Performance Computing Cluster)

  高性能計算(High Perfermance Computing)集群,簡稱HPC集群。這類集群致力於提供單個計算機所不能提供的強大的計算能力。

  高性能計算分類

  高吞吐計算(High-throughput Computing)

  有一類高性能計算,可以把它分成若干可以並行的子任務,而且各個子任務彼此間沒有什麼關聯。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應用。這一項目是利用Internet上的閒置的計算資源來搜尋外星人。SETI項目的伺服器將一組數據和數據模式發給Internet上 參加SETI的計算節點,計算節點在給定的數據上用給定的模式進行搜索,然後將搜索的結果發給伺服器。伺服器負責將從各個計算節點返回的數據匯集成完整的 數據。因為這種類型應用的一個共同特徵是在海量數據上搜索某些模式,所以把這類計算稱為高吞吐計算。所謂的Internet計算都屬於這一類。按照 Flynn的分類,高吞吐計算屬於SIMD(Single Instruction/Multiple Data)的範疇。

  分布計算(Distributed Computing)

  另一類計算剛好和高吞吐計算相反,它們雖然可以給分成若干並行的子任務,但是子任務間聯繫很緊密,需要大量的數據交換。按照Flynn的分類,分布式的高性能計算屬於MIMD(Multiple Instruction/Multiple Data)的範疇。

  4. 分布式(集群)與集群的聯繫與區別

  分布式是指將不同的業務分布在不同的地方。而集群指的是將幾臺伺服器集中在一起,實現同一業務。分布式中的每一個節點,都可以做集群。而集群並不一定就是分布式的。

  舉例:就比如新浪網,訪問的人多了,他可以做一個群集,前面放一個響應伺服器,後面幾臺伺服器完成同一業務,如果有業務訪問的時候,響應伺服器看哪臺伺服器的負載不是很重,就將給哪一臺去完成。

  而分布式,從窄意上理解,也跟集群差不多, 但是它的組織比較鬆散,不像集群,有一個組織性,一臺伺服器垮了,其它的伺服器可以頂上來。

  分布式的每一個節點,都完成不同的業務,一個節點垮了,哪這個業務就不可訪問了。

相關焦點

  • 集群_負載均衡_分布式的區別是什麼
    打開APP 集群_負載均衡_分布式的區別是什麼 發表於 2017-12-21 11:16:36 集群概念 集群通信系統是一種用於集團調度指揮通信的移動通信系統,主要應用在專業移動通信領域。
  • 集群和分布式,你知道其中的區別嗎?
    經常聽到MySql集群、Redis集群、分布式系統等概念,但是,很少有機會深究,到底什麼集群,什麼是分布式?在概念上這倆個詞很接近,難道不需要區分?其實,非常有必要區分這兩個概念,幫助我們對計算機的理論有更深入的理解。今天,我就嘗試去解釋一下這兩個概念。
  • 淺談集群、分布式、微服務的異同
    集群主要具有以下特性:在一些大的系統中,預測最終用戶的數量和行為是非常困難的,伸縮性是指系統適應不斷增長的用戶數的能力。分布式存在的主要作用是大幅度的提高效率,緩解伺服器的訪問和存儲壓力。區別分布式的方式是一個業務分拆多個子業務,部署在不同的伺服器上。例如:將一個大的系統劃分為多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。什麼是微服務
  • 如何理解分布式與集群,二者區別是什麼?
    分布式是指不同的業務分布在不同的地方,集群指的是將幾臺伺服器集中在一起,實現同一業務。(這就是運用集群原理)後期:用戶訪問量不斷增加,響應速度變慢,伺服器又崩了,在不考慮增加伺服器帶寬、內存和CPU的情況下如何解決這個問題?先解決響應速度變慢,用戶頻繁調用資料庫,在客戶端與資料庫之間,使用redis緩存。
  • 什麼是集群,分布式,一直都沒有弄明白
    什麼是集群,分布式,一直都沒有弄明白文|洪生鵬什麼是集群、分布式,對於這些概念,剛開始接觸的時候,不知有沒有人像我一樣,有種有點可望不可及的感覺,很難理解。下面我們簡單對這兩個概念闡述下:什麼是集群維基百科是這樣描述的計算機集群簡稱集群是一種計算機系統,它通過一組鬆散集成的計算機軟體和/或硬體連接起來高度緊密地協作完成計算工作。
  • 架構師成長之路:分布式系統綜述
    我這裡問下,當我們用 keepalived 做高可用集群的時候,我們是在搞分布式系統嗎?當我們並發不夠,搞了一堆機器做負載均衡,我們是在搞分布式系統嗎?當你心裡默默回答是,或者不清楚是不是的時候,你本身對分布式系統這個概念就已經糊塗了。
  • Infortrend CS分布式NAS集群優勢之高可用篇
    分布式作為大規模的集群存儲產品,要具備更加全面的防範措施,應對宕機、斷電等故障的發生。Infortrend EonStor CS分布式NAS集群存儲為確保前端業務持續不間斷使用,在硬體及軟體架構上嵌入多種技術理念來確保整個集群的高可用性。
  • 如何利用Node.js 構建分布式集群
    本文為UCloud 公司高級工程師文天樂在深JS大會上發表的演講內容,主要介紹了UCloud內部如何利用Node.js 構建分布式集群,並分享了實踐過程中走過的坑,希望對正在使用Node.js或是即將使用Node.js的朋友有一些幫助。
  • 一文看懂集群、分布式與負載均衡的關係
    在「高並發,海量數據,分布式,NoSql,雲計算......」概念滿天飛的年代,相信不少朋友都聽說過甚至常與人提起「集群,負載均衡」等,但不是所有人都有機會真正接觸到這些技術,也不是所有人都真正理解了這些「聽起來很牛的」技術名詞。下面簡單解釋一下吧。
  • 帶著問題學習分布式系統
    根本的問題在於學習不系統,沒有把一個個的知識點連接起來,本來這些新的知識就很少在工作中實踐,如果又是一個個的信息孤島,很快就會被遺忘。另一個問題,沒有良好的規劃,今天看看這裡,明天看看哪裡,糾結於細枝末節,忘了從整體上把握。幸好,差不多半年前開始意識到了這個問題,開始看書,看別人的博客,開始思考如何充分利用好有限的時間。
  • 分布式與集群是一回事兒麼?別讓這麼簡單的問題難住你!
    集群和分布式,實際上是兩個截然不同的概念。集群一個業務,部署在多臺伺服器上,這就是集群。這裡的一個業務,可以直接看作一個程序包。 再舉個例子公司的網上商城,拆分成兩個系統:商品系統和支付系統,用戶在商品系統上完成瀏覽商品、加入購物車的動作,在支付系統上完成支付動作(當然用戶是無法感知到是在兩個系統上完成的操作),這就是分布式。當然,還能繼續拆,例如拆出來:用戶系統、積分系統、物流系統等等等等。
  • 分布式系統架構與雲原生—阿里雲《雲原生架構白皮書》導讀
    1.2 分布式系統架構的定義  此處定義參考百度百科為「在一個分布式系統中,一組獨立的計算機展現給用戶的是一個統一的整體,就好像是一個系統似的。系統擁有多種通用的物理和邏輯資源,可以動態的分配任務,分散的物理和邏輯資源通過計算機網絡實現信息交換。系統中存在一個以全局的方式管理計算機資源的分布式作業系統。
  • 3分鐘讀懂何為分布式、微服務和集群!
    但系統又是如何進行這一系列操作,如下圖錯綜複雜的調用關係(自行忽略部分細節)。用戶看不見、摸不著,但整個下單過程卻行走在網絡之間。TT貓把所有功能模塊分布部署在不同的地方,最終完成了用戶一系列的請求,這大概就是一個分布式系統吧。二、微服務博主認為微服務是一種架構,也是在分布式範疇之內的。
  • 大數據基礎知識:Hadoop分布式系統介紹
    Hadoop是Apache軟體基金會下一個開源分布式計算平臺,以hdfs(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是資源調度框架,能夠細粒度的管理和調度任務,還能夠支持其他的計算框架,比如spark)為核心的Hadoop為用戶提供了系統底層細節透明的分布式基礎架構。
  • Infinispan 9.3.0.Beta1 發布,分布式集群緩存系統
    雖然可以在本地模式下運行 Infinspan,但其真正的價值在於分布式,在這種模式下,Infinispan 可以將集群緩存起來並公開大容量的堆內存。這可比簡單的複製強大的多,因為它會為每個結點分配固定數量的副本; 伺服器故障的一種恢復手段 ; 同時還提升了可伸縮性,這是由於存儲每個結點所需的工作量是與集群大小息息相關的。
  • 瑞馳ARM存儲是最適合分布式NAS的硬體形態
    瑞馳作為國內創新的大數據和雲技術產品及解決方案提供商,受邀參與了本次大會,與世界各地專家教授共同探討NAS網絡、結構與存儲,並現場展示全球首款商用ARM低功耗存儲產品。瑞馳產品經理現場進行產品模塊安裝和存儲界面演示,直觀地向參會人員展示產品特點,創新的ARM架構立即吸引眾人的目光,並獲參會人員高度評價:「瑞馳ARM存儲是最適合分布式NAS的硬體形態!」
  • 淺析集群調度系統的演進
    Kubernetes 是一個集群調度系統,今天這篇文章主要是介紹 Kubernetes 之前一些集群調度系統的架構,通過梳理他們的設計思路和架構特點,我們能夠學習到集群調度系統的架構的演進過程,以及在架構設計時需要考慮的主要問題,對理解 Kubernetes 的架構會非常有幫助。
  • 分布式系統的負載均衡
    這是 CAP 定理是分布式系統的基礎,也是分布式系統的 3 個指標:Consistency(一致性)Availability(可用性)Partition tolerance(分區容錯性)那高可用(High Availability)是什麼?
  • TensorFlow分布式訓練MNIST分類器
    本節以分布式方式訓練完整的 MNIST 分類器。
  • Presto:分布式 SQL 查詢引擎
    下文將詳細介紹二者的區別基本概念組件Coordinator 負責管理 Worker 和 MetaStore 節點,以及接受客戶端查詢請求,並進行 SQL 的語法解析(Parser)、執行計劃生成與優化(Planner)和查詢任務的調度(Scheduler)Coordinator 通過 RESTful 接口與 Client 和 Worker 交互Worker