Kafka學習筆記 --- Kafka的冪等性機制和冪等性過程源碼分析

  • 一、什麼是消息隊列的冪等性?

    • Kafka這裏的冪等性指的是一般Producer發送了多少消息,consumer就消費了多少消息,保證了消費的唯一性,也是符合exactly-once語義的操作;

    • 不會發生消息丟失或者消息重複的情況;

  • 二、首先看一下Kafka的消息傳輸中的三種語義:

    • 消息最多發送一次(At-Most-Once)

      • 消息已經發出,不管收沒收到,會存在消息丟失的情況;

      • 通過配置實現

1)enable.auto.commit設置爲True
2)auto.commit.interval.ms設置爲一個較低的時間範圍。
3)consumer.commitSync()不調用該方法。
    • 由於上面的配置,就可以使Kafka有線程負責按照指定的時間範圍間隔提交偏移offset, 但這種方式會出現Kafka消費出現兩種語義:

      • 消費語義最多一次:消費者的偏移量已經提交,但是消息還在處理,這時候掛了,再重啓時從上次提交的偏移處消費,導致上次在處理的消息部分丟失;

      • 消費語義最少一次:消費者已經處理完了,但是偏移量還沒提交,那麼這個時候掛了,就會導致重複消息消費處理,但是由於auto.commit.interval.ms間隔設置的較低,因此會降低這種概率;

  • 消息至少發送一次(

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章