前段時間認真學習了 etcd 原始碼實現,往後的一段時間,會陸陸續續的寫一些學習記錄。
本章主要介紹 etcd 的主要幾個組成部分。
ectd主要包括以下幾個部分:
儲存包括兩部分組成,記憶體和磁碟。
index:鍵值索引(mvcc 多版本控制)
kv:原始鍵值對(mvcc 多版本控制)
snaphot:資料快照
metadata:元資料,主要記錄當前節點的狀態資訊。
transport 主要實現資料傳輸,其中包括兩種傳輸方式,一是長連線(資料傳輸完成不關閉),二是短鏈結(資料傳輸完成就關閉)。
短連線主要用於傳輸大資料,比如資料快照。
httpserver 或 grpc server,用於接收外部請求。
服務監控模組,各個模組上報自身狀態資料,使用者可以通過特定位址,檢視服務的執行狀態。
raft 協議的具體實現。主要包括 leader選舉、日誌同步等。
乙個 node 代表乙個節點,node 會呼叫 raft 進行 leader 選舉和日誌同步。
當接收到提案或者其他訊息時,會通過 node 處理,將訊息儲存到本地(unstable訊息),並最終交給上層模組處理。上層模組處理完成之後,在滿足 raft 協議的情況下, node 會將訊息更新為 stable 訊息 。
node 的上層模組,其主要作用用於處理 node 提交的 ready 例項 (包含一系列待處理訊息的封裝)。其中包括,追加訊息自身記憶體、訊息持久化、同步訊息到其他節點、更新服務配置等等。
最上層元件,主要呼叫各種元件來實現乙個可以正常工作的etcd例項。
ps:歡迎糾正
ETCD 原始碼學習 lease 二
在 etcd 原始碼學習過程,不會講解太多的原始碼知識,只講解相關的實現機制,需要關注原始碼細節的朋友可以自行根據文章中的提示,找到相關原始碼進行學習。本文主要介紹 lessor 如果發現過期鍵,server 如何處理過期鍵的過程。lessor goroutine func le lessor ru...
ETCD 原始碼學習 Raft 協議介紹(二)
raft協議是分布式一致性協議的一種,所以在了解raft協議之前,我們首先要知道一致性協議的作用。1.一致性協議用於解決分布式環境下多副本之間資料一致性的問題的。2.主要包括兩個部分,一是 leader 選舉,二是日誌同步。3.一致性協議主要包括paxos zab raft及 gossip 等 le...
STL原始碼簡述
stl是standard template library的簡稱,中文名標準模板庫,惠普實驗室開發的一系列軟體的統稱。從根本上說,stl是一些 容器 的集合,這些 容器 有list,vector,set,map等,stl也是演算法和其他一些元件的集合。這裡的 容器 和演算法的集合指的是世界上很多聰明...