前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全网最通俗易懂的Kafka图解新建Topic,写入消息的原理

全网最通俗易懂的Kafka图解新建Topic,写入消息的原理

作者头像
公众号-利志分享
发布2022-04-25 09:28:37
6980
发布2022-04-25 09:28:37
举报
文章被收录于专栏:利志分享

回顾一下kafka相关的概念:

Kafka Broker新建Topic的大致流程

  1. Kafka Topic Client发出创建Topic请求,到Zookeeper两个配置路径:/config/topics/[topic]和/brokers/topics/[topic]
  2. KafkaController 在 ZooKeeper 的 /brokers/topics 节点上注册 watcher,当 topic 被创建,则 TopicChangeListener执行监听。
  3. KafkaController读取/brokers/topics读取,创建Topic主要是分区的创建,只要分区创建成功了,那么Topic也创建成功了。
  4. Topic分区创建之后,会涉及到分区状态和副本状态的转化,set AR(副本)和设置一个副本成为ISR中的Leader
  5. 回写上面的分区状态和ISR中Leader状态到/brokers/topics/[topic]/partitions/[partition]/state
  6. 通过RPC 向相关的 broker 发送 LeaderAndISRRequest,主要是同步Partition状态,Leader,ISR信息。

Kafka的Broker删除Topic的大致流程

  1. Kafka Topic Client发出删除Topic请求,发送到Zookeeper中/admin/delted_topics
  2. KafkaController中函数DeleteTopicsListener监听/admin/delted_topics数据变化,会出发handleChildChange回调函数,会触发Topic的删除。Topic会进入TopicDeletionManager的待删除列表,真正调用删除是Topic删除的具体任务。删除Topic是一个异步任务的过程。删除Topic最终其实是删除Replica,删除完Replicat之后会清理Topic相关的Zookeeper的数据。执行删除Topic最开始注销监听,然后执行删除Replica等一系列的事情。
  3. 最后清理topic相关zookeeper的数据。这样topic就最终被删除。

Kafka的Producer写入过程

  1. Producer 先从 Zookeeper 带有 "/brokers/.../state"标识的节点找到该 partition 的Broker节点(Leader节点)
  2. Producer将消息发送给该leader节点
  3. Leader将消息写入本地Log
  4. Leader发送消息给Follower
  5. Followers 从Leader pull消息,写入本地 log 后给Leader发送ACK
  6. Leader收到所有ISR中的Replica的ACK 后,增加HW(high watermark)最后commit 的 offset)
  7. Leader向Producer发送ACK
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 利志分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档