轉載聲明 本系列文章轉自某技術大佬的博客https://www.cnblogs.com/bangerlee/ 該系列文章是我在網上能夠找到的最全面的分散式理論介紹文章了,一直沒看到有人整理這個系列文章,所以這次我就來做技術好文的搬運工,給整合了一把,覺得寫得好的朋友不妨去這位大佬的博客上打賞一把。 ...
轉載聲明
本系列文章轉自某技術大佬的博客https://www.cnblogs.com/bangerlee/
該系列文章是我在網上能夠找到的最全面的分散式理論介紹文章了,一直沒看到有人整理這個系列文章,所以這次我就來做技術好文的搬運工,給整合了一把,覺得寫得好的朋友不妨去這位大佬的博客上打賞一把。
分散式系統理論 - 從放棄到入門
隨承載用戶數量的增加和容災的需要,越來越多互聯網後臺系統從單機模式切換到分散式集群。回顧自己畢業五年來的工作內容,同樣有這樣的轉變。
畢業頭兩年負責維護運行在刀片機上的業務,在機房裡拔插單板的日子是我逝去的青春。設備之間通過VCS組成冷備,但即使有雙機軟體保護,宕機、網路丟包等問題發生時業務仍會受影響。這樣的系統架構下為保證SLA,有時候需要深入Linux系統內核或硬體層面分析機器重啟的原因。
接下來負責維護承載在分散式集群上的業務,相比前面的工作,這個階段主要關註點不是單節點的異常,更多是系統整體的穩定和健壯。面對紛繁複雜的系統,剛開始的時候有這樣的感覺:
龐大複雜的分散式系統前,應該從哪方面入手提升對其的認識和理解、提升專業性?網上可以找到很多分散式系統相關的論文和資料,但歸納起來要表達的主要意思是什麼?
結合自己這幾年的工作經驗,總結分散式系統的核心就是解決一個問題:不同節點間如何達成共識。
看似簡單的問題因網路丟包、節點宕機恢復等場景變得複雜,由此才衍生出很多概念、協議和理論。為探究共識問題最大能解決的程度,於是有FLP、CAP邊界理論;為在特定條件和範圍內解決該問題,於是有一致性協議Paxos、Raft、Zab和Viewstamped Replication;為構建這些協議,於是有多數派、Leader選舉、租約、邏輯時鐘等概念和方法。
2016年我閱讀了分散式系統領域一些代表性的論文和博文,圍繞“不同節點如何達成共識”這個問題,加入自己的認識和理解後有下麵7篇小結:
一致性、2PC和3PC
選舉、多數派和租約
時間、時鐘和事件順序
CAP
Paxos
Raft、Zab
Paxos變種和優化
構思和寫作技術類文章是一個辛苦的過程,一方面要閱讀很多資料並轉化成自己的理解、找到儘量不拾人牙慧的立意和角度,一方面要絞盡腦汁組織語言讓預期的讀者能夠容易理解。
但它也是一個有趣的過程,把知識捋一遍後原本一些模糊的概念變得清晰,寫作過程中想到的一些有意思的內容我也會將它穿插到文章里,有時候會被自己想到的一些小機靈逗樂