我们上一章介绍了中间件:Zookeeper,本章将介绍另外一个中间件:Kafka。目前这2个中间件都是基于JAVA语言的。
我们前面在部署Kafka的时候,选择的是需要ZooKeeper支持的版本,在 Kafka 2.8 之前的版本中,ZooKeeper 承担了以下关键职责:
#这里重启了broker节点,就触发了控制节点重新选举
[zk: localhost:2181(CONNECTED) 10] get /kafka/controller
{"version":1,"brokerid":0,"timestamp":"1748188211809"}
[zk: localhost:2181(CONNECTED) 11] get /kafka/controller
{"version":1,"brokerid":1,"timestamp":"1748188273615"}
我们下面就登录到ZooKeeper里面看看数据存储是什么样的。
#这是一个3节点Kafak 集群在ZK里面存储
#为了方便管理,单独启用一个znode目录
[zk: localhost:2181(CONNECTED) 3] ls /kafka
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification]
/admin
/delete_topics
:记录待删除的 Topic 列表(标记 Topic 为待删除状态)。/reassign_partitions
:分区副本重分配任务的状态(手动调整分区副本分布时生成)。/brokers
/ids
:每个 Broker 的注册信息,以 Broker ID 命名(如 /brokers/ids/0
),存储 JSON 格式的 Broker 元数据(IP、端口、版本等)。/topics
:Topic 的分区副本分配信息(AR, Assigned Replicas),例如每个 Topic 的分区分布到哪些 Broker。[zk: localhost:2181(CONNECTED) 23] get /kafka/brokers/topics/new-topic1
{"partitions":{"0":[0,1,2],"1":[1,2,3],"2":[2,3,4],"3":[3,4,0],"4":[4,0,1]},"topic_id":"Z8p3dNm9TNqLiS8rBz8pxw","adding_replicas":{},"removing_replicas":{},"version":3}
/cluster
/id
:集群的唯一标识符(Cluster ID),用于区分不同的 Kafka 集群。/config
/topics
:Topic 级别的动态配置(如 retention.ms
、max.message.bytes
等)。/clients
:客户端级别的动态配置(如生产者和消费者的配额)。/changes
:配置变更通知(用于触发 Broker 更新配置)。/consumers
__consumer_offsets
)。/{group_id}/offsets/{topic}/{partition}
:消费者组的消费偏移量(Offset)。/{group_id}/owners/{topic}/{partition}
:记录消费者与分区的分配关系(哪个消费者消费哪个分区)。/controller
{"version":1,"brokerid":0,"timestamp":"..."}
)。/controller_epoch
/isr_change_notification
/latest_producer_id_block
/log_dir_event_notification
/feature
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有