首页 > 代码库 > Apache kafka系列之在zookeeper中存储结构

Apache kafka系列之在zookeeper中存储结构

技术分享

1、topic注册信息

  /brokers/topics/[topic] :存储某个topic的partitions所有分配信息

 

Schema:{    "version": "版本编号目前固定为数字1",    "partitions": {        "partitionId编号": [            同步副本组brokerId列表        ],        "partitionId编号": [            同步副本组brokerId列表        ],        .......    }}Example:{"version": 1,"partitions": {"0": [1, 2],"1": [2, 1],"2": [1, 2],}}说明:紫红色为patitions编号,蓝色为同步副本组brokerId列表

2、partition状态信息

   /brokers/topics/[topic]/partitions/[0...N]  其中[0..N]表示partition索引号

   /brokers/topics/[topic]/partitions/[partitionId]/state

Schema:{"controller_epoch": 表示kafka集群中的中央控制器选举次数,"leader": 表示该partition选举leader的brokerId,"version": 版本编号默认为1,"leader_epoch": 该partition leader选举次数,"isr": [同步副本组brokerId列表]} Example:{"controller_epoch": 1,"leader": 2,"version": 1,"leader_epoch": 0,"isr": [2, 1]}

3、Broker注册信息

  /brokers/ids/[0...N]:每个broker的配置文件中都需要指定一个数字类型的id(全局不可重复),此节点为临时znode(EPHEMERAL)

Schema:{"jmx_port": jmx端口号,"timestamp": kafka broker初始启动时的时间戳,"host": 主机名或ip地址,"version": 版本编号默认为1,"port": kafka broker的服务端端口号,由server.properties中参数port确定} Example:{"jmx_port": 6061,"timestamp":"1403061899859""version": 1,"host": "192.168.1.148","port": 9092}

4、Controller epoch

    /controller_epoch -> int (epoch) :此值为一个数字,kafka集群中第一个broker第一次启动时为1,以后只要集群中center controller中央控制器所在broker变更或挂掉,就会重新选举新的center controller,每次center controller变更controller_epoch值就会 + 1

5、Controller注册信息

   /controller -> int (broker id of the controller)  存储center controller中央控制器所在kafka broker的信息

Schema:{"version": 版本编号默认为1,"brokerid": kafka集群中broker唯一编号,"timestamp": kafka broker中央控制器变更时的时间戳} Example:{"version": 1,"brokerid": 3,"timestamp": "1403061802981"}

原文链接请参见:http://blog.csdn.net/lizhitao/article/details/23744675

Apache kafka系列之在zookeeper中存储结构