标签:snapshot 版本 ann 组件 返回 存储 ras ota 模块
? etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。它是一款云原生时代的首选元数据存储产品,已经成为云原生和分布式系统的存储基石。
组成
client v2 API 客户端库
client v3 API 客户端库
作用
提供了简洁易用的 API
支持负载均衡、节点间故障自动转移
极大降低业务使用 etcd 复杂度,提升开发效率、服务可用性
client 访问 server的通信协议
v2API
v3API
gRPC 协议
HTTP/1.x 协议(通过 etcd grpc-gateway 组件支持)
server 节点之间的通信协议
核心算法组成
Leader 选举
日志复制
ReadIndex
作用
KVServer 模块
生成一个唯一的 ID,将此请求关联到一个对应的消息通知 channel,然后向 Raft 模块发起(Propose)一个提案(Proposal)
等待此 put 请求,等待写入结果通过消息通知 channel 返回或者超时。etcd 默认超时时间是 7 秒(5 秒磁盘 IO 延时 +2*1 秒竞选超时时间),如果一个请求超时未返回结果,则可能会出现 etcdserver: request timed out 错误
MVCC 模块
读场景
写场景
treeIndex 模块(内存树形索引模块)
boltdb 模块
基于 B+ tree 实现的 key-value 键值库,支持事务,提供 Get/Put 等简易 API 给 etcd 操作
每次修改操作,生成一个新的版本号 (revision),以版本号为 key, value 为用户 key-value 等信息组成的结构体
数据隔离
boltdb 里每个 bucket 类似对应 MySQL 一个表
用户的 key 数据存放的 bucket 名字的是 key
etcd MVCC 元数据存放的 bucket 是 meta
Auth 鉴权模块
Lease 租约模块
Compactor 压缩模块
Quota 模块(配额)
Apply模块
预写日志 (WAL) 模块
快照 (Snapshot) 模块
boltdb 模块
标签:snapshot 版本 ann 组件 返回 存储 ras ota 模块
原文地址:https://www.cnblogs.com/ltaodream/p/14885154.html