首页

【分布式消息系统Kafka】消息producer发送数据流程

标签:kafka     发布时间:2022-12-29   

阅读《分布式消息系统Kafka》第七、kafka执行流程章节之“producer发送数据流程”

1)流程说明

# 流程说明@b@1. Producer.send的主线程。@b@① 数据先经过拦截器。@b@② 然后进行网络传输前的序列化@b@③ 计算消息所属的分区@b@④ 按照将消息存入对应的本地分区。(本地缓存,为了批量发送)@b@2. sender线程@b@① 当某个分区内的消息数量达到一定值:'batch.size'之后,才会发送数据。(默认值: 16384@b@(16kb))@b@config.put(ProducerConfig.BATCH_SIZE_CONFIG,16384);@b@② 如果某个分区内消息数量未达到batch.size,sender等待linger.ms之后也会批量发送。(默认@b@值:0ms)@b@config.put(ProducerConfig.LINGER_MS_CONFIG,200);

2)流程细节解释

1. 主线程一条条向本地分区中存入数据。@b@2. Sender线程批量将本地分区的数据,发送到kafka的topic中的对应分区。--提高效率@b@3. 拦截器:可以对producer发送的数据,做一些通用功能的处理。@b@4. 序列化:为了保证数据在网络中传输和kafka的broker之间同步,需要数据执行序列化。@b@5. Partitioner:数据在写入到本地的内存队列(缓冲区)之前,会先计算分区再存放数据。

3)图示

【分布式消息系统Kafka】消息producer发送数据流程