Kafka內核理解:消息的收集/消費機制


一、Kafka數據收集機制

Kafka集群中由producer負責數據的產生,並發送到對應的TopicProducer通過push的方式將數據發送到對應Topic的分區

Producer發送到Topic的數據是有key/value鍵值對組成的,Kafka根據key的不同的值決定數據發送到不同的Partition,默認采用Hash的機制發送數據到對應Topic的不同Partition中,配置參數為{partitioner.class}

Producer發送數據的方式分為sync(同步)和async(異步)兩種,默認為同步方式,由參數{producer.type}決定;當為異步發送模式的時候Producer提供重試機制,默認失敗重試發送3次

Kafka Producer相關參數:

 

 

 

二、Kafka數據消費機制

Kafka有兩種模式消費數據:隊列發布訂閱;在隊列模式下,一條數據只會發送給customer group中的一個customer進行消費;在發布訂閱模式下,一條數據會發送給多個customer進行消費

Kafka的Customer基於offset對kafka中的數據進行消費,對於一個customer group中的所有customer共享一個offset偏移量

Kafka中通過控制Customer的參數{group.id}來決定kafka是什么數據消費模式,如果所有消費者的該參數值是相同的,那么此時的kafka就是類似於隊列模式,數據只會發送到一個customer,此時Kafka類似於負載均衡;否則就是發布訂閱模式; 在隊列模式下,可能會觸發Kafka的Consumer Rebalance

Kafka的數據是按照分區進行排序的(插入的順序),也就是每個分區中的數據是有序的。在Consumer進行數據消費的時候,也是對分區的數據進行有序的消費的,但是不保證所有數據的有序性(多個分區之間)

Consumer Rebalance:當一個consumer group組中的消費者數量和對應Topic的分區數量一致的時候,此時一個Consumer消費一個Partition的數據;如果不一致,那么可能出現一個Consumer消費多個Partition的數據或者不消費數據的情況,這個機制是根據Consumer和Partition的數量動態變化的

Consumer通過poll的方式主動從Kafka集群中獲取數據

Kafka Consumer相關參數說明:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM