读《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

 

运行

单机模式

集群模式

 

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