Kafka基於Zookeeper搭建高可用集群實戰

2021-10-25 06:15:56 字數 805 閱讀 2725

1 前言

1.1 高可用的由來

為何需要replication?

在kafka在0.8以前的版本中,是沒有replication的,一旦某乙個broker宕機,則其上所有的

partition資料都不可被消費,這與kafka資料永續性及delivery guarantee的設計目標相悖。同時

producer都不能再將資料存於這些partition中。

如果producer使用同步模式則producer會在嘗試重新傳送message.send.max.retries(預設值

為3)次後丟擲exception,使用者可以選擇停止傳送後續資料也可選擇繼續傳送。而前者會造成資料的阻塞,後者會造成本應發往該broker的資料的丟失。

如果producer使用非同步模式,則producer會嘗試重新傳送message.send.max.retries(預設值

為3)次後記錄該異常並繼續傳送後續資料,這會造成資料丟失並且使用者只能通過日誌發現該問題。同時,kafka的producer並未對非同步模式提供callback介面。

由此可見,在沒有replication的情況下,一旦某機器宕機或者某個broker停止工作則會造成整

個系統的可用性降低。隨著集群規模的增加,整個集群**現該類異常的機率大大增加,因此對於生產系統而言replication機制的引入非常重要。

什麼是leader election

引入replication之後,同乙個partition可能會有多個replica,而這時需要在這些replication之間選出乙個leader,producer和consum

Linux中kafka和zookeeper安裝

kafak的安裝需要安裝zookeeper。一 zookeeper安裝 2 解壓 sudo tar zxvf apache zookeeper 3.5.5 bin.tar.gz c usr local 3 進入加壓目錄重新命名zookeeper cd usr local sudo mv apache...

基於docker部署kafka群集

建立網路 zookeeper建立容器 kafka建立容器 docker pull wurstmeister zookeeper docker pull wurstmeister kafka 檢視當前網絡卡 docker network ls 建立新網絡卡 docker network create ...

zookeeper學習之zookeeper集群

匯入zookeeper原始碼包,解壓安裝到你放置的資料夾 命令 tar zxvf 原始碼包名 進入解壓後的資料夾 conf目錄,複製zoo zample.cfg檔案並重命名 命令 cp zoo zample.cfg zoo.cfg 使用vim編輯器修改zoo.cfg檔案 命令 vim zoo.cfg...