天天看點

簡述kafka生産者ack确認機制

一、總結

  1. 該章節主要探讨造成資料丢失問題

    生産者ack确認機制(目的是要有多少個分區副本收到消息,生産者才認為該消息寫入成功;acks參數對資料是否丢失起重要的作用)

    (1)ack = 0,就是表示生産者不會和broker确認消息是否寫入成功。這就有可能造成伺服器broker因出現問題,導緻沒有接收到生産者的消息,而生産者卻無從得知。這也就造成資料的丢失。 --較低延遲和高吞吐量,但是以消息丢失的高風險為代價。

    (2)ack = 1,是表示,生産者是以broker叢集leader分區副本接收到消息并向生産者發送成功響應的ack來代表消息寫入成功。–隻等待leader寫完,不等待follower寫完。這種機制,當leader向生産者發送響應後,follower同步消息之前,leader出現故障,會導緻消息丢失。–比ack=0慢點,但是耐用。

    (3)ack = -1,是當設定ack值為all意味着所有同步副本都收到記錄,生産者才會接收到broker伺服器的響應。這種模式是最進階别的,也是最安全的,可以確定不止一個Broker接收到了消息. 該模式的延遲會很高.