讀《etcd 技術內幕》

wide288發表於2020-12-21

 

etcd 是一個可靠的分散式 KV 儲存,其底層使用 Raft 演算法保證一致性,主要用於共享配置和服務發現。

etcd 程式碼為了效能,使用了大量的 goroutine 和 Channel。

etcd-raft 模組是 etcd 的核心模組之一,是實現 raft 協議的。

etcd-rafthttp 模組

watcher 機制

Lessor

WAL 日誌

SnapShotter 快照

api 介面:

etcd v2 提供了 http + json 的呼叫方式

etcd v3 客戶端中使用 grpc 與服務端進行互動

etcd 叢集可以支援每秒 1萬+ 次的寫入。

etcd 支援 TLS 訪問。

鍵值對儲存支援多版本

etcd v3 底層儲存使用的是 BoltDB , key 的版本資訊是 main revision + sub revision。

查詢時選通過 B 樹索引查詢到對應的版本資訊,然後在 BoltDB 中通過版本資訊查詢相應的 Value 值。

 

主要模組

raft:raft 協議的核心實現,只實現了基本的 raft 協議,未提供實現網路層相關的內容。

raft-http

wal 和 snap

store

mvcc

lease

auth 和 alarm

etcdserver: etcd 服務端實現

client v2

client v3

 

執行

單機模式

叢集模式

 

相關文章