讀《etcd 技術內幕》

 

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

 

運行

單機模式

集羣模式

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章