002- Kafka技术内幕之Producer(生产者)概述

Posted BearData

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002- Kafka技术内幕之Producer(生产者)概述相关的知识,希望对你有一定的参考价值。

通过上一篇我们基本了解了Kafka的相关概念,本篇我们将介绍Kafka的Producer。

最新版本的生产者程序使用KafkaProducer对象代表一个生产者的客户端进程。生产者要发送消息,并不是直接发送给服务端,而是先在客户端把消息放入队列中,然后由一个消息发送线程从队列中拉取消息,以批量的方式发送消息给服务器。在Kafka中,RecordAccumulator负责缓存生产者客户端的消息,发送线程Sender负责读取记录收集器的批量消息,通过网络发送给服务端。为了保证客户端网络请求的快速响应,Kafka使用选择器(Selector)处理网络连接和读写处理,使用网络连接(NetworkClient)处理客户端网络请求。

整个客户端请求如下图所示:

【002】- Kafka技术内幕之Producer(生产者)概述

1. 当我们调用KafkaProducer的send方法时,首先调用的是ProducerInterceptor,,即生产者拦截器,对消息进行预处理

2. 对传入的Key和Value进行序列化

3. 对消息进行分区,将消息发送到指定的分区

4. 将消息存储在RecordAccumulator中进行缓存

5. 发送线程Sender轮训RecordAccumulator中的队列,

6. 在Sender中将消息组装成ClientRequest对象,通过NetworkClient,kafkaChannel发送到服务器端

7. 服务器端接收到消息后,通过NetworkReceive返回给客户端响应消息

服务端处理及响应如下图所示:

1. 服务端的Acceptor专门用来接收客户端的请求连接

2. Acceptor接收到请求后转交给Processor处理

3. Processor中会有一个Request处理器,KafkaRequestHandler

4.KafkaRequestHandler会调用KafkaApis张的业务来处理请求

5. KafkaApis将处理的结果返回到RequestChannel的Response集合中,在转交给Processor,最后返回给客户端

本文从整体角度分析了Kafka Producer流程,下一篇我们将介绍kafka partition(分区)。



长按二维码,关注BearData

以上是关于002- Kafka技术内幕之Producer(生产者)概述的主要内容,如果未能解决你的问题,请参考以下文章

大数据技术之_10_Kafka学习_Kafka概述+Kafka集群部署+Kafka工作流程分析+Kafka API实战+Kafka Producer拦截器+Kafka Streams

Kafka之Producer

Kafka系列之-自定义Producer

apache kafka系列之Producer处理逻辑

Kafka解惑之Old Producer—— Beginning

Kafka 学习笔记之 Producer/Consumer (Scala)