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
運行
單機模式
集羣模式