当前位置: 首页 > 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 节点同步数据,保持集群一致性。

相关文章:

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

ETCD 的主要组件及它们之间的关联关系如下: 目录 1. Client(客户端)2. gRPC 接口3. Etcd Server Main Loop(ETCD 主循环)4. Raft(共识模块)5. Peer Etcd Nodes(ETCD 集群节点&#x…...

Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF(二…...

音视频学习(二十四):hls协议

基本原理 HLS协议通过将视频文件切分成多个小的媒体段(通常是10秒左右的.ts文件),并通过HTTP传输给客户端。视频播放过程中,客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率,以便适应不同网络条…...

UniDepth 学习笔记

摘要 准确的单目度量深度估计(MMDE)是解决三维感知和建模中下游任务的关键。然而,最近的MMDE方法的显著准确性仅限于其训练领域。这些方法存在适度的域间隙,也不能推广到看不见的域,这阻碍了它们的实际适用性。本文提出…...

PVE——OpenWRT 硬盘 size单位的调整

​​​​​ 问题:初始状态为120MB 还需要进行计算,如果通过图形界面添加磁盘会出现单位不变的情况。 进入命令行前记得给你的虚拟机拍照,防止误操作 通过ssh 进入PVE命令行 按需添加容量即可 不到1G 会显示M 超过1G 不是G整数均为M单位。 …...

Android-ImagesPickers 拍照崩溃优化

Android-ImagesPickers 作为老牌图片选择器,帮助了很多牛马宝宝,刚好最近用到了多相册选择以及拍照,可能是高版本机型问题,导致拍照后就闪退 原作者文章以及git Android实用视图动画及工具系列之九:漂亮的图片选择器…...

Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)

这段代码是一个模仿 Linux dd 命令的工具,它用于在不同文件之间复制数据。dd 是一个非常强大的命令行工具,可以用于数据备份、转换和复制。下面我将详细解释这段代码的原理、实现方式以及如何运行和测试。 Linux dd 命令的工作原理 dd 命令是 Unix 和 …...

Golang学习历程【第一篇 入门】

Golang学习历程【第一篇 入门Hello World】 1. 学习文档2. Window 本地安装Go2.1 安装2.2 验证 3. 开发环境——VsCode3.1 VsCode 安装3.2 安装插件3.2.1 language 语言汉化插件安装3.2.2 Go插件安装 4. Hello World 入门4.1 建工程4.2 创建项目文件4.3 编写Hello World程序4.4…...

青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序

青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序 课题摘要:一、Web应用程序二、Web服务器(一)什么是Web服务器(二)Web服务器配置1. 选择服务器软件2. 安装服务器软件3. 配置服务器4. 安全设置5. 部署网站内容6. 测试服…...

【mysql】如何解决主从架构从库延迟问题

目录 1. 说明2.优化主库的写入性能3. 优化网络性能4. 增强从库的硬件性能5. 调整从库的配置6. 主从架构优化7. 监控和调优8.使用 GTID 和 Group Replication 1. 说明 1.在 MySQL 数据库中,从库延迟(replication lag)是指主库和从库之间的数据…...

前端学习-获取DOM对象(二十一)

目录 前言 目标 提问 学习路径 根据CSS选择器来获取DOM元素 其他获取DOM元素的方法 根据CSS选择器来获取DOM元素 选择匹配的第一个元素 语法 示例 参数 返回值 选择匹配的多个元素语法 参数 字符串返回值 示例 补充 其它获取DOM元素方法 根据id获取一个元素 …...

PCL点云库入门——PCL库中Eigen数学工具库的基本使用(持续更新)

0、前言 PCL点云库中的算法都基于Eigen数学工具库来实现的,因此,掌握Eigen库对于深入理解和应用PCL点云库至关重要。Eigen库不仅提供了高效的矩阵和向量运算,还支持复杂的线性代数、几何变换等操作,为PCL点云处理提供了强大的数学…...

CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示

CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示 1. Parameter hints for C/C1.1. Toggle parameter hints globally 2. Type hints for C/C2.1. Toggle type hints globally 3. Toggle inlay hints globallyReferences https://www.jetbrains.com/help/clio…...

2025山东科技大学考研专业课复习资料一览

[冲刺]2025年山东科技大学020200应用经济学《814经济学之西方经济学[宏观部分]》考研学霸狂刷870题[简答论述计算题]1小时前[强化]2025年山东科技大学085600材料与化工《817物理化学》考研强化检测5套卷22小时前[冲刺]2025年山东科技大学030100法学《704综合一[法理学、国际法学…...

vue3 v-model实例之二,tab标签页的实现

<template><div><Tab v-model"activeTab" :list"tabs" /><div><p>当前激活的 Tab 索引: {{ activeTab }}</p></div></div> </template><script setup> import { ref } from vue; import Tab …...

东方通TongWeb7.0.4.9M4部署SuperMap iServer 11.2.1

一、软件版本 操作系统: CentOS Linux release 7.5.1804 (Core)JDK:11.0.18东方通&#xff1a;TongWeb7.0.4.9M4SuperMap iServer&#xff1a;11.2.1 JDK和TongWeb软件分享&#xff1a; 链接: https://pan.baidu.com/s/1HGDTPnPID0PEOMbg3FjTVQ?pwdbh8v 提取码: bh8v 东方通软…...

QT绘制同心扇形

void ChartForm::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 设置抗锯齿painter.save();// 设置无边框&#xff08;不需要设置QPen&#xff0c;因为默认是不绘制边框的&#xff09;QPen pen(Qt::NoPen);// QPen pen…...

2012年西部数学奥林匹克试题(几何)

2012/G1 △ A B C \triangle ABC △ABC 内有一点 P P P, P P P 在 A B AB AB, A C AC AC 上的投影分别为 E E E, F F F, 射线 B P BP BP, C P CP CP 分别交 △ A B C \triangle ABC △ABC 的外接圆于点 M M M, N N N. r r r 为 △ A B C \triangle ABC △ABC 的内…...

8位移位寄存器的verilog语言

module shift_register (output reg [7:0] Q, // 8位移位寄存器输出input D, // 输入数据input rst, // 复位信号input clk // 时钟信号 );always (posedge clk) beginif (!rst)Q < 8b00000000; // 复位时将Q清零elseQ < {Q[6:0], D}; // 否则…...

【苍穹外卖】学习心得体会-随笔

前言 写了很久&#xff0c;终于可以完整运行项目了&#xff0c;记录下这几天的心得体会回顾一下知识点 第一天、Git 分布式版本控制工具 一、Git概述 定义&#xff1a;是分布式版本控制工具&#xff0c;用于管理软件开发中的源代码文件&#xff0c;像Java类、xml文件、html…...

3个技巧让你轻松获取Steam创意工坊资源:WorkshopDL的跨平台下载解决方案

3个技巧让你轻松获取Steam创意工坊资源&#xff1a;WorkshopDL的跨平台下载解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在游戏模组爱好者的日常中&#xff0c;总会…...

Linux内核驱动开发入门:我是如何给一个虚拟CDC ACM设备写“Hello World”驱动的

Linux内核驱动开发入门&#xff1a;手把手实现虚拟CDC ACM设备驱动 第一次接触Linux内核驱动开发时&#xff0c;面对复杂的代码结构和晦涩的概念&#xff0c;我完全摸不着头脑。直到导师扔给我一个USB转串口设备&#xff1a;"试试看能不能让它在Linux上工作"。经过两…...

AgentCPM-Report部署教程:Pixel Epic在Ubuntu/CentOS下的环境配置

AgentCPM-Report部署教程&#xff1a;Pixel Epic在Ubuntu/CentOS下的环境配置 1. 项目介绍 Pixel Epic是一款基于AgentCPM-Report大模型构建的研究报告辅助终端&#xff0c;它将枯燥的科研工作转化为一场像素风格的RPG冒险体验。与传统AI工具不同&#xff0c;Pixel Epic采用了…...

Open-AutoGLM场景实战:电商购物、出行旅游、内容浏览一键完成

Open-AutoGLM场景实战&#xff1a;电商购物、出行旅游、内容浏览一键完成 1. 引言&#xff1a;手机AI助手的革命性突破 想象一下这样的场景&#xff1a;早上醒来&#xff0c;你对手机说"帮我订一杯星巴克拿铁和一份三明治"&#xff0c;手机自动完成打开外卖应用、选…...

Lychee Rerank MM实战教程:自定义Instruction提升特定领域重排序效果

Lychee Rerank MM实战教程&#xff1a;自定义Instruction提升特定领域重排序效果 1. 快速了解Lychee Rerank MM Lychee Rerank MM是一个专门解决多模态检索问题的智能系统。想象一下这样的场景&#xff1a;你在电商平台搜索"红色连衣裙"&#xff0c;系统返回了几十…...

Pixel Aurora Engine 赋能内容运营:社交媒体图文批量创作方案

Pixel Aurora Engine 赋能内容运营&#xff1a;社交媒体图文批量创作方案 1. 新媒体运营的配图痛点 每天打开电脑&#xff0c;新媒体运营小李都要面对同样的挑战&#xff1a;今天发什么图&#xff1f;从封面到内文配图&#xff0c;再到各种节日节气海报&#xff0c;原创设计根…...

C++ 异常安全与 RAII 模式结合

C异常安全与RAII模式结合&#xff1a;构建健壮资源管理体系 在C开发中&#xff0c;异常处理与资源管理是保证程序健壮性的核心挑战。传统的手动资源释放容易因异常抛出导致泄漏&#xff0c;而RAII&#xff08;资源获取即初始化&#xff09;模式通过对象生命周期自动化管理资源…...

单例模式全解析:5种写法 + 破坏与防护

文章目录什么是单例模式?实现方式饿汉式懒汉式方式一&#xff08;线程不安全&#xff09;方式二&#xff08;同步方法&#xff09;方式三&#xff08;双重检查锁 DCL&#xff09;枚举什么是单例模式? 保证一个类在全局只有一个实例&#xff0c;并提供一个全局访问点。 适用场…...

word简历模板(含范文),免费下载

word简历模板导言 在竞争激烈的求职市场中&#xff0c;一份专业、个性化的简历是叩开理想企业大门的关键。简历不仅是个人经历的罗列&#xff0c;更是能力、潜力与职业规划的集中体现。然而&#xff0c;许多求职者因缺乏经验或模板参考&#xff0c;难以突出自身优势&#xff0…...

SearXNG 高级部署方案:自带反向代理的专家级配置

SearXNG 高级部署方案&#xff1a;自带反向代理的专家级配置 【免费下载链接】searxng-docker The docker-compose files for setting up a SearXNG instance with docker. 项目地址: https://gitcode.com/gh_mirrors/se/searxng-docker 想要快速搭建一个安全、隐私保护…...