iT邦幫忙

DAY 17
0

分散式資料處理,以Stream Computing為例系列 第 17

Day 17: Apache kafka (5)

啊哈,沒想到Kafka可以寫到第五篇啊...

今天要講的是ack,ack問題在stream computing裡也會遇到,這邊就來先提一下。

stream computing的ack還要解決多階段、數量大的ack管理,而Kafka的ack只要確保message deliver semantics。

分散式系統因為有透過網路,所以message deliver都是很難保證的。就像網路,有時候可以允許遺失封包 (UDP),如果不能遺失封包(TCP),就要有重送和檢查重複的機制。

對於Kafka的consumer來說,何時回送ack,就決定了message deliver semantics。

如果在資料收到、但還沒處理前就先送ack,由於機器可能在處理前掛掉,所以不能保證資料一定被處掉到,所以是at-most once semantics。

如果在資料收到且處理完後才送ack,由於機器可能在處理後、且送ack前掛掉,這樣就會重送已處理過的資料,所以是at-least once semantics。

而Apache Kafka現在還沒有內建支援exactly-once semantics。


上一篇
Day 16: Apache Kafka (4)
下一篇
Day 18: Apache Kafka 與 Stream Computing
系列文
分散式資料處理,以Stream Computing為例30

尚未有邦友留言

立即登入留言