32 etcd raft 原始碼閱讀

2021-10-24 16:30:06 字數 620 閱讀 3837

etcd裡的raft模組只實現了raft共識演算法,而像訊息的網路傳輸,資料儲存都由上層應用來完成。

下面是各個檔案(夾)的功能簡介:

用protocol buffer定義了一些需要序列化的資料結構,比如entrymessage

unstable資料結構表示用於還沒有被使用者層持久化的資料,它維護了兩部分內容snapshotentries

這個檔案定義了乙個storage介面,應用層需要實現這個介面,以提供儲存和查詢日誌的能力。

leader節點通過progress這個資料結構來追蹤乙個follower的狀態,並根據progress裡的資訊來決定每次同步的日誌項。

raft協議的具體實現就在這個檔案裡。其中最重要的就是step函式,它用來處理不同的訊息。所以以後當我們想知道raft對某種訊息的處理邏輯時,到這裡找就對了。

node的主要作用是應用層和共識模組(raft)的銜接。將應用層的訊息傳遞給底層共識模組,並將底層共識模組共識後的結果反饋給應用層。

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...