【ETCD】ETCD Leader 节点写入数据流程概览

ops/2024/12/23 6:08:47/

<a class=etcd从主节点写入数据流程" />

ETCD 是一个广泛应用于分布式系统中的键值存储系统,它通过 Raft 共识算法保证数据的一致性。本文将基于提供的图片,按照编号对 ETCD Leader 节点处理写入请求的完整流程进行详细解析,帮助读者深入理解其核心工作原理。

目录

        • 1. 客户端发起写请求
        • 2. 转发请求至 Raft 子系统
        • 3. Leader 节点持久化请求至本地 WAL
        • 3'. 将日志转发给 Follower 节点
        • 4. Follower 节点写入 WAL
        • 5. Follower 确认日志复制完成
        • 6. Leader 标记事务为已提交
        • 7. 通知 etcd-server 层应用日志
        • 8. 异步同步数据到 BoltDB
        • 9. 返回客户端成功响应
      • 写入流程总结

1. 客户端发起写请求

客户端通过 gRPC 接口向 ETCD 的 Leader 节点发送写请求。写请求包含目标键值对等数据。此步骤标志着写操作的起点。

2. 转发请求至 Raft 子系统

Leader 节点接收客户端的写请求后,将请求转发给 Raft 子系统。Raft 子系统负责协调日志复制和一致性,确保分布式环境下写入操作的可靠性。

3. Leader 节点持久化请求至本地 WAL

Raft 子系统在 Leader 节点上将写请求记录到本地的 Write Ahead Log(WAL)。WAL 是一项预写日志机制,确保数据写入前先记录日志,提供可靠的故障恢复能力。

3’. 将日志转发给 Follower 节点

Leader 节点向集群中的 Follower 节点广播写入日志。通过 HTTP 请求,日志被传递至每个 Follower 节点,以实现分布式复制。

4. Follower 节点写入 WAL

Follower 节点接收日志后,首先将其写入本地的 WAL 日志文件中,确保即使发生节点故障,数据也能够从日志中恢复。

5. Follower 确认日志复制完成

Follower 节点完成 WAL 日志写入后,向 Leader 节点发送确认消息。Leader 节点统计来自多数派节点的确认信息,以此判定数据已成功复制。

6. Leader 标记事务为已提交

当 Leader 节点收到多数派节点(包括自己)的确认后,Raft 算法将此事务标记为“已提交”(Committed)。此时,该事务被认为已经在集群中达成一致。

etcdserver__41">7. 通知 etcd-server 层应用日志

Leader 节点通知上层的 etcd-server 模块,将已提交的日志应用到 MVCC(多版本并发控制)存储中。MVCC 存储可以支持高效的事务操作和数据多版本管理。

8. 异步同步数据到 BoltDB

在日志被应用到 MVCC 存储后,ETCD 异步将数据同步到磁盘文件中。BoltDB 是 ETCD 使用的嵌入式存储数据库,支持高效的磁盘存储操作。BoltDB 的数据同步每隔 100 毫秒进行一次,以避免阻塞写入路径,从而提高整体性能。

9. 返回客户端成功响应

在事务被成功提交并持久化到存储后,Leader 节点通过 gRPC 向客户端返回成功响应。这标志着整个写请求处理流程的结束。

写入流程总结

通过以上分析可以看出,ETCD 的 Leader 节点写入流程涉及多个关键组件与步骤,其设计在一致性与性能之间取得了平衡:

  • 一致性保障:通过 Raft 算法和 WAL 日志机制,保证数据写入的可靠性和集群一致性。
  • 性能优化:通过异步的 BoltDB 写入机制和高效的 MVCC 存储,提升了整体写入效率。

这些特点使 ETCD 成为现代分布式系统中不可或缺的基础设施之一。

希望本文对您理解 ETCD 写入流程有所帮助。如有疑问或建议,欢迎留言交流!


http://www.ppmy.cn/ops/143949.html

相关文章

多模态抽取图片信息的 Prompt

多模态抽取图片信息的 Prompt 1. 中文版2. 日文版3. 英文原版 下面使用多模态从图片中抽取文章&#xff0c;表格&#xff0c;Flowcharts的Prompt。 1. 中文版 你是一位擅长提取图片、图表、文本并对其进行解释的专家&#xff0c;能够保持原始语言不变。## 指南- 针对输入内容…

uniApp使用腾讯地图提示未添加maps模块

uniApp使用腾讯地图&#xff0c;打包提示未添加maps模块解决方案 这是报错信息&#xff0c;在标准基座运行的时候是没问题的&#xff0c;但是打包后会提示未添加&#xff0c;可以通过在mainfest里面把地图插件上腾讯地图的key更换高德地图的key&#xff0c;定位服务可以继续用腾…

电商API的未来展望:智能化、自动化与无缝集成

在数字化时代&#xff0c;电子商务行业正以前所未有的速度蓬勃发展。作为电商领域的重要组成部分&#xff0c;API&#xff08;应用程序编程接口&#xff09;接口的应用和发展趋势日益受到关注。API接口作为电商系统与外部服务或平台交互的桥梁&#xff0c;对电商数据的流动、处…

电商后台革命:RPA 自动化商品信息录入与更新【52rpa.com】

在当今快节奏的电商时代&#xff0c;高效的后台管理是电商企业成功的关键之一。随着科技的不断进步&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;技术正逐渐成为电商后台管理的强大助力&#xff0c;尤其是在商品信息录入与更新方面&#xff0c;发挥着巨大的作用。而…

[maven]使用spring

为了更好理解springboot&#xff0c;我们先通过学习spring了解其底层。 这里讲一下简单的maven使用spring框架入门使用。因为spring这一块的东西很多都需要联合起来后才好去细讲&#xff0c;本篇通过spring-context大致地介绍相关内容。 注意&#xff1a;spring只是一个框架&am…

拍摄要怎么打光比较好

以下是一些关于拍摄时打光的实用建议&#xff0c;能帮助你拍出更好的效果&#xff1a; 一、了解不同光的特性 1. 自然光&#xff1a; 自然光是最常见且免费的光源&#xff0c;不同时间段的自然光有着不同特点。例如早晨和傍晚时分的光线比较柔和&#xff0c;色彩偏暖&#xff0…

vue应用移动端访问缓慢问题

由于移动端的javascript处理引擎相对于pc端在处理复杂计算或大量数据时&#xff0c;可能会出现性能瓶颈&#xff0c;从而导致访问页面缓慢严重还会出现白屏情况&#xff0c;所以针对此问题做以下处理提升性能。 1、打包时压缩js文件 安装TerserPlugin插件 npm install terser…

搭建前端平台

node.js 下载 安装 node版本 npm npm是什么 npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;用于管理JavaScript依赖包。它允许开发人员从npm注册中心安装、升级和删除库和工具。 在你提供的代码片段中&#xff0c;package.json文件列…