前一篇文章介紹瞭如何使用kafka收發消息,但是對於kafka的核心概念並沒有詳細介紹,這裏將會對包括kafka基本架構以及消費者、生產者API涉及的術語進行說明。瞭解這些術語有助於更深入理解kafka。
- broker
- topic
- stream
- partition
- offset
- producer
- consumer
consumer group
要了解這些術語,我們先看下kafka整個消息處理過程:
消息由
producer
產生,消息按照topic
歸類,併發送到broker
中,broker
中保存了一個或多個topic
的消息,consumer
通過訂閱一組topic的消息,通過持續的poll操作從broker獲取消息,並進行後續的消息處理。broker
一個kafka集羣包含一個或多個服務器,這些服務器稱爲broker,保存producer
發送的消息topic
每條發送到broker的消息都有一個類別,這個類別稱爲topicpartition
一個topic的消息實際上由多個隊列存儲的,一個隊列在kafka上稱爲一個分區producer
負責發送指定topic的消息到brokerconsumer
消息讀取客戶端,通過訂閱一組topic的消息從broker拉取消息consumer group
每隔consumer術語一個消費者組,具有相同的group.id
的消費客戶端術語同一個消費者。通過設置一個消息消費者group.id
是否相同可以分爲單播消費(集羣消費)或廣播消費
假如一個消費者組有兩個消費者,訂閱了一個具有4個分區的topic的消息,那麼這個消費者組的每一個消費者都會消費兩個分區的消息。
消費者組的成員是動態維護的,如果新增或者減少了消費者組中的消費者,那麼每隔消費者消費的分區的消息也會動態變化。比如原來一個消費者有兩個消費者,其中一個消費者因爲故障而不能繼續消費消息了,那麼剩下一個消費者將會消費全部4個分區的消息。
offset
偏移量。kafka爲每條在分區的消息保存一個偏移量offset
,這也是消費者在分區的位置。比如一個偏移量是5的消費者,表示已經消費了從0-4偏移量的消息,下一個要消費的消息的偏移量是5