zookeeper 在kafka 中的作用

broker controller选举

  • zk中存放有broker 节点的配置信息和controller节点的配置信息
    使用zk命令 ls /brokers/ids

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 也就是交给第三方会存在脑裂问题。什么是脑裂?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值