1. PhxPaxos源碼分析之關于PhxPaxos

目錄
1. PhxPaxos源碼分析之關于PhxPaxos
2. PhxPaxos分析之網絡基礎部件
3. PhxPaxos源碼分析之Proposer、Acceptor
4. PhxPaxos源碼分析之Learner
5. PhxPaxos源碼分析之狀態機
6. PhxPaxos源碼分析之歸檔機制
7. PhxPaxos源碼分析之整體架構


注:本章主要內容截取自github phxpaxos官方介紹

1.1 關于phxpaxos

PhxPaxos是騰訊公司微信后臺團隊自主研發的一套基于Paxos協議的多機狀態拷貝類庫。它以庫函數的方式嵌入到開發者的代碼當中, 使得一些單機狀態服務可以擴展到多機器,從而獲得強一致性的多副本以及自動容災的特性。 這個類庫在微信服務里面經過一系列的工程驗證,并且我們對它進行過大量的惡劣環境下的測試,使其在一致性的保證上更為健壯。

1.2 特性

  • 基于Lamport的 Paxos Made Simple 進行工程化,不進行任何算法變種。
  • 使用基于消息傳遞機制的純異步工程架構。
  • 每次寫盤使用fsync嚴格保證正確性。
  • 一次Propose(寫入數據)的Latency為一次RTT,均攤單機寫盤次數為1次。
  • 使用點對點流式協議進行快速學習。
  • 支持Checkpoint以及對PaxosLog的自動清理。
  • 支持跨機器的Checkpoint自動拉取。
  • 一個PhxPaxos實例可以同時掛載多個狀態機。
  • 可使用鏡像狀態機模式進行Checkpoint的自動生成。
  • 內置Master選舉功能。
  • 線上數據的實時增量checksum校驗。
  • 網絡、存儲、監控、日志模塊插件化,可由開發者自定義。
  • 基于Paxos算法的安全的成員變更。
  • 基于Paxos算法的集群簽名保護,隔離非法簽名的錯誤機器。
  • 自適應的過載保護。

1.3 局限

  • 一個PhxPaxos實例任一時刻只允許運行在單一進程(容許多線程)。
  • 這個類庫沒有內建對client-server的支持,開發者必須將類庫的代碼嵌入到自己的服務器代碼里面,以實現這個功能。
  • PhxPaxos只容許運行在64位的Linux平臺。

1.4 總結

PhxPaxos是Paxos的工程化實現。除了實現Paxos算法之外,還做了很多工程優化,包括性能(RTT、本地落盤次數等)、基礎部件插件化等。

本系列章節將深入分析PhxPaxos的各個部分,從網絡基礎部件講起,分析paxos的算法實現、checkpoint機制,最后從更高層上闡述phxpaxos的架構實現。本系列文章將覆蓋“1.1 特性”中描述的所有特性。

本文基于 phxpaxos v1.1.2。


[1] Leslie Lamport. Paxos made simple. 2001.11.01
[2] 隨安居士. Paxos made simple 釋譯. 2017.03.09
[3] 微信后臺團隊. 微信自研生產級paxos類庫PhxPaxos實現原理介紹. 2016.06.22


【轉載請注明】隨安居士. 1. PhxPaxos源碼分析之關于PhxPaxos. 2017.11.13

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容