加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 运营中心 > Apache > 正文

Apache Kafka 分区重分配的实现原理解析

发布时间:2023-02-17 13:32:03 所属栏目:Apache 来源:互联网
导读:本文作者为中国移动云能力中心大数据团队软件开发工程师孙大鹏,本文结合 2.0.0 版本的 Kafka 源码,详细介绍了 Kafka 分区副本重分配的流程和逻辑,供大家参考。 一、前言 Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,旨在提供一个统一的、高吞

 
  1.确保目的路径/待移动分区在线
  2.如果当前分区副本的 log 路径不存在给定的目的路径并且 futureLogs(用于跨路径数据迁移的中间过程)也不包含目的路径,则在内存中记录当前分区副本和目的 logDir,即标记那些需要进行迁移的分区副本路径
  3.对于需要移动的分区副本,目的 broker 的路径中创建 future Log
  4.停止当前 Log 的清理工作,等待 future Log 同步完再清理
  5.创建 ReplicaAlterLogDirsThread,逐个 topic 逐个 partition 获取 fetchOffset、 logStartOffset 、fetchSize 等数据构造 Fetch 请求
  6.通过 ReplicaManager.fetchMessages 从分区副本 leader 获取数据,完成数据同步
 
 
  五、总结
  Kafka 分区重分配,通过 kafka-reassign-partitions 启动任务,将任务记录在元数据管理器 ZooKeeper  中,Kafka controller 通过对 ZooKeeper  的监测,发现相关任务通过和 broker 的交互按序处理相关的迁移任务,同时 controller 实时维护 ZooKeeper  中的元数据信息并进行相关变化的记录,保证在重分配过程中,不影响 topic 分区的正常使用,在任务完成后,再由 controller 负责 ZooKeeper  中重分配任务标记的清理,以便客户端验证重分配任务的结果。

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读