kafkaproducer是乙個kafka客戶端實現,可以發布記錄records至kafka集群。kafkaproducer是執行緒安全的,多執行緒之間共享單獨乙個producer例項通常會比多個producer例項要快。kafkaproducer包含一組快取池空間,儲存尚未傳輸到集群的記錄records,同時,乙個後台的i/o執行緒負責將這些記錄轉換成請求,並傳送至集群。使用之後關閉producer失敗將會導致這些資源洩露。
我們看下kafkaproducer都有哪些成員變數,如下:
// 客戶端id:clientid
private string clientid;
// 分割槽器partitioner例項partitioner
private final partitioner partitioner;
// 最大請求大小maxrequestsize
private final int maxrequestsize;
// 記憶體總計大小totalmemorysize
private final long totalmemorysize;
// 集群元資料metadata例項metadata
private final metadata metadata;
// 記錄收集器recordaccumulator例項accumulator
private final recordaccumulator accumulator;
// 後台傳送執行緒sender例項sender
private final sender sender;
// 指標度量
private final metrics metrics;
// io執行緒iothread
private final thread iothread;
// 壓縮型別compressiontype例項compressiontype
private final compressiontype compressiontype;
private final sensor errors;
// 時間器
private final time time;
// key序列化器keyserializer
private final serializerkeyserializer;
// value序列化器valueserializer
private final serializervalueserializer;
// producer配置資訊producerconfig例項producerconfig
private final producerconfig producerconfig;
// 最大阻塞時間maxblocktimems
private final long maxblocktimems;
// 請求超時時間requesttimeoutms
private final int requesttimeoutms;
其中,比較重要的幾個是:
1、分割槽器partitioner例項partitioner:由它負責計算分割槽,確定主題內的實際儲存位置;
2、集群元資料metadata例項metadata:儲存了整個集群的元資料資訊,包括節點列表、主題列表、主題與分割槽列表對映等資訊;
3、記錄收集器recordaccumulator例項accumulator:通過kafkaproducer傳送的訊息不會立即被傳送到集群,而是先快取在客戶端記憶體緩衝池中,等待後台i/o執行緒處理;
4、後台傳送執行緒sender例項sender:乙個後台工作的i/o執行緒,由它負責將客戶端記憶體緩衝池中的資料傳送到集群;
kafkaproducer的構造方法
Kafka原始碼分析之KafkaProducer
kafkaproducer是乙個kafka客戶端實現,可以發布記錄records至kafka集群。kafkaproducer是執行緒安全的,多執行緒之間共享單獨乙個producer例項通常會比多個producer例項要快。kafkaproducer包含一組快取池空間,儲存尚未傳輸到集群的記錄reco...
kafka原始碼分析 kafkaconsumer
kafkaconsumer 對於多執行緒訪問是不安全的,通過使用acquire 跟release 方法來操作atomiclong currentthread字段 儲存當前訪問執行緒id 有多個執行緒同時訪問丟擲concurrentmodificationexception,來防止對個執行緒同時訪問。...
Kafka原始碼分析(一)
apache kafka 是 乙個分布式流處理平台.這到底意味著什麼呢?我們知道流處理平台有以下三種特性 它可以用於兩大類別的應用 為了理解kafka是如何做到以上所說的功能,從下面開始,我們將深入探索kafka的特性。首先是一些概念 kafka有四個核心的api 讓我們首先深入了解下kafka的核...