Kafka-Producer發送消息原理剖析

核心組件

1.ProducerInterceptors 攔截器
2.Sender 發送線程
3.Cluster 集羣信息(結點、主題、分區)
4.ProducerMetadata 生產者元數據
5.RecordAccumulator 消息緩衝累加器
6.Serializer 序列化器
7.Partitioner 分區器網絡

send()發生消息流程

1.ProducerInterceptors攔截消息,調用onSend()方法
2.調用doSend(),真正開始發生消息流程
3.waitOnMetadata,發送消息前確保主題分區元數據可用
4.調用Serializer對key和value序列化
5.調用Partitioner進行分區路由選擇(哈希/輪詢/粘性)
6.調用RecordAccumulator將消息放到緩衝區中隊列的RecordBatch中
7.喚醒Sender線程,從緩衝區拉取消息,將數據發送到網絡中去線程