🔥《Kafka运维管控平台》🔥 ✏️更强大的管控能力✏️ 🎾更高效的问题定位能力🎾 🌅更便捷的集群运维能力🌅 🎼更专业的资源治理🎼 🌞更友好的运维生态🌞
相关免费专栏 🔥《Kafka面试100例》🔥 🔥《从0开始学kafka》🔥
打卡日更 🔥《Kafka面试100例》🔥
当前更文情况:: 4 / 100
先说结论: 根据上面分析过的源码画出的时序图可以指定; 客户端发起创建Topic的请求,本质上是去zk里面写两个数据
- topic的配置信息
/config/topics/Topic名称
持久节点- topic的分区信息
/brokers/topics/Topic名称
持久节点
所以我们绕过这一步骤直接去写入数据,可以达到一样的效果;不过我们的数据需要保证准确
因为在这一步已经没有了一些基本的校验了; 假如这一步我们写入的副本Brokerid不存在会怎样,从时序图中可以看到,leaderAndIsrRequest请求
; 就不会正确的发送的不存在的BrokerId上,那么那台机器就不会创建Log文件;下面不妨让我们来验证一下;
创建一个节点/brokers/topics/create_topic_byhand_zk
节点数据为下面数据;{"version":2,"partitions":{"2":[3],"1":[3],"0":[3]},"adding_replicas":{},"removing_replicas":{}}
这里我用的工具PRETTYZOO
手动创建的,你也可以用命令行创建;
创建完成之后我们再看看本地有没有生成一个Log文件
可以看到我们指定的Broker,已经生成了对应的分区副本Log文件;
而且zk中也写入了其他的数据
在我们写入zk数据的时候,就已经确定好了哪个每个分区的Leader是谁了,那就是第一个副本默认为Leader
你好,我是石臻臻,工作8年的互联网老兵,丰富的开发和管理经验, 现在任职于「 滴滴技术专家 」岗位,从事开源建设工作,公众号讲解 Java/中间件/大数据 等技术栈相关内容,欢迎关注石臻臻,进滴滴 「 高质量 」 「 滴滴开源技术答疑群 」 , 群内每周技术专家轮流值班答疑,加石臻臻微信交个朋友,交流交流技术分享分享生活,每周五晚上8点抽奖送书 ,欢迎加我微信