在 ETCD 源码学习过程,不会讲解太多的源码知识,只讲解相关的实现机制,需要关注源码细节的朋友可以自行根据文章中的提示,找到相关源码进行学习。
主要文件
/mvcc/revision.go mvcc 版本号存储定义
/mvcc/index.go 索引操作的对外接口定义和具体实现
/mvcc/key_index.go key的版本管理及相关操作定义和具体实现
/mvcc/kv.go kv接口定义
/mvcc/kv_view.go readView 与 writeView 定义
/mvcc/kvstore.go 键值对存储对象的具体实例
/mvcc/kvstore_txn.go 键值对事务实现,readTxn/writeTxn
/mvcc/kvstore_compaction kv压缩实现
backend/batch_tx.go bbolt写事务实现
backend/read_tx.go bbolt读事务实现
key 版本管理
/*
mvcc/key_index.go
键值索引的版本控制
*/
type keyIndex struct {
key []byte //客户端提供的原始 key 值
modified revision //最后