一、Kafka數據收集機制
Kafka集群中由producer負責數據的產生,並發送到對應的Topic;Producer通過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相關參數說明: