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中央控制器变更时的时间戳
}