關於kafka的理解

1、相關名詞:

  • producer:生產者
  • brocker:kafka中間件節點,多箇中間件節點組成kafka集羣
  • topic:主題,將kafka消息進行歸類,消費者只會消費topic相同生產者產生的消息
  • partition:物理上的概念(可以理解爲消息隊列),一個topic可以分配多個partition,每個partition內部是有序的
  • consumer:消費者
  • consumerGroup:消費者組(確保一個partition中的消息只被同一group中的一個consumer消費,避免重複消費)
  • zookeeper:kafka通過zoopeeker管理集羣配置
  • HW:高水位,即:consumer最多能消費到的offset
  • LEO:每個partition的log最後一條Message的位置
    在這裏插入圖片描述

2、Partition的leader選舉
Partition會跟zoopeeker保持心跳,一旦partition(leader)所在的brocker掛掉,zoopeeker會收到消息,並通知leader的副本進行leader選舉(個人理解是:誰先在zoopeeker上註冊誰會成爲leader)

3、kafka的partition副本同步機制
下圖爲kafka消息處理機制(圖片引用:https://www.cnblogs.com/aidodoo/p/8873163.html,如對作者造成影響請告知,立馬刪除)

  • 爲保證消息寫入leader之後,所有副本沒能同步完成,leader就掛掉了重新選舉leader之後,造成消息丟失,只有等所有副本完成消息同步之後消息才能被消費者消費(這就是爲什麼會設置HW與LEO的原因)
  • 當然如果副本一直不能同步完成,leader也不會一直等下去,默認如果副本消息落後leader 10s就會將該folloer從ISR中剔除(即:放棄該follower)

在這裏插入圖片描述

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