分布式系統原理 筆記

2021-08-21 15:54:20 字數 2071 閱讀 3434

資料分布協議:使用維度各有利弊

雜湊(更新起來要成倍遷移)

一致性雜湊(環雜湊,易實現負載均衡)

資料量(元資料多,類似b樹的中間節點)

資料範圍(也是元資訊多)

基本副本協議:

中心化(primary-secondary)(中心節點負責維護資料的更新、併發控制、協調副本的一致性)

去中心化

乙個節點向另乙個節點發起rpc的狀態有成功,失敗和超時

lease機制,最重要的分布式協議,重要的應用在於判定節點狀態。通過頒發乙個有效期,經驗證通常為10s,並且通常中心節點互為副本,成為乙個小的集群,具有高可用性,對外頒發lease。

primary-secondary架構:

只允許有乙個primary,q為master節點,a為當前primary節點。

心跳包的缺點:乙個節點q超過一定時間接受不到a的心跳則認為異常,但其實有可能是q與a之間的網路中斷,網路擁塞,或者q異常,也就是q認為a有問題,但a不認為自己有問題。

此時q將primary分配給b,並通知所有節點primary為b。

但由於通知的順序問題可能或出現雙primary問題,雙主問題會出現嚴重的資料錯誤。

分布式協議依賴於對節點狀態認知的全域性一致性,即一旦節點q認為節點a異常,那麼a也需要認為自己異常,從而停止作為primary

改進:a,b,c節點還是通過心跳給q傳遞資訊,給每個節點頒發lease,給primary節點頒發特殊的lease。

分布式協議可以容忍雙主錯誤,即不依賴於對節點狀態的全域性一致性的認知。(去中心化)

我們現在依賴於zookeeper這樣的開源的高可用系統,簡單的實現高效的、無單點選主的、狀態監控、分布式鎖、分布式訊息佇列等功能。依賴於zookeeper與client之間的lease。

日誌技術:常用於分布式資料庫

redo log冪等性 具有check point

undo log

redo/undo log

no redo/no undo log也稱為是0/1目錄

兩階段提交協議:

經典的強一致性中心化副本控制協議

在分布式資料庫上,有一些副本可以順利提交,但有一些可能會失敗

兩階段涉及的物件有乙個中心化的協調者節點和n個參與者節點,參與者節點也就是管理副本的節點

第一階段:協調者詢問所有的參與者是否可以提交事務,所有參與者向協調者投票

第二階段:協調者根據所有參與者的投票結果做出是否事務可以全域性提交的決定,並通知所有參與者執行這個決定(只要有乙個參與者不ok那就放棄,選擇放棄(abort)事務)

協調者宕機恢復 如果最後是begin_commit,則說明宕機前協調者處於wait狀態,因此重新傳送prepare訊息即可。如果最後是global_commit或者是global_abort,那麼重新傳送global_commit或者是global_abort即可繼續兩階段提交流程

參與者宕機恢復 如果是init則等待協調者發來的prepare訊息即可,如果是ready那麼是vote_commit,如果是global_xx,則不影響等待協調者發過來即可

容錯差,易阻塞,互動太多很麻煩,理論意義大於實踐意義

mvcc:多版本併發控制技術

使用的方法有複製,也就是類似svn的check out操作

還有增量,也就是類似svn的增量提交

事務靠日誌或者是mvcc技術實現

時間戳,id序列號,還有版本合併,如果這個版本沒有修改過對應版本修改過的資料,那麼可以進行合併。

paxos

高可用,強一致性的去中心化的分布式協議

擁有一組完全對等的參與節點,他們就某一件事作出決議,如果該決議獲得了超過半數節點的同意則生效。

只要有超過一半的節點正常,就可以工作,能很好的對宕機,網路分化等異常情況。

waro與quorum

waro所有副本更新成功才可以成功

quorum大部分更新成功即可

補新學到的心跳出血bug:是指每次伺服器端傳輸心跳包結果時,由於使用的是記憶體複製,如果客戶端在確認存活時要求伺服器端傳送xx位元組的檔案,伺服器端可能會造成資訊洩漏,也就是將自身記憶體中非心跳包響應的部分一併傳出去。解決方案就是在伺服器端設定忽略客戶端的xx位元組請求,使用自己預設的心跳包大小即可。

分布式系統 (大規模分布式系統原理解析和架構實踐)

分布式系統的基礎理論 分布式系統 多台機器通過網路連線在一起,作為乙個整體為上層提供服務。一 基礎理論知識 資料分布 複製 一致性 容錯。1 異常 1 伺服器宕機 記憶體錯誤,伺服器停電 如何通過讀取持久化戒指 機械硬碟 固態硬碟 中的資料恢復記憶體資訊,從而恢復宕機前某個一致性狀態。2 網路異常 ...

分布式系統

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

分布式系統

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