ETCD 源码学习--MVCC 实现概述

本文介绍了ETCD如何通过MVCC实现并发控制,包括存储结构、索引、KV存储和数据变更流程。ETCD使用版本ID(main和sub)管理多版本,并通过bbolt和btree分别存储KV数据和索引。在数据变更时,不直接操作原有版本,而是增加新版本。查找时,通过读事务和版本号确定所需数据。
摘要由CSDN通过智能技术生成

在 ETCD 源码学习过程,不会讲解太多的源码知识,只讲解相关的实现机制,需要关注源码细节的朋友可以自行根据文章中的提示,找到相关源码进行学习。

MVCC 多版本并发控制,是通过保存多个版本的数据,以实现事务之间彼此独立,即某个事务的增删改,不会影响到其他事务的数据视图。同时在同一个事务中,在事务结束之前,看到的数据视图是一致的(可重复读)。

概述

ETCD 主要通过版本 ID 实现多版本并发(revision),版本的组成包括一个 main 主版本 ID,在每次进行增删改操作(新事物)时,main+1, 另一个 sub 子版本 ID,在同一个事务中,每次修改一次,就会递增一次。

存储结构

存储包括两部分,一是KV数据,二是索引数据。KV 数据通过 bbolt (键值对存储数据库)进行持久化存储。索引数据通过 btree 进行保存。在对 KV 进行操作时,首先操作 Index,再操作 bbolt。

索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值