您當前的位置:首頁 > 書法

kafka中的acks和mir配置詳解

作者:由 石臻臻的雜貨鋪 發表于 書法時間:2022-01-19

大家好,這裡是 石臻臻的雜貨鋪, 我是彥祖

kafka中的acks和mir配置詳解

最近彥祖發現有不少同學對於kafka中的 acks 配置 和 min。insync。replicas 的配置不是很熟悉。

kafka中的acks和mir配置詳解

kafka中的acks和mir配置詳解

那麼今天彥祖就好好給大家講解一下這兩個配置。 本次講解以下幾個內容

acks的用法

min。insync。replicas的用法

ack和mir搭配使用的可靠性

1. acks解析

acks的配置有3個選項,分別為 0、1、all(-1)

每個含義分別為:

0: 生產者不會等待伺服器的任何確認, 該記錄將立即新增到Socket Buffer Pool 並被視為已傳送,這種情況,不保證傳送成功,

可能會丟失資料

1: 這個保證了至少Leader副本會將資料寫入到本地日誌中,不管其他副本是否寫入。所以當Leader同步成功之後,還沒有來得及同步給Follower副本就宕機了。

那麼就會丟失資料

kafka中的acks和mir配置詳解

all: 這個確保

ISR中的所有同步副本列表

中都確認寫入了資料之後,才會視為傳送成功, 所以這個配置可以提供最高階的資料可靠性的保證,

不會丟失資料。

kafka中的acks和mir配置詳解

2 .min.insync.replicas 解析

最小同步副本數, 表示的是 ISR 列表裡面最小的個數。這個是跟

acks=-1/all

配套使用的,預設是=1。

這個配置再加上上面的

acks=all

是不是就可以設定高可靠性了

特別需要注意

這個配置是用來設定同步副本個數的下限的, 並不是只有

min.insync.replicas

個副本同步成功就返回ack。 只要你

acks=all

就意味著你ISR裡面的副本必須都要同步成功。

留個問題思考一下

當Broker單副本,

acks=all

的情況下

1. Broker正常關機,會不會導致訊息丟失

2. Broker異常crash, 會不會導致訊息丟失

3. 物理機正常關機, 會不會導致訊息丟失

4. 物理機異常掉電關機,會不會導致訊息丟失

kafka中的acks和mir配置詳解

大家可以思考一下,我們將會在下期公佈答案!歡迎關注 石臻臻的雜貨鋪,和彥祖一起交流學習。

標簽: acks  副本  丟失  同步  min