【赵渝强老师】Kafka生产者的执行过程

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: Kafka生产者(Producer)将消息序列化后发送到指定主题的分区。整个过程由主线程和Sender线程协调完成。主线程创建KafkaProducer对象及ProducerRecord,经过拦截器、序列化器和分区器处理后,消息进入累加器。Sender线程负责从累加器获取消息并发送至KafkaBroker,Broker返回响应或错误信息,生产者根据反馈决定是否重发。视频和图片详细展示了这一流程。

b205.png

Kafka的生产者Producer将消息序列化之后,发送到对应主题的指定分区上。下图为展示了生产者的执行过程。

image.png


整个生产者客户端由两个线程协调运行,这两个线程分别为主线程Sender线程视频讲解如下:


1、主线程


在主线程中将创建一个KafkaProducer对象,并由KafkaProducer创建一个ProducerRecord对象。该对象代表了生产者Producer发送到Kafka服务器端的一个消息对象。ProducerRecord对象是一个Key-Value键值对的对象,其中包含了主题名称、主题中的分区号、时间戳以及其他Key-Value键值对,其中最重要的就是Kafka服务器端的主题名称。


ProducerRecord创建成功后,需要经过拦截器、序列化器将其转换为字节数组,这样它们才能够在网络上传输。然后消息到达了分区器。分区器的作用是根据发送过程中指定的有效的分区号,将ProducerRecord发送到该分区中;如果没有指定主题中的分区号,则会根据Key进行哈希运算,将ProducerRecord映射到一个对应的分区。ProducerRecord将默认采用当前的时间作为时间戳,用户也创建ProducerRecord的时候提供一个时间戳。而Kafka最终使用的时间戳取决于主题的配置。下表列举了主题时间戳的两种配置。


image.png

2、Sender线程


KafkaProducer创建的消息最终会缓存到生产者的消息累加器中,并由发送线程负责从消息累加器中获取消息并将其发送到KafkaBroker中。KafkaBroker在收到消息时会返回一个响应给KafkaProducer。如果消息写入成功,KafkaBroker会返回一个RecordMetaData对象,它包含了主题和分区信息,以及消息在分区里的偏移量,同时时间戳也会返回给用户;如果写入失败,KafkaBroker会返回一个错误。生产者在收到错误之后会尝试重新发送消息。几次之后如果还是失败的话,生产者就返回错误消息。


目录
打赏
0
61
61
0
179
分享
相关文章
SpringBoot使用Kafka生产者、消费者
SpringBoot使用Kafka生产者、消费者
42 10
【赵渝强老师】Kafka生产者的消息发送方式
Kafka生产者支持三种消息发送方式:1. **fire-and-forget**:发送后不关心结果,适用于允许消息丢失的场景;2. **同步发送**:通过Future对象确保消息成功送达,适用于高可靠性需求场景;3. **异步发送**:使用回调函数处理结果,吞吐量较高但牺牲部分可靠性。视频和代码示例详细讲解了这三种方式的具体实现。
【赵渝强老师】Kafka的消费者与消费者组
Kafka消费者是从Kafka集群中消费数据的客户端。单消费者模型在数据生产速度超过消费速度时会导致数据堆积。为解决此问题,Kafka引入了消费者组的概念,允许多个消费者共同消费同一主题的消息。消费者组由一个或多个消费者组成,它们动态分配和重新分配主题分区,确保消息处理的高效性和可靠性。视频讲解及示意图详细展示了这一机制。
【赵渝强老师】Kafka的主题与分区
Kafka 中的消息按主题分类,生产者发送消息到特定主题,消费者订阅主题消费。主题可分多个分区,每个分区仅属一个主题。消息追加到分区时,Broker 分配唯一偏移量地址,确保消息在分区内的顺序性。Kafka 保证分区有序而非主题有序。示例中,Topic A 有 3 个分区,分区可分布于不同 Broker 上,支持负载均衡和容错。视频讲解及图示详见原文。
115 2
Apache Kafka核心概念解析:生产者、消费者与Broker
【10月更文挑战第24天】在数字化转型的大潮中,数据的实时处理能力成为了企业竞争力的重要组成部分。Apache Kafka 作为一款高性能的消息队列系统,在这一领域占据了重要地位。通过使用 Kafka,企业可以构建出高效的数据管道,实现数据的快速传输和处理。今天,我将从个人的角度出发,深入解析 Kafka 的三大核心组件——生产者、消费者与 Broker,希望能够帮助大家建立起对 Kafka 内部机制的基本理解。
148 2
【赵渝强老师】Kafka分区的副本机制
在Kafka中,每个主题可有多个分区,每个分区有多个副本。其中仅有一个副本为Leader,负责对外服务,其余为Follower。当Leader所在Broker宕机时,Follower可被选为新的Leader,实现高可用。文中附有示意图及视频讲解。
173 0
【赵渝强老师】Kafka的体系架构
Kafka消息系统是一个分布式系统,包含生产者、消费者、Broker和ZooKeeper。生产者将消息发送到Broker,消费者从Broker中拉取消息并处理。主题按分区存储,每个分区有唯一的偏移量地址,确保消息顺序。Kafka支持负载均衡和容错。视频讲解和术语表进一步帮助理解。
大数据-76 Kafka 高级特性 稳定性-消费重复 生产者、Broker、消费者 导致的重复消费问题
大数据-76 Kafka 高级特性 稳定性-消费重复 生产者、Broker、消费者 导致的重复消费问题
87 1
消费kafka不需要设置 压缩协议吗 假如生产者压缩协议是lz4
消费kafka不需要设置 压缩协议吗 假如生产者压缩协议是lz4
【Azure 事件中心】Kafka 生产者发送消息失败,根据失败消息询问机器人得到的分析步骤
【Azure 事件中心】Kafka 生产者发送消息失败,根据失败消息询问机器人得到的分析步骤
210 0