ETCD 的组件架构

193 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情

ETCD 常用术语

术语描述备注
Raftetcd实现一致性的核心etcd有etcd-raft模块
FollowerRaft中的从属节点竞争leader失败
LeaderRaft中的领导协调节点Leader 节点协调整个集群
Candidate候选节点当Follower接受Leader节点的消息超时会转变为Candidate
NodeRaft 状态机的实例Raft 中涉及多个节点
Memberetcd实例,管理着对应的Node节点可处理客户端请求
Peer同一集群中的另一个Member其他成员
Clusteretcd集群拥有多个etcd Member
Lease租期关键设置的租期,过期删除
Watch检测机制监控键值对的变化
Term任期某个节点成为Leader,到下一次竞选的时间
WAL预写式日志用户持久化存储的日志格式
Client客户端向etcd发起请求的客户端

ETCD 核心架构

在这里插入图片描述

  • etcd 是云原生架构中的存储基石,可以有效保证数据的一致性和可靠性。

  • etcd 内存实现机制复杂,但是对外提供了简单直接的api接口

  • 使用etcd的常见分布式场景包括键值对的存储服务注册与发现消息订阅与发布分布式锁等等

ETCD 组件架构

包名用途
auth访问权限
client/clientv3Go语言客户端SDK
embed主要是etcd的config
etcdmain入口程序
etcdctl命令行客户端实现
etcdserverserver主要的包
functional/hackCMD、Dockerfile 之类的杂项
integration和etcd集群相关
lease租约相关
mvccetcd的底层存储,包含Watch实现
pkg、proxyetcd使用的工具集合
raftraft算法模块
wal日志模块
scripts/security/tests/tools/version脚本、测试等相关内容

在这里插入图片描述

  • client 层:etcd 的客户端
  • API 接口层:提供了客户端访问服务端的通信协议和接口定义以及服务端节点之间相互通信的协议,通过gRPC-gateway提供REST ful 代理,转换HTTP/JSON请求为gRPC的Protocol Buffer格式的消息。
  • etcd Raft层:负责Leader选举和日志复制等功能。
  • 逻辑层:包括鉴权,租约,KVserver,MVCC和Compactor压缩等核心功能特点。
  • etcd存储:实现了快照,预写式日志WAL(Write Ahead Log)