002- Kafka技术内幕之Producer(生产者)概述
Posted BearData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002- Kafka技术内幕之Producer(生产者)概述相关的知识,希望对你有一定的参考价值。
通过上一篇我们基本了解了Kafka的相关概念,本篇我们将介绍Kafka的Producer。
最新版本的生产者程序使用KafkaProducer对象代表一个生产者的客户端进程。生产者要发送消息,并不是直接发送给服务端,而是先在客户端把消息放入队列中,然后由一个消息发送线程从队列中拉取消息,以批量的方式发送消息给服务器。在Kafka中,RecordAccumulator负责缓存生产者客户端的消息,发送线程Sender负责读取记录收集器的批量消息,通过网络发送给服务端。为了保证客户端网络请求的快速响应,Kafka使用选择器(Selector)处理网络连接和读写处理,使用网络连接(NetworkClient)处理客户端网络请求。
整个客户端请求如下图所示:
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