kafka中的acks和mir配置詳解
大家好,這裡是 石臻臻的雜貨鋪, 我是彥祖
最近彥祖發現有不少同學對於kafka中的 acks 配置 和 min。insync。replicas 的配置不是很熟悉。
那麼今天彥祖就好好給大家講解一下這兩個配置。 本次講解以下幾個內容
acks的用法
min。insync。replicas的用法
ack和mir搭配使用的可靠性
1. acks解析
acks的配置有3個選項,分別為 0、1、all(-1)
每個含義分別為:
0: 生產者不會等待伺服器的任何確認, 該記錄將立即新增到Socket Buffer Pool 並被視為已傳送,這種情況,不保證傳送成功,
可能會丟失資料
。
1: 這個保證了至少Leader副本會將資料寫入到本地日誌中,不管其他副本是否寫入。所以當Leader同步成功之後,還沒有來得及同步給Follower副本就宕機了。
那麼就會丟失資料
。
all: 這個確保
ISR中的所有同步副本列表
中都確認寫入了資料之後,才會視為傳送成功, 所以這個配置可以提供最高階的資料可靠性的保證,
不會丟失資料。
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. 物理機異常掉電關機,會不會導致訊息丟失
大家可以思考一下,我們將會在下期公佈答案!歡迎關注 石臻臻的雜貨鋪,和彥祖一起交流學習。
上一篇:做好期貨真的很難嗎?
下一篇:“優秀”與“卓越”區別在哪兒?