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