集羣、分佈式、微服務的概念及異同

一、什麼是集羣?

       集羣是指將多臺服務器集中在一起,每臺服務器都實現相同的業務,做相同的事;但是每臺服務器並不是缺一不可,存在的主要作用是緩解併發能力和單點故障轉移問題。

集羣主要具有以下特徵:
(1)、伸縮性
       在一些大系統中,預測最終用戶的數量和行爲是非常困難的,伸縮性是指系統使用不斷增長的用戶數的能力;隨着用戶數的增長,我們只需將新的服務器加入集羣中即可,對於用戶來看,服務無論從連續性還是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級。

(2)、高可用性
       單一服務器的解決方案並不是一個健壯方式,因爲容易出現單點失效,在某些關鍵的應用程序是不能容忍的,哪怕幾分鐘的死機;高可用性集羣的出現就是爲了使集羣的整體服務儘可能可用,以便考慮軟硬件的易錯性;如果高可用性集羣中的主節點發生了故障,那麼這段時間內由次節點代替它。

(3)、負載均衡
       負載均衡集羣爲企業需求提供了更實用的系統,該系統使負載可以在計算機集羣中儘可能平均地分攤處理,該負載可能是需要均衡的應用程序處理負載或網絡流量負載;這樣的系統非常適合運行同一組應用程序的大量用戶;每個節點都可以處理一部分負載,並且可以在節點之間動態分配負載,以實現平衡。

(4)、高性能
       這種設計的幾圈用來開發並性編程應用模式,已解決複雜的科學問題,並行計算是相對於串行計算來說的,並行計算能力的目的是用來提高計算速度

二、什麼是分佈式?

       分佈式服務是指多臺服務器集中在一起,服務是分散部署在不同的機器上;每臺機器都實現總體中的不同業務,做不同的事情;一個服務可能負責幾個功能,是一種面向 SOA 的架構;各分開部署的部分彼此通過各種通訊協議交互信息,並且每臺服務器都缺一不可,如果某臺服務器故障,則部分功能確實,或者導致整體無法運行;分佈式存在的主要作用是大幅度的提高效率,緩解服務器的訪問和存儲壓力。

       將一個大的系統劃分爲多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。

三、什麼是微服務?

       微服務的概念和分佈式比較相似,微服務是一種架構風格;簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能;每個微服務僅關注於完成一件任務並很好地完成該任務,這個服務可以單獨部署運行;各個服務之間是松耦合的,服務之間可以通過 RPC 來相互交互;微服務與分佈式還有一點區別是:微服務的應用不一定是分散在讀個服務器上,它也可以是同一個服務器。
       微服務相比分佈式服務來說,它的粒度更小,服務之間耦合度更低,敏捷性也更高;但服務微服務化後帶來的挑戰也是顯而易見的,例如服務力度小,數量大,後期運維難度增大等。

四、集羣、分佈式、微服務的異同及聯繫

(1)、分佈式是以縮短單個任務的執行時間來提升效率,而集羣則是通過提高單位時間內執行的任務數來提升效率;但分佈式需要做好事務管理
(2)、集羣模式是不同服務器部署同一套服務對外訪問,實現服務的負載均衡;區別集羣的方式是根據部署多臺服務器業務是否相同,分佈式中的每個階段,都可以做集羣;而集羣並不一定就是分佈式的;注意:集羣需要做好 Session 共享,也就是接口要具有無狀態特徵,確保在不同服務器切換的過程中不會因爲沒有獲取到 Session 而引起服務終止
(3)、分佈式與微服務的架構很相似,只是部署方式不一樣而已;生產環境下的微服務肯定是分佈式部署的,分佈式部署的應用不一定是微服務架構的
(4)、在設計與開發中我們可以將分佈式與集羣的分開嗎?
       分佈式的主要功能是將我們的系統模塊化,將系統進行解耦,方便維護和開發;但並不能解決系統的併發性和高可用性問題;而集羣恰好彌補了分佈式的缺陷,一方面可以解決或者說改善系統的併發問題,另一方可以解決服務器如果出現宕機後,系統仍然可以正常運轉;好的設計應該是分佈式和集羣相結合,具體實現就是業務拆分成很多子業務,然後針對每個子業務進行集羣部署。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/4mj5Zy2twBMtyS9DGVQIvQ