如何进行etcd的分析

发布时间:2022-01-12 16:08:44 作者:柒染
来源:亿速云 阅读:199

这篇文章给大家介绍如何进行etcd的分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

机制

概念

Etcd 的 Raft

由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3、5或者7个节点构成一个集群。

脑裂

解决方案

引入一个新的概念, region leader

但是值得注意的是, region leader 和 raft leader 可能不是一个节点。 当 region leader 和 raft leader 不重合的时候,region leader 会将请求转发给当前的 raft leader

当网络出现分区时,会出现以下几种情况:

存储(v3)

v3和之前版本差别太大,仅以其为准

Backend:BoltDB

基本特点

事务处理

增、删、读:都要获取一个事务

MVCC
结构层次

revision:对同一个 key 每次修改都对应一个revision - main:每次事务+1 - sub:同次事务每次对其操作+1 generation: - 一个key 在生命周期内可能被频繁删除 - 从某次创建到该次删除的所有 revision 集合组成一个 generation key:每个 key 是由多个 generation 组成多版本 keyIndex:组织这个多版本 key 的结构体叫做 keyIndex

维护

多个版本同时保持,需要不定期清理

实现
type keyIndex struct {
	key         []byte
	modified    revision //最新版本revision
	generations []generation  //代
}
type generation struct {
	ver     int64
	created revision // 创建这个代的第一个版本
	revs    []revision//版本数组
}
type revision struct {
	main int64  //事务id,全局递增
	sub int64   // 事务内递增
}

例子 插入数据

(key1, value1)
(key2, value2)

更新数据

(key1, update1)
(key2, update2)

存储的记录

rev={1 0}, key=key1, value="value1"
rev={1 0}, key=key2, value="value2"
rev={2 0}, key=key1, value="update1"
rev={2 1}, key=key2, value="update2"

内存索引:KeyIndex

基本特点

组件

关于如何进行etcd的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. kubernetes etcd组件部署
  2. ETCD 故障节点修复

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

etcd

上一篇:Android基础逆向没怎么实现

下一篇:Android逆向中smali复杂类实例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》