当前位置: 首页 > news >正文

【ETCD】ETCD 架构揭秘:内部各组件概览

在这里插入图片描述

ETCD 的主要组件及它们之间的关联关系如下:

目录

      • 1. Client(客户端)
      • 2. gRPC 接口
      • 3. Etcd Server Main Loop(ETCD 主循环)
      • 4. Raft(共识模块)
      • 5. Peer Etcd Nodes(ETCD 集群节点)
      • 6. MVCC(多版本并发控制)
      • 7. Write Ahead Log(WAL)
      • 8. BoltDB(持久化存储)
      • 总结:组件之间的关联关系

1. Client(客户端)

  • 作用:客户端通过 gRPC 协议与 ETCD 服务器进行通信,发送请求(例如键值存储、查询、删除等操作)。
  • 关联:客户端通过 gRPC 接口将请求发送到 ETCD 服务器。

2. gRPC 接口

  • 作用:gRPC 是 ETCD 对外提供服务的通信接口,负责接收客户端请求并将请求交给 ETCD 服务的主循环进行处理。
  • 关联:gRPC 接口是客户端与 ETCD 服务主循环的桥梁,提供了高效的 RPC 通信机制。

3. Etcd Server Main Loop(ETCD 主循环)

  • 作用:ETCD 的主循环负责处理客户端请求,包括键值存储、事务操作等。它会将请求进一步传递给 Raft 模块或 MVCC 存储层。
  • 关联:
    • 将写请求交给 Raft 模块 处理。
    • 通过 MVCC 管理键值数据的版本。
    • 数据持久化到 WALBoltDB

4. Raft(共识模块)

  • 作用:Raft 是 ETCD 实现分布式一致性的核心模块,它确保所有节点(Leader 和 Follower)之间的数据一致。
    • 处理写操作:Leader 节点接收请求并将其同步给其他 Peer 节点。
    • 数据复制:将操作日志同步到集群中的其他节点。
    • 管理节点状态:选举 Leader、故障恢复等。
  • 关联:
    • 通过 Raft HTTP(P2P) 与其他 Peer Etcd Nodes 进行日志同步。
    • 操作日志被存储到 Write Ahead Log(WAL)
    • 成功的操作通过 MVCC 应用到存储中。

5. Peer Etcd Nodes(ETCD 集群节点)

  • 作用:集群中的其他 ETCD 节点(Peer Nodes)与 Leader 节点进行同步,确保数据副本的一致性。
  • 关联:
    • 通过 Raft HTTP(P2P) 与 Leader 节点通信,接收日志复制。
    • 确保每个节点的数据和状态保持一致。
    • 从 Raft 接收到的操作会存储到本地的 WALBoltDB

6. MVCC(多版本并发控制)

  • 作用:MVCC 是 ETCD 的数据存储机制,管理键值对及其多个版本。每次修改键值对时,都会生成一个新的版本。
  • 关联:
    • 数据修改请求通过 Raft 模块 确认后,会被提交给 MVCC。
    • MVCC 数据最终会持久化存储到 BoltDB
    • MVCC 通过 版本号(revision) 记录数据的历史。

7. Write Ahead Log(WAL)

  • 作用:WAL 记录所有写操作的日志,保证数据在崩溃时的持久化和恢复。
    • 在操作提交到存储(BoltDB)之前,先写入 WAL。
    • 日志可以用于崩溃恢复。
  • 关联:
    • Raft 模块的操作日志首先写入 WAL,保证数据不会丢失。
    • WAL 日志之后被应用到 MVCCBoltDB,实现数据的最终存储。

8. BoltDB(持久化存储)

  • 作用:BoltDB 是 ETCD 的底层存储引擎,它将 MVCC 数据持久化存储到磁盘,提供高效的键值查询和事务支持。
  • 关联:
    • WAL 中的操作日志最终会被写入 BoltDB。
    • MVCC 的数据版本和键值存储都依赖于 BoltDB 进行持久化。

总结:组件之间的关联关系

  1. 客户端 通过 gRPC 接口 与 ETCD 服务通信。
  2. ETCD 主循环 处理客户端请求,涉及 Raft 和 MVCC。
  3. Raft 模块
    • 负责数据的一致性,将操作日志复制到其他 Peer Etcd Nodes
    • 日志操作会先存储到 WAL
  4. WAL 记录操作日志,提供数据恢复支持。
  5. MVCC 处理数据的多版本存储,并最终将数据写入 BoltDB
  6. BoltDB 持久化 MVCC 数据,提供数据存储和查询功能。
  7. Peer Etcd Nodes 通过 Raft 协议与 Leader 节点同步数据,保持集群一致性。
http://www.lryc.cn/news/505885.html

相关文章:

  • Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
  • 音视频学习(二十四):hls协议
  • UniDepth 学习笔记
  • PVE——OpenWRT 硬盘 size单位的调整
  • Android-ImagesPickers 拍照崩溃优化
  • Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
  • Golang学习历程【第一篇 入门】
  • 青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序
  • 【mysql】如何解决主从架构从库延迟问题
  • 前端学习-获取DOM对象(二十一)
  • PCL点云库入门——PCL库中Eigen数学工具库的基本使用(持续更新)
  • CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示
  • 2025山东科技大学考研专业课复习资料一览
  • vue3 v-model实例之二,tab标签页的实现
  • 东方通TongWeb7.0.4.9M4部署SuperMap iServer 11.2.1
  • QT绘制同心扇形
  • 2012年西部数学奥林匹克试题(几何)
  • 8位移位寄存器的verilog语言
  • 【苍穹外卖】学习心得体会-随笔
  • MySQL学习之表的增删改
  • 电脑excel词典(xllex.dll)文件丢失是或损坏是什么原因?“xllex.dll文件缺失“要怎么解决?
  • 【CSS in Depth 2 精译_084】第 14 章:CSS 蒙版、形状与剪切概述 + 14.1:CSS 滤镜
  • gorm源码解析(四):事务,预编译
  • 前端优雅(装逼)写法(updating····)
  • 黑马Java面试教程_P7_常见集合_P4_HashMap
  • 使用 CFD 加强水资源管理:全面概述
  • XXE练习
  • R语言读取hallmarks的gmt文档的不同姿势整理
  • 【Nginx-4】Nginx负载均衡策略详解
  • Python 的 Decimal的错误计算