当前位置: 首页 > 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…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...