一、整体图示
二、整个生产者客户端由两个线程:主线程、Sender发送线程
整个生产者客户端就是由主线程和Sender线程完成消息的发送,由主线程构建消息体,将消息体放到消息累加器中,由Sender 线程,从消息累加器中取值,发送给 Kafka
三、流程分析
3.1 主线程
主线程主要通过 KafkaProducer 对象,构建消息,经过可能的 拦截器 , 序列化器 , 分区器 ,最终交给 消息累加器 (RecordAccumulator)
3.2 RecordAccumulator
- RecordAccumulator 主要的作用就是封装 ProducerRecord 对象,将单个的消息封装为一个集合,使得 Sender
线程可以批量进行拉取和发送,从而减少网络消耗进而提升性能。 - RecordAccumulator 缓存的大小可以通过生产者客户端参数 buffer.memory 进行配置,默认的话是 32MB,如果