0x00 前言
前文 Raft 协议分析与实战(理论篇) 大致介绍了 Raft 算法的理论基础,本系列分析下 Etcd 的工程化实现,主要包括:
- 主要模块拆分
- 存储的实现
- Raft 库的实现
- Etcd-Server 实现
本文主要基于 V3 版本分析,版本号 3.1.10
Etcd 的整体架构
0x01 模块拆分
下图展示了 etcd 如何处理一个客户端请求涉及到的模块和流程。包括如下几个核心模块:
- etcd server:对外接受客户端的请求,请求 etcd 代码中的 etcd server 目录,其中还有一个 raft.go 的模块与 etcd raft 库进行通信。etcd server 中与存储相关的模块是 applierV3,这里封装了 V3 版本的数据存储, WAL,用于写数据日志,etcd 启动时会根据这部分内容进行恢复
- etcd raft:etcd 的 raft 库。除了与本节点的 etcd server 通信之外,还与集群中的其他 etcd server 进行交互一致性数据同步的工作 aDD
图源自 Etcd 存储的实现
0x02 Etcd 存储实现
0x0 参考
- Etcd Raft 库的工程化实现
- ETCD 连载
- etcd 实现 - 全流程分析
- Etcd 存储的实现
- etcd Raft 库解析
- Kubernetes 控制平面组件:etcd
- etcd 教程 (四)—etcd 架构及其实现简单分析
FEATURED TAGS
Latex
gRPC
负载均衡
OpenSSH
Authentication
Consul
Etcd
Kubernetes
性能优化
Python
分布式锁
WebConsole
后台开发
Golang
OpenSource
Nginx
Vault
网络安全
Perl
分布式理论
Raft
正则表达式
Redis
分布式
限流
go-redis
微服务
反向代理
ReverseProxy
Cache
缓存
连接池
OpenTracing
GOMAXPROCS
GoMicro
微服务框架
日志
zap
Pool
Kratos
Hystrix
熔断
并发
Pipeline
证书
Prometheus
Metrics
PromQL
Breaker
定时器
Timer
Timeout
Kafka
Xorm
MySQL
Fasthttp
bytebufferpool
任务队列
队列
异步队列
GOIM
Pprof
errgroup
consistent-hash
Zinx
网络框架
设计模式
HTTP
Gateway
Queue
Docker
网关
Statefulset
NFS
Machinery
Teleport
Zero Trust
Oxy
存储
Confd
热更新
OAuth
SAML
OpenID
Openssl
AES
微服务网关
IM
KMS
安全
数据结构
hashtable
Sort
Asynq
基数树
Radix
Crontab
热重启
系统编程
sarama
Go-Zero
RDP
VNC
协程池
UDP
hashmap
网络编程
自适应技术
环形队列
Ring Buffer
Circular Buffer
InnoDB
timewheel
GroupCache
Jaeger
GOSSIP
CAP
Bash
websocket
事务
GC
TLS
singleflight
闭包
Helm
network
iptables
MITM
HTTPS
Tap
Tun
路由
wireguard
gvisor
Git
NAT
协议栈
Envoy
FRP
DPI
gopacket
Cgroup
Namespace
DNS
eBPF
GoZero
Gost
Clash
gopsutil
HIDS
ELKEID
XDP
TC
Linux