metaq 的zk目录结构在 com.taobao.metamorphosis.utils.MetaZookeeper 这个Meta与zookeeper交互的辅助类中defined。
zk中有5中类型的根目录,分别是:
metaRoot + "/consumers";
metaRoot + "/brokers/ids";
metaRoot + "/brokers/topics"; //兼容1.4.3版本以前,deprecated
metaRoot + "/brokers/topics-pub";//1.4.3版本以后
metaRoot + "/brokers/topics-sub"; //1.4.3版本以后
参见代码:
public final String metaRoot;
public final String consumersPath;
public final String brokerIdsPath;
@Deprecated
public final String brokerTopicsPath;
// added by dennis,since 1.4.3
public final String brokerTopicsPubPath;
public final String brokerTopicsSubPath;
下面逐一分析之:
1)/consumers: 存放消费者列表以及消费记录,消费者列表主要是以组的方式存在,结构主要如下:
/consumers/xxGroup/ids/xxConsumerId:DATA (DATA表示节点xxConsumerId对应的数据) 组内消费者Id; DATA为订阅主题列表,以”,”分隔
/consumers/xxGroup/offsets/xxTopic/分区N:DATA 组内主题分区N的消费进度;DATA为topic下分区N具体进度值
/consumers/xxGroup/owners/xxTopic/分区N:DATA 组内主题分区N的的消费者 ;DATA为消费者ID,表示XXTopic下分区N的数据由指定的消费者进行消费。”[ ]”表示该topic下所有分区内均没有未被消费的消息。
2) /brokers/ids:存放Broker列表,如果Broker与Zookeeper失去连接,则会自动注销在/brokers/ids下的broker记录,例子如下:
/brokers/ids/xxBroker
此处的brokerid=0。
3)/brokers/topics-pub:存放发布的主题列表以及对应的可发送消息的Broker列表,例子如下:
/brokers/topics-pub/xxTopic/xxBroker
/brokers/topics-pub下记录的是可发送消息到xxTopic的Broker列表,意味着有多少个Broker允许存储Client发送到Topic数据
4)/brokers/topics-sub:存放订阅的主题列表以及对应可订阅的Broker列表,例子如下:
/brokers/topics-sub/xxTopic/xxBroker
/brokers/topics-sub下记录的可订阅xxTopic的Broker列表,意味着有多少个Broker允许被Client订阅topic的数据
PS: ./zkCli.sh –server 10.77.20.23:12181