Controller

kafka集群的一个broker会被选举为Controller。负责:

  • 管理broker的上下线
  • topic的上下线
  • partition副本分配、leader选举

    选举

  • Broker在启动时,会尝试去ZK创建/controller节点,第一个成功创建/controller节点的Broker会被指定为Controlle

    ZK目录

  • cluster:kafka集群唯一id

  • conrtoller:
    • conrtoller: /controller 集群的Controller是谁
    • controller中心节点变更次数: /controller_epoch,用于防止脑裂拒绝epoch低的请求
  • /brokers
    • broker:/brokers/ids 记录有哪些服务器
    • topic:/brokers/topics/kafka10-topic-20170924
      • partition:/brokers/topics/kafka10-topic-20170924/partitions/0/state 记录谁是分区leader,isr有哪些
    • seqid:/brokers/seqid
  • consumner:
    • 消费者与分区的对应关系: /consumers/[消费者组]/owners/[topic]/[partition_id]
    • 消费者offset: /consumers/[消费者组]/offsets/[topic]/[partition_id] (0.9之后存储在topic【__consumer_offsets】中)

      zk里没有producter信息?

      是的,需要存储的都是要记录状态的数据,生产者不需要记录状态