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

news/2024/12/19 6:17:31/

在这里插入图片描述

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.ppmy.cn/news/1556318.html

相关文章

(教程)如何在HTML网页里嵌入PDF文件?

开发者可以使用不同的标签在 HTML 中嵌入 PDF 文件&#xff0c;常见的有 <embed>、<object> 和 <iframe>。它们都能在网页应用中显示 PDF&#xff0c;但哪种方式更好&#xff1f;有没有比这更好的方式来在浏览器中显示 PDF&#xff1f; 方法 1&#xff1a;使…

C#轻松实现Winform监控文件夹变化以及监控文件新增、修改、删除、重命名等操作保姆级详细教程

文章目录 一、前言二、FileSystemWatcher 类三、FolderBrowserDialog 类四、具体操作1.设置监听文件夹2.订阅变更事件3.注意事项 一、前言 在开发应用程序时&#xff0c;我们可能会因为场景的需要&#xff0c;要对文件系统中的文件或文件夹进行实时监测&#xff0c;以便在文件…

NFT市场回暖:蓝筹项目成为复苏主力,空投潮助推价格上涨

随着2024年临近&#xff0c;NFT市场展现出强劲的回暖迹象。多个头部NFT项目公布了代币发行计划&#xff0c;并且随之而来的一波空投潮让市场活力再现。Magic Eden、Pudgy Penguins等项目的动向&#xff0c;成为了推动NFT市场复苏的重要力量。通过空投、代币生成事件&#xff08…

ES-IndexTemplate和DynamicTemplate

IndexTemplate 什么是IndexTemplate 索引模板&#xff0c;帮助你设定Mappings和Settings&#xff0c;并按照一定的规则&#xff0c;自动匹配到新创建的索引之上 模板仅在一个索引被新建的时候&#xff0c;才会产生应用&#xff0c;索引被修改不会影响已创建的索引可以设定多…

Maven 生命周期

文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期&#xff1a; Clean 生命周期&#xff1a; clean&#xff1a;删除目标目录中的编译输出文件。这通常是在构建之前执行的&#xff0c;以确保项目从一个…

单片机STM32、GD32、ESP32开发板的差异和应用场景

STM32&#xff1a;意法半导体在 2007 年 6 月 11 日发布的产品&#xff0c;32位单片机。 GD32&#xff1a;兆易创新 2013 年发布的产品&#xff0c;在芯片开发、配置、命名上基本模仿 STM32&#xff0c;甚至 GPIO 和 STM32 都是 pin to pin 的&#xff0c;封装不改焊上去直接用…

计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

接口自动化测试用例详解

phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口&#xff0c;需要对接口头部进行封装&#xff0c;所以没有办法在浏览器下直接调用&#xff0c;但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例&#xff0c;讲解…