? ? ? ? 上篇文章講了副本機制是什么,一文讀懂kafka內部怎么運行的-CSDN博客?這里深挖下同步副本集及里面的關鍵參數。副本會去leader副本拉去數據追加到自己日志中。
? ? ? ??????????我們知道kafka副本的作用是提高系統的高可用。當leader副本掛了時,會從候選副本集中選者一個當leader副本繼續對外提供服務。那么這個候選副本其實就是同步副本集,如果副本的數據和leader副本數據差太多時,該副本會被踢出同步副本集,如果數據追上來了則又加入該副本集。那么怎么才叫差太多呢?
????????replica.lag.time.max.ms=10,默認10秒。如果副本超過10秒沒有發起數據拉取操作,則認為該副本太落后了,剔出同步副本集。被剔除的副本叫非同步副本集。那么非同步副本集能夠作為候選副本嗎?答案是能。unclean.leader.election.enable=true 則表示可以從非同步副本集選擇出leader副本。但是這樣就可能丟失數據了,謹慎使用。
? ? ? ? 下面還有幾個關鍵參數:
????????replication.factor=3 指定主題有3個副本
????????min.insync.replicas=3 最少同步副本集個數,當同步副本集個數大于等于該數時才算寫入成功。
????????acks參數:消息寫入時要求確認的副本個數。
? ? ? ? acks=0時,生產者不管leader副本端的處理情況,只管發送。最高吞吐量。
????????acks=all或-1時,必須等到同步副本集都成功寫入時,才響應成功。最高持久性,最低吞吐量。
????????acks=1,只需要leader broker寫入成功,無需管其他副本。(默認)
????????
????????