zookeeper 在kafka 中的做用

broker controller选举

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

使用zk命令 ls /brokers/idssegmentfault

file

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

file

topic中partition信息的存储

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

file

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

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

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

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

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

相关文章
相关标签/搜索