【ETCD】ETCD 的一致性读(Linearizable Read)流程解析

embedded/2024/12/21 11:11:37/

ETCD中一致性读的主要流程如下所示
在这里插入图片描述

ETCD 的一致性读(Linearizable Read)流程分为以下几个步骤:

目录

      • 1. 客户端发送请求
      • 2. 请求追踪和阻塞等待 Raft 响应
      • **3. 请求 ReadIndex**
      • **4. Leader 确认自己状态**
      • **5. Leader 返回 ReadIndex**
      • **6. Follower 响应 ReadIndex**
      • **7. 等待 ReadIndex 应用到 MVCC**
      • **8. 向 MVCC 发送查询请求**
      • **9. MVCC 计算并返回结果**
      • **10. 返回响应给客户端**
      • **总结:关键点**

1. 客户端发送请求

  • 步骤 1:客户端向 ETCD 服务器etcd gRPC server)发送一个范围查询(Range Request)。

2. 请求追踪和阻塞等待 Raft 响应

  • 步骤 2:ETCD 服务器创建一个唯一的 Request ID 用于跟踪当前请求,并阻塞请求直到 Raft 模块给出响应。

3. 请求 ReadIndex

  • 步骤 3:Follower 节点向 Leader 节点请求最新的 ReadIndex(Leader 的已提交索引)。

4. Leader 确认自己状态

  • 步骤 4:Leader 节点通过发送 心跳(Heartbeat) 向 Follower 确认自己的领导身份并维持集群共识(quorum)。Follower 会向 Leader 返回心跳响应,确认 Leader 身份有效。

5. Leader 返回 ReadIndex

  • 步骤 5:Leader 节点将自己的最新 已提交索引(committedIndex) 作为 ReadIndex 发送给请求的 Follower 节点。

6. Follower 响应 ReadIndex

  • 步骤 6:Follower 节点接收到 Leader 返回的 ReadIndex 后,将其与本地已提交的条目进行比较,并返回一个阻塞的通道,直到本地节点的已提交条目与 Leader 的 ReadIndex 保持一致。

7. 等待 ReadIndex 应用到 MVCC

  • 步骤 7:ETCD 服务器等待所有已提交的日志条目都被应用到本地的 MVCC(多版本并发控制存储层)。

8. 向 MVCC 发送查询请求

  • 步骤 8:ETCD 服务器向 MVCC 存储层请求与客户端范围查询对应的键值数据。

9. MVCC 计算并返回结果

  • 步骤 9:MVCC 模块根据最新的 ReadIndex 数据计算出结果(确保数据是最新的),然后将查询结果返回给 ETCD 服务器

10. 返回响应给客户端

  • 步骤 10:ETCD 服务器将结果通过 gRPC 接口返回给客户端,完成一致性读请求。

总结:关键点

  1. ReadIndex 机制:通过 Leader 返回的 ReadIndex 确保数据读取的一致性,Follower 必须等待自己的状态与 Leader 的状态同步。
  2. Raft 共识:Leader 和 Follower 通过心跳确认领导身份并维持集群一致性。
  3. MVCC 存储:最终的数据查询和读取由 MVCC 处理,确保返回的是最新的、正确的键值数据。
  4. 阻塞机制:ETCD 服务器会阻塞客户端请求,直到本地节点的已提交状态与 Leader 保持一致。

这种机制保证了 ETCD 在分布式环境下提供 线性一致性(Linearizable) 的读取操作。


http://www.ppmy.cn/embedded/147511.html

相关文章

洛谷P2742 圈奶牛 (凸包 Andrew算法)

[USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 题目背景 upd: 新增一组 hack 数据。 题目描述 农夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏。他建造的围栏必须包括他的奶牛喜欢吃草的所有地点。对于给出的这些地点的坐标,计算…

最新D音滑块JS纯算法还原(含完整源码)

文章目录 1. 写在前面2. 接口分析2. 源码实现【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【🌟作者推荐】:对爬…

RIP协议的数据包

RIP协议的数据包 Request--请求包 Response---应答包 流程 1.设备首次启动RIP协议后,会向所有的直连接口发送request包,用来请求邻居发送路由信 息 2.其他设备收到请求包后,会利用response包传递路由信息 3.设备收到response包后&#…

STM32-笔记6-震动控制灯(中断法)

1、复制06工程文件,重命名07-震动控制灯(中断法) 打开工程文件 打开exti.c文件 将震动传感器的DO口接32板的A4引脚 更改代码 2、代码(老师的) exti.c #include "sys.h" #include "exti.h" …

专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。

考研成功上岸,苦尽甘来,专业818信号系统与数字电路125,总分400,被南理工录取,从最早信心满满,到中期犹豫不决,到后期破釜沉舟,一路颠颠簸簸,总算坚持过来了,群…

使用 Lambda 创建 Authorizer 对 API Gateway 访问进行鉴权

背景介绍 对于配置好的 API Gateway 资源来说, 默认会允许所有客户端进行访问. 我们可以配置 API key 进行简单的访问控制, 不过需要注意, API key 主要应用场景其实还是结合 Usage plan 对访问量进行控制, 并不提供鉴权的目的. 毕竟 API key 会作为一个静态的 Header x-api-k…

方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

【功能安全】硬件架构度量

目录 01 硬件架构度量介绍 02 硬件架构度量相关说明 03 硬件架构度量示例 04 硬件架构度量模板 01 硬件架构度量介绍 GBT 34590 2022 part5