Kafka系列2:深入理解Kafka消费者 上篇聊了Kafka概况 , 包含了Kafka的基本概念、。Kafka系列2:深入理解Kafka生产者。" />

Kafka系列2:深入理解Kafka生产者

Kafka系列2:深入理解Kafka生产者


\">Kafka系列2:深入理解Kafka消费者

上篇聊了Kafka概况 , 包含了Kafka的基本概念、设计原理 , 以及设计核心 。 本篇单独聊聊Kafka的生产者 , 包括如下内容:

  • 生产者是如何生产消息

  • 如何创建生产者

  • 发送消息到Kafka

  • 生产者配置

  • 分区

生产者是如何生产消息的

首先来看一下Kafka生产者组件图

第一步 , Kafka 会将发送消息包装为 ProducerRecord 对象 ,  ProducerRecord 对象包含了目标主题和要发送的内容 , 同时还可以指定键和分区 。 在发送 ProducerRecord 对象前 , 生产者会先把键和值对象序列化成字节数组 , 这样它们才能够在网络上传输 。 第二步 , 数据被传给分区器 。 如果之前已经在 ProducerRecord 对象里指定了分区 , 那么分区器就不会再做任何事情 。 如果没有指定分区 , 那么分区器会根据 ProducerRecord 对象的键来选择一个分区 , 紧接着 , 这条记录被添加到一个记录批次里 , 这个批次里的所有消息会被发送到相同的主题和分区上 。 有一个独立的线程负责把这些记录批次发送到相应的 broker 上 。 服务器在收到这些消息时会返回一个响应 。 如果消息成功写入 Kafka , 就返回一个 RecordMetaData 对象 , 它包含了主题和分区信息 , 以及记录在分区里的偏移量 。 如果写入失败 , 则会返回一个错误 。 生产者在收到错误之后会尝试重新发送消息 , 如果达到指定的重试次数后还没有成功 , 则直接抛出异常 , 不再重试 。

推荐阅读