kafka删除topic详解

1.删除topic命令文章地址https://www.yii666.com/article/758066.html

 bin/kafka-topics.sh --delete --zookeeper 192.168.242.131:2181 --topic aaa

注:此命令如果要生效,还需在server.properties中添加:文章来源地址https://www.yii666.com/article/758066.html网址:yii666.com<网址:yii666.com

delete.topic.enable=true

控制台也会有返回提示信息:文章来源地址:https://www.yii666.com/article/758066.html

Topic aaa is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
 
2.删除topic相关逻辑
 
1. Kafka controller在启动的时候会注册对于Zookeeper节点/admin/delete_topics的子节点变更监听器——上面的分析已经告诉我们,delete命令实际上就是要在该节点下创建一个临时节点,名字是待删除topic名,标记该topic是待删除的
2. Kafka controller在启动时创建一个单独的线程,执行topic删除的操作 (由DeleteTopicsThread类实现)
3. 线程启动时查看是否有需要进行删除的topic——假设我们是在controller启动之后执行的topic删除命令,那么该线程刚启动的时候待删除的topic集合应该就是空的
4. 一旦发现待删除topic集合是空,topic删除线程会被挂起
5. 这时,我们执行delete操作,删除topic: test-topic,delete命令在/admin/delete_topics下创建子节点test-topic
6. 监听器捕获到该变更,立刻触发删除逻辑
    6.1 查询test-topic是否存在,不存在的话直接删除/admin/delete_topics/test-topic节点——随便删除一个不存在的topic,删除命令也只是创建/admin/delete_topics/[topicName]的节点,它不负责做存在性校验
    6.2 查询一下test-topic是不是当前正在执行Preferred副本选举或分区重分配,如果是的话,肯定是不适合进行删除掉的。Controller本地会缓存当前无法进行删除的topic集合,待分区重分配完成或preferred副本选举后单独处理该集合中的topic
    6.3 如何两者都不是的话说明现在可以进行删除操作,那么就恢复挂起的删除线程执行删除操作
 
删除线程执行删除操作的真正逻辑是:
1. 它首先会给当前所有broker发送更新元数据信息的请求,告诉这些broker说这个topic要删除了,你们可以把它的信息从缓存中删掉了
2. 开始删除这个topic的所有分区
    2.1 给所有broker发请求,告诉它们这些分区要被删除。broker收到后就不再接受任何在这些分区上的客户端请求了
    2.2 把每个分区下的所有副本都置于OfflineReplica状态,这样ISR就不断缩小,当leader副本最后也被置于OfflineReplica状态时leader信息将被更新为-1
    2.3 将所有副本置于ReplicaDeletionStarted状态
    2.4 副本状态机捕获状态变更,然后发起StopReplicaRequest给broker,broker接到请求后停止所有fetcher线程、移除缓存,然后删除底层log文件
    2.5 关闭所有空闲的Fetcher线程
3. 删除zookeeper下/brokers/topics/test-topic节点
4. 删除zookeeper下/config/topics/test-topic节点
5. 删除zookeeper下/admin/delete_topics/test-topic节点
6. 更新各种缓存,把test-topic相关信息移除出去
 
详见:http://www.cnblogs.com/huxi2b/p/4842695.html
 

版权声明:本文内容来源于网络,版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。文本页已经标记具体来源原文地址,请点击原文查看来源网址,站内文章以及资源内容站长不承诺其正确性,如侵犯了您的权益,请联系站长如有侵权请联系站长,将立刻删除

kafka删除topic详解-相关文章

  1. kafka入门2:java 创建及删除 topic

  2. kafka删除topic及其相关数据

  3. kafka删除topic详解

  4. kafka 删除topic

  5. kafka删除topic

  6. kafka删除一个topic

  7. Kafka如何彻底删除topic及数据

  8. Kafka Java API操作topic

    Kafka官方提供了两个脚本来管理topic,包括topic的增删改查。其中kafka-topics.sh负责topic的创建与删除;kafka-configs.sh脚本负责topic的修改和查询,但很多用户都更加倾向于使用程序API的方式对topic进行操作。 上一篇文章中提到了如何使用客户端协议(client protocol)来创建topic,本文则

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信图片_20190322181744_03.jpg

微信扫一扫打赏

请作者喝杯咖啡吧~

支付宝扫一扫领取红包,优惠每天领

二维码1

zhifubaohongbao.png

二维码2

zhifubaohongbao2.png