Kafka在zookeeper中的存储结构
1.topic注册信息
/brokers/topics/[topic] :
每个topic的信息
{"version":1, // 版本编号目前固定为数字1"partitions":{ // partitionId编号"1":[ //同步副本组brokerId列表101,103],"0":[103,102]}}
partition状态信息
/brokers/topics/[topic]/partitions/[0…N]  其中[0..N]表示partition索引号
/brokers/topics/[topic]/partitions/[partitionId]/state

{"controller_epoch":33, //表示kafka集群中的中央控制器选举次数"leader":102, //表示该partition选举leader的brokerId"version":1, //版本编号默认为1"leader_epoch":8, // 该partition leader选举次数,"isr":[ // 同步副本组brokerId列表102,103]}
2.Broker注册信息
/brokers/ids/[0…N]
每个broker的配置文件中都需要指定一个数字类型的id(全局不可重复),此节点为临时znode(EPHEMERAL)
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://zjj101:9092"],"jmx_port":-1, // jmx端口号"host":"zjj101", // 主机名或ip地址,"timestamp":"1614570663881", //kafka broker初始启动时的时间戳,"port":9092, // kafka broker的服务端端口号,由server.properties中参数port确定"version":4 // 版本编号默认为1,}
3.Controller epoch
/controller_epoch —> int (epoch)
此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller中央控制器所在broker变更或挂掉,就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1;
4.Controller注册信息
/controller -> int (broker id of the controller)  存储center controller中央控制器所在kafka broker的信息
{"version":1, // 版本编号默认为1,"brokerid":101, // kafka集群中broker唯一编号,"timestamp":"1614570663255" // kafka broker中央控制器变更时的时间戳}

