分散式基礎(1)

小火龍jr發表於2019-06-01

概念

1. 節點

可以獨立按照分散式協議完成一組邏輯的程式個體,也可以認為節點是一個完整的,不可分的整體,如果整個程式程式實際上是由多個獨立的部分構成的,則可以將一個程式劃分為多個節點。

2. 通訊

節點之間的網路通訊是完全獨立且相互隔離的,網路通訊是不可靠的,傳送訊息的節點無法確認訊息是否被其他節點接收或者被消費到。

3. 儲存

資料庫,磁碟。有無狀態節點判斷,比如A節點把資料同步到B節點儲存,不能說A節點是有狀態的,只能說B節點是有狀態的節點

4.異常

機器當機,網路異常都是異常的表現

機器當機好理解,伺服器因為一些不可抗拒的原因停止工作,可能是load過高,程式碼問題,物理因素等等。解決方案有很多,比如節點分散在各個機器上,異地多活等等。

網路異常分為訊息丟失,訊息亂序,資料錯誤,不可靠TCP

訊息丟失是最常見的網路異常,網路擁塞 路由變動 裝置異常等情況發生時都是造成傳送的資料丟失,由於傳輸的資訊會存在各種異常情況,所以這也是分散式中需要解決的棘手問題之一。

有A B C三個節點時,AB在機房a C在機房b,當出現機房a和機房b由於物理原理網路不通時,則這種特殊的網路異常為網路分化。這裡可能就會造成機房a和機房b的資料不一致(這裡也引入了資料一致性問題,我們下面會講到這個)

異常不可能100%被避免,只能保證多少個9,大多數情況下都是在業務允許的範圍內補償。

副本

副本,分為資料副本和服務副本。 在分散式系統中為資料或服務提供的冗餘,保證高可用。

多份副本存在的情況下,就一定存在一致性問題。

強一致性: 顧名思義 每個節點的資料都是保持一致的。

單調一致性: 任何使用者在讀取資料的時候,只會讀取到最近一次成功更新的資料,不會讀取到比這之前還早的資料。弱於強一致性

會話一致性: 使用者在一次會話的時候,只會讀取到某次更新後的資料,這次會話結束後,讀取到的值可能不是最近一次更新的值。

最終一致性: 只要在某個節點中完成了業務,將廣播至各個節點更新資料。這一過程使用者無感知,會在之後的某個時刻資料在各節點都是一致的。同步資料時間通常要求極短,如果很長的話,會退化成弱一致性系統

弱一致性:節點更新成功後,無法在一個缺點的時間內把所有節點資料都同步。

相關文章