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保存不稳定的记录。