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

相關文章
相關標籤/搜索