真实删除一个topic,追踪磁盘上的目录从删除命令返回那一刻的重命名标记,到65秒后真正被物理擦除的完整过程,理解file.delete.delay.ms这个安全缓冲期真实的作用。
命令 · shell $ kafka-configs.sh --describe --entity-type topics --entity-name delete-test --all | grep delete.delay file.delete.delay.ms=60000 $ ls kafka-lab/node1/data/ | grep delete-test delete-test-0 $ kafka-topics.sh --delete --topic delete-test $ ls kafka-lab/node1/data/ | grep delete-test
删除前: delete-test-0 删除命令返回之后,立刻查磁盘: delete-test-0.05d33ffab70e4246aeab1ca9c9a6facd-delete
目录名字真实从delete-test-0变成了delete-test-0.05d33ffab70e4246aeab1ca9c9a6facd-delete——多了一段UUID和-delete后缀。这一步真实只是重命名,文件系统层面几乎是瞬间完成的,数据本身真实原封不动地还在磁盘上,只是从broker的正常视角里被标记成了"待删除",不会再被任何consumer或者produce请求访问到。
真实:目录已被真正删除
每一步都是本文上面真实观察磁盘目录跑出来的原始结果。