天天看點

Kafka源碼分析之KafkaProducer

        KafkaProducer是一個Kafka用戶端實作,可以釋出記錄records至Kafka叢集。KafkaProducer是線程安全的,多線程之間共享單獨一個producer執行個體通常會比多個producer執行個體要快。KafkaProducer包含一組緩存池空間,存儲尚未傳輸到叢集的記錄records,同時,一個背景的I/O線程負責将這些記錄轉換成請求,并發送至叢集。使用之後關閉producer失敗将會導緻這些資源洩露。

        我們看下KafkaProducer都有哪些成員變量,如下:

        其中,比較重要的幾個是:

        1、分區器Partitioner執行個體partitioner:由它負責計算分區,确定主題内的實際存儲位置;

        2、叢集中繼資料Metadata執行個體metadata:存儲了整個叢集的中繼資料資訊,包括節點清單、主題清單、主題與分區清單映射等資訊;

        3、記錄收集器RecordAccumulator執行個體accumulator:通過KafkaProducer發送的消息不會立即被發送到叢集,而是先緩存在用戶端記憶體緩沖池中,等待背景I/O線程處理;

        4、背景發送線程Sender執行個體sender:一個背景工作的I/O線程,由它負責将用戶端記憶體緩沖池中的資料發送到叢集;

        KafkaProducer的構造方法

繼續閱讀