kafka在zookeeper中一些存储结构

本文主要查看kafka在zookeeper中的一些存储结构,便于更好的理解kafka的工作原理,其测试环境如下:

kafka 0.8.1.1
zookeeper 3.4.5

1 Broker node 注册

当一个kafka broker启动后,会向zookeeper注册自己的节点信息,该节点为一个临时节点,当当broker断开和zookeeper的连接时,其临时节点将会被删除。

其路径为:

/broker/ids/[0...N] 

其中[0..N]表示broker id(broker id唯一,不可以重复),znode的值为对应broker的相关信息,如下:

{
    "jmx_port": -1, //JMX的端口号
    "timestamp": "1460082147315",//broker启动的时间戳
    "host": "xx.xxx.xxx.xxx",//host
    "version": 1,//默认的版本
    "port": 9092  //broker进程的对外监听的端口号
}

如下为zk下的运行实例图:

这里写图片描述

2 Broker Topic 注册

当一个broker启动时,会向zookeeper注册自己持有的topic和partitions信息。
其路径为:

/broker/topics/[topic]/partitions/[0...N] 

其中[0..N]表示partition索引号。其zonode下的信息如下:

{
    "controller_epoch": 17,//中央控制器的总的选举次数
    "leader": 0,  //此partition的broker leader的id
    "version": 1, //默认版本号
    "leader_epoch": 1,//此partition的leader选举的次数
    "isr": [
        0
    ]    //同步副本组brokerId顺序列表
}

如下为zk下的运行实例图:

这里写图片描述

3 Consumer id 注册

在kafka consumer的配置参数中有:

#消费者的ID,若是没有设置的话,会自增
consumer.id

当然,consumer id也可以手动设置。
在zookeeper查看相关consumer id的注册信息,其路径如下:

/consumers/[group_id]/ids/[consumer_id]

这仍然是一个临时的znode,此节点的值为格式如下:

{
    "version": 1,
    "subscription": {
        "user11": 1
    },
    "pattern": "static",
    "timestamp": "1460083658252"
}

{“topic_name”:#streams…},即表示此consumer目前所消费的topic + partitions列表。

如下为zk下的运行实例图:

这里写图片描述

4 Consumer offset 跟踪

用来跟踪每个consumer group目前所消费的partition中最大的offset。

其路径为:

/consumers/[group_id]/offsets/[topic]/[partition_id]

此znode为永久节点,可以看出offset跟group_id有关,以表明当group中一个消费者失效,其他consumer可以继续消费。

如下为zk下的运行实例图:

这里写图片描述

5 Partition Owner 注册

用来标记partition被哪个consumer消费,为临时节点。
其路径为:

/consumers/[group_id]/owners/[topic]/[partition_id]

如下为zk下的运行实例图:

这里写图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值