0. ETCD简介
本文将从以下几个方面来分析 ETCD (v3.3.12
)。
- 整体架构
- 启动过程
- 数据存储
- 通信方式
- TTL实现原理
- Lease实现原理
- 单次事务过程
- 线性一致性读过程
- Watch机制
在介绍上面所有过程之前,我们先来介绍下 ETCD的整体架构以及相关名词术语。
1 | - Node:一个Raft状态机节点; |
peer
间通信消息类型:
1 | - MsgHup // 不用于节点间通信,仅用于发送给本节点让本节点进行选举 |
Etcd
整体架构图如下:
下面将简单介绍下:
etcd
面向client
和peer
节点开放http
服务以及grpc
服务,对于像watch
机制就是基于grpc
的stream
通信模式实现的;EtcdServer
是etcd
上层结构体,其负责对外提供服务,且负责应用层的实现,比如操作应用层存储器,管理leassor
、watch
;raftNode
负责上层与raft
层的衔接。其负责将应用的需求传递到raft
中进行处理(通过Step
函数)、在消息发送到其他节点前将消息保存到WAL
中、调用传输器发送消息;raft
是raft
协议的承载者;raftLog
用于存储状态机信息:memoryStorge
保存稳定的记录,unstable
保存不稳定的记录。