kafka中的offset概念
在 Kafka 中無論是 producer 往 topic 中寫數據, 還是 consumer 從 topic 中讀數據, 都避免不了和 offset 打交道, 關于 offset 主要有以下幾個概念。
Last Committed Offset:consumer group 最新一次 commit 的 offset,表示這個 group 已經把 Last Committed Offset 之前的數據都消費成功了。Current Position:consumer group 當前消費數據的 offset,也就是說,Last Committed Offset 到 Current Position 之間的數據已經拉取成功,可能正在處理,但是還未 commit。Log End Offset(LEO):記錄底層日志 (log) 中的下一條消息的 offset。, 對 producer 來說,就是即將插入下一條消息的 offset。High Watermark(HW):已經成功備份到其他 replicas 中的最新一條數據的 offset,也就是說 Log End Offset 與 High Watermark 之間的數據已經寫入到該 partition 的 leader 中,但是還未完全備份到其他的 replicas 中,consumer 是無法消費這部分消息 (未提交消息)。
每個 Kafka 副本對象都有兩個重要的屬性:LEO 和 HW。注意是所有的副本,而不只是 leader 副本。關于這兩者更詳細解釋,建議參考這篇文章。
對于消費者而言,異步模式下 committed offset 是落后于 current position 的。如果 consumer 掛掉了, 那么下一次消費數據又只會從 committed offset 的位置拉取數據,就會導致數據被重復消費。
總結
以上是生活随笔為你收集整理的kafka中的offset概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为全屋智能感恩回馈季:进店体验有好礼
- 下一篇: 年底发福利 马自达推出全系购车优惠:CX