在 ETCD 源码学习过程,不会讲解太多的源码知识,只讲解相关的实现机制,需要关注源码细节的朋友可以自行根据文章中的提示,找到相关源码进行学习。
MVCC 多版本并发控制,是通过保存多个版本的数据,以实现事务之间彼此独立,即某个事务的增删改,不会影响到其他事务的数据视图。同时在同一个事务中,在事务结束之前,看到的数据视图是一致的(可重复读)。
概述
ETCD 主要通过版本 ID 实现多版本并发(revision),版本的组成包括一个 main 主版本 ID,在每次进行增删改操作(新事物)时,main+1, 另一个 sub 子版本 ID,在同一个事务中,每次修改一次,就会递增一次。
存储结构
存储包括两部分,一是KV数据,二是索引数据。KV 数据通过 bbolt (键值对存储数据库)进行持久化存储。索引数据通过 btree 进行保存。在对 KV 进行操作时,首先操作 Index,再操作 bbolt。