分布式系統總結

2021-09-22 10:28:48 字數 2345 閱讀 1485

總結:服務等級協議、分布式系統指標、cap定理

可用性

準確性

系統容量

延遲

前面提到用sla評估分布式系統,下面說下分布式系統的另外幾個指標:可擴充套件性、一致性、永續性

水平擴充套件,就是在現有系統增加機器節點

在日常運維中水平擴充套件操作簡單,並且保證了系統的可用性,但是無節制增加機器數量也會帶來問題,比如:機器管理、排程、通訊會更複雜,出錯的可能性會更高,更難保證資料一致性

垂直擴充套件,就是在不改變系統節點數量的情況下,「公升級」單機效能,如:記憶體

垂直擴充套件沒有讓整個系統變得複雜,控制系統不需要做調整,但是限制比較多。多數情況下,單個機器的效能提公升是有限的。受摩爾定律限制,提供機器效能要比購買機器更昂貴

可用性對於分布式系統很重要。一般來說,構建分布式系統節點的可用性要低於系統的可用性,舉個例子:如果我們要構建乙個99.999的分布式系統(每年5分鐘的中斷時間),但是我們使用的單機節點的可用性是99.99(每年約8個小時的宕機時間)。那麼要想達成目標就是加機器,這樣即使部分節點宕機了系統是可用的。

這種情況下我們就要思考乙個問題:如何保證系統中的不同節點在同一時間,接收和輸出的資料一致性呢?這時就引入了一致性的概念

回到剛才的例子,要保證分布式系統內機器節點有相同的配置,就需要機器之間定期同步。

然而,資訊傳送有失敗的可能,比如資訊丟失或者節點正好宕機無法接收。因此,一致性在高可用的系統裡是非常核心的概念。

常用的一致性模型:強一致性、弱一致性、最終一致性

強一致性系統中只要資料更新,這個資料的副本都要同步更新,以保證這個更新被傳播到所有備份中。在這個過程結束後,才允許其他服務來讀取這個資料。所以,強一致性會犧牲延遲指標,並且對全域性時鐘的要求非常高。

在最終一致性系統中,我們無需等到資料更新被所有節點同步就可以讀取。儘管不同的程序讀取的資料可能不一致,但是最終所有的更新都會按時間順序同步到所有的節點。所以,最終一致性系統支援非同步讀取,他的延遲比較小

在實際系統中,強一致性是很難實現的,應用最廣的是最終一致性

資料永續性意味著資料一旦被成功儲存就可以一直使用,及時系統節點下線、宕機或資料損壞也是如此

不同的分布式資料庫擁有不同級別的永續性。有些系統支援節點級別的永續性,有些做到了集群級別,而有些系統壓根沒有永續性

想要提高永續性,資料複製是較為通用的做法。把同乙份儲存到不同的節點上,及時有節點無法連線,資料仍然可以被訪問

在分布式系統中還有乙個永續性概念「訊息永續性」。在分布式系統中,節點之間需要經常相互傳送訊息去保證一致性。對於重要的系統而言,常常不允許任何訊息丟失

c屬性:一致性

打個比方,現在有兩個操作,a和b,需要在乙個分布式系統上完成:

我們假設a作用在系統上的時候,所看見的所有系統狀態叫做狀態a,而操作b作用在系統上的時候,所看見的所有系統狀態叫做狀態b

如果操作a在操作b之前發生的,並且a操作成功,那麼系統狀態b必須要比系統狀態a更加新

舉例:購物車系統

a屬性:可用性

在分布式系統中,任意非故障節點都必須用使用者請求做出響應。

當系統滿足可用性的時候,只要系統還有乙個節點未崩潰,那麼這個節點必須最終響應客戶端

p屬性:分割槽容錯

分割槽容錯性要拆開兩個維度看:「分割槽」和「容錯」

在乙個分布式系統裡,由於某些故障會導致部分節點無法連通,這就造成整個網路分成幾塊區域,從而使資料分散在這些無法連通的區域中,這就發生了分割槽錯誤

如圖,如果資料只能儲存在server a,當系統出現分割槽錯誤時,不能直接連線server a時,是無法獲取資料的。我們要「分割槽容錯」,即使出現這樣的「錯誤」系統也要能「容忍」。也就是說,即使系統錯誤也必須能夠返回訊息

分割槽容錯性,在這裡指的是我們系統允許網路丟失從乙個節點傳送到另一節點的任意多條訊息

在現實系統中節點故障和網路丟包是不可避免的,如果不允許分割槽容錯的話,我們的系統就不再繼續工作了(舉例:審核平台中分割槽容錯的例子?)

所以,大部分情況下,系統設計會保留p,然後在a和c中二選一(舉例:哪個中介軟體產品放棄了p?)

分布式系統

分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...

分布式系統

分布式,一來就直接看書,除非你有比較深厚的技術功底,要不還是很晦澀難懂的。先想想為什麼會有分布式,分布式怎麼來的。傳統的電信 銀行業,當業務量大了之後,普通伺服器cpu io 網路到了100 請求太慢怎麼辦?最直接的做法,公升級硬體,反正也不缺錢,ibm小型機,大型機,採購了堆硬體。但是網際網路不能...

分布式系統

zookeeper讓服務配置變得更簡單 zookeeper是hadoop下的乙個子專案,它是乙個針對大型分布式系統的可靠的協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper是可以集群複製的,集群間通過zab zookeeper atomic broadcast 協...