接上篇《Kafka技术知识总结之七——Kafka磁盘存储》
八. Kafka 生产者结构
Kafka Producer 主要有三个部分组成:主线程、Sender 线程、RecordAccumulator。
- 主线程:执行序列化、分区、拦截器处理等主要操作,并将消息缓存到 RecordAccumulator 中;
- Sender 线程:从 RecordAccumulator 中拉数据,发送到 broker;
- RecordAccumulator:缓存主线程的消息,并提供给 Sender 线程;
生产者执行流程:
- 主线程处理数据,包括处理拦截器操作、序列化、分区;
- 主线程将数据发送给 RecordAccumulator;
- RecordAccumulator 将消息 (ProducerRecord) 压缩成 (ProducerBatch),并以分区 (TopicPartition) - 消息队列 (Deque(ProducerBatch)) 的消息存储主线程发来的消息;
- Sender 从 RecordAccumulator 中拉取各分区的消息,并转换为 Broker - Deque(ProducerBatch) 的形式(因为对于 Sender 而言,只关心把消息发送到哪个 Broker 上);
- Sender 最后将消息转换成 Broker - Request 的形式,推送给指定的 Broker;