当前位置: 首页 > news >正文

RAFT 共识算法

Leader - Follower 消息同步

image

以Kafka为例子
在 Kafka 中,Leader 节点确保所有 Follower 节点成功接收消息的机制,主要通过 ISR(In-Sync Replicas,同步副本列表)acks 消息确认机制 实现,具体流程如下:

1. 核心机制:ISR 列表与同步确认

  • ISR 列表:每个分区的 Leader 会维护一个 ISR 列表,记录与自己保持同步的 Follower 节点(包括 Leader 自身)。
    Follower 需满足两个条件才能留在 ISR 中:

    • 与 Leader 保持网络连接(通过定期 heartbeat 心跳机制确认存活);
    • 消息同步进度不落后于 Leader 太多(可通过 replica.lag.time.max.ms 配置容忍的最大同步延迟,默认 30 秒)。
  • 消息同步流程

    1. 生产者发送消息到 Leader 后,Leader 将消息写入本地日志;
    2. Follower 定期向 Leader 发送拉取请求(FetchRequest),同步新消息并写入本地日志;
    3. Follower 同步完成后,向 Leader 返回确认(FetchResponse);
    4. Leader 收到 Follower 的确认后,更新该 Follower 的同步进度,确保其留在 ISR 中。

2. 确保所有 Follower 接收的关键配置:acks 参数

生产者通过设置 acks 参数,控制 Leader 何时向生产者返回“消息发送成功”的确认,从而间接确保 Follower 同步状态:

  • acks=all(或 -1)时
    Leader 必须等待 ISR 中所有副本(包括所有 Follower) 都成功写入消息后,才向生产者返回确认。
    这是最严格的配置,可确保消息被所有同步的 Follower 接收(只要它们在 ISR 中)。

  • 其他 acks 配置的区别

    • acks=1(默认):仅 Leader 写入成功后即返回确认,不等待 Follower 同步(可能存在 Follower 未收到的风险);
    • acks=0:Leader 接收消息后立即返回确认,不等待写入本地日志(可靠性最低)。

3. 异常处理:Follower 同步失败的情况

  • 若某个 Follower 长时间未同步(超过 replica.lag.time.max.ms),Leader 会将其从 ISR 中移除;
  • 此时若 acks=all,Leader 只需等待 剩余 ISR 中的副本 确认即可(无需等待已脱离 ISR 的 Follower);
  • 若需严格确保“最初配置的 2 个 Follower 都必须收到”,需结合以下配置:
    • min.insync.replicas=N(例如设置为 3,即 Leader + 2 Follower 都在 ISR 中才允许写入);
    • 同时保证 acks=all,此时若任何一个 Follower 脱离 ISR,生产者会收到异常(NotEnoughReplicasException),需重试直到所有 Follower 同步完成。

总结

要确保 2 个 Follower 都收到消息,需满足:

  1. 生产者配置 acks=all
  2. 2 个 Follower 均处于 ISR 列表中(同步正常);
  3. 可选配置 min.insync.replicas=3(强制要求 Leader + 2 Follower 都同步成功,否则拒绝写入)。

通过这套机制,Kafka 既能保证消息可靠同步到 Follower,又能通过 ISR 动态调整同步范围,避免因个别节点故障导致整个集群不可用。

投票

当client端写请求给follower,请求会被重定向到leader
follower 150-300 ms收不到leader请求,就转化为候选人角色,开启投票。

投票的信息内容:日志的数据量,term的轮数

http://www.rkmt.cn/news/18979.html

相关文章:

  • 2025氧化镁厂家最新推荐榜:高纯度与优质服务并重的行业先锋
  • contenteditable 深度交互教程
  • 【gradio】使用Gradio快速开发前端界面:基础知识
  • 2025风机盘管厂家口碑推荐榜:高效节能与稳定性能的行业首选
  • Open WebUI:打造友好且强大的自托管 AI 平台
  • 基于MATLAB的多棵树分类器(随机森林)
  • 2025双氧水厂家最新推荐榜:品质卓越与环保安全的首选品牌!
  • 2025氧化镁厂家最新推荐榜:高纯度与稳定性能的行业佼佼者!
  • 个人博客作业 1:就《现代软件工程》提 5 个问题
  • 解决FinalShell无法本地连接虚拟机(VMware)中的Linux的问题
  • xshell把界面转发到xming
  • 内存分析记录
  • 2025 年图书杀菌机生产厂家最新推荐排行榜:聚焦高效杀菌技术与优质服务,优质企业全面盘点自助图书/臭氧图书/消毒图书/图书杀菌机厂家推荐
  • 有度新版本:反向登录、文件路径自定义、有度极速版…管理更自主,切换更顺畅
  • JS使用Regex校验出现卡顿
  • 2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!
  • 2025 净化铝型材十大品牌之一优选,推荐龙新铝业,最快24小时内发货
  • 2025 权威推荐!净化铝型材品牌 TOP5 排行榜:实力厂家精选,品质之选不容错过
  • 车辆主动悬架线性最优控制(LQR)系统
  • 2025环保/植物/净醛/健康/无味腻子粉厂家推荐榜:专注多场景墙面基底解决方案供应!
  • 2025 工控/核心板/工业/嵌入式主板板卡厂家推荐排行榜:聚焦多领域智能硬件核心供应!
  • 2025 高压/高压空气/氦气/氩气压缩机厂家推荐榜:聚焦多场景压缩空气解决方案!
  • HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南
  • SQL查询,直接生成json结果
  • 变量、常量和作用域
  • MyEMS + 边缘网关:偏远基站如何实现 “无人值守” 下的精准能耗管理?
  • 2025 云栖精选资料:《从云原生到 AI 原生核心技术与最佳实践》PPT 免费下载
  • 基于模拟退火的粒子群优化算法的解析
  • 总线死锁验证方法
  • FPGA MT25QL FLASH