ACKS(確認收到)的引數配置,冪等性

2021-10-02 11:17:14 字數 728 閱讀 5013

acks引數配置:

0:producer不等待broker的ack(是topic的每個partition傳送),這一操作提供了最低的延遲,broker一接收到還沒有寫入到磁碟就已經返回(反正就是不等待ack),當broker故障時可能會丟失資料。

1:producer等待broker的ack,partition的leader落盤成功後返回ack,如果在follower同步成功之前leader故障,那麼將會丟失資料。(就是它會等待leader,不等待follower的同步)

-1(all):producer等待broker的ack,partition的leader和follower全部落盤成功之後才返回ack。但是如果在follower同步完成之後,broker傳送ack之前,leader發生故障,那麼會造成資料重複。

at least once(至少一次):將伺服器的ack級別設定為-1,可以保證producer到server之間不會丟資料。(可以保證資料不丟失,但是不能保證資料不重複)

at most once 至多一次:將伺服器ack級別設定為0,就可以保證每條訊息只會被傳送一次。(可以保證資料不重複但不能保證資料不丟失。)

冪等性:指producer無論向server傳送多少次重複資料,server端都只會持久化一次。

exactly once:資料既不重複也不丟失。比如:交易資料,這種重要資料不能丟失也不能重複。

因此:at least once + 冪等性 = exactly once (精準一次)

kafka中的acks引數

首先這個acks引數,是在kafkaproducer,也就是生產者客戶端裡設定的也就是說,你往kafka寫資料的時候,就可以來設定這個acks引數。這個引數實際上有三種常見的值可以設定,分別是 0 1 和 all。第一種選擇是把acks引數設定為0 我的kafkaproducer在客戶端,只要把訊息...

getopt long接收到的引數,試著列印出來

新增的 如下 int retval int ti zjh char tm tm nargv diagassert nargv null diagassert options null diagassert long options null idx may be null printf getopt...

POST上傳檔案,後端無法接收到引數的問題

問題描述 使用postman傳送post請求,body form data 形式的引數 多個引數 檔案引數 請求時後端無法接收到引數 所有引數都為空 解決方法 上傳jar包comons fileupload commons io 在配置檔案中配置multipartresolver multipart...