zookeeper-在kafka-中的作用

9次阅读

共计 570 个字符,预计需要花费 2 分钟才能阅读完成。

broker controller 选举

  • zk 中存放有 broker 节点的配置信息和 controller 节点的配置信息

使用 zk 命令 ls /brokers/ids

  • zk 会根据监听父节点的子节点列表来进行 controller 的选举

topic 中 partition 信息的存储

使用 zk 命令 ls /brokers/topics/city/partitions,get /brokers/topics/city/partitions/0/state

  • productor 生成消息的时候,首先通过 broker controller 从 zk 中读取所有的 partition leader。返回给 porductor。

kakfa 0.9 版本之前 zk 会进行 partition leader 选举存在的问题

将 leader 的选举交给 zk 也就是交给第三方会存在脑裂问题。什么是脑裂?

以 partittion leader 选举为例。当 ledader 和 zk 之间出现网络抖动,zk 认为 leader 挂掉的时候,会选举出一个新的 leader。
但是之前的 leader 并没有宕机,也就是假死。这样就会有两个 leader。同时接受写请求的话,会造成数据不一致问题。

怎么解决 leader 的脑裂问题?
当 leader 选举出来后,稍微有个延迟,将新 leader 的消息同步给原理的 leader。原来 leader 会变为 follower。

正文完
 0