基于Kafka2.1解读Producer原理


前言

相信现在的javer对于Kafka应该都很熟悉了,不管是八股文还是工作中使用。虽然Kafka server是scala写的,但是client是java写的,所以咱们理解client的代码还是比较容易的,今天先来基于源码解读下Kafka Producer的主体流程


一、Kafka Producer是什么?

这个应该不用过多介绍了吧,我们发送消息到MQ就是通过Kafka Producer来实现的。

二、主要组件

1.Kafka Producer

Kafka Producer的主要流程

1.1 partitioner

partitioner的作用是用来对发送的消息进行partition选择的,譬如msg要发送某个topic,topic里有多个partition,需要选择发往哪个partition。
如果我们发送消息时设置了partition key,那么就按照partition key进行hash,然后选择发送的partition
如果没有设置partition key,那么就默认使用轮询的方式来选择partition

1.2 keySerializer

顾名思义,就是对key进行序列化的工具类。因为我们的数据需要发送到网络里,所以数据必须序列化成二进制,所以需要进行序列化

1.3 valueSerializer

<
Kafka 2.1 版本的安装包可以通过 Apache Kafka 的官方资源进行下载。根据历史版本的发布情况,Kafka 的发布通常会提供与不同 Scala 版本兼容的版本,例如 `kafka_2.11` 或 `kafka_2.12`。Kafka 2.1 版本对应的 Scala 版本通常是 2.112.12。 ### 下载方式 1. **通过清华大学镜像下载 Kafka 2.1 版本** 清华大学开源软件镜像站提供了 Kafka 的历史版本下载地址。可以使用以下命令下载 Kafka 2.1 版本(以 Scala 2.12 为例): ```bash wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.1.1/kafka_2.12-2.1.1.tgz ``` 如果需要其他 Scala 版本(如 2.11),可以将 `kafka_2.12-2.1.1.tgz` 替换为 `kafka_2.11-2.1.1.tgz`。 2. **通过 Apache Kafka 官方下载页面** Kafka 的官方下载页面提供了历史版本的下载链接,可以通过以下 URL 访问: - 官方地址:[https://kafka.apache.org/downloads](https://kafka.apache.org/downloads) 在页面中找到 Kafka 2.1 版本,并选择适合的 Scala 版本进行下载。 3. **验证下载版本的兼容性** Kafka 2.1 版本通常依赖特定的 Scala 和 Gradle 配置。例如,在构建 Kafka 源码时,需确保 `gradle.properties` 文件中的 `scalaVersion` 与安装环境一致。例如,Kafka 2.1 版本可能使用 `scalaVersion=2.11.8` 或 `scalaVersion=2.12.10` [^2]。 4. **解压安装包** 下载完成后,可以使用以下命令解压 Kafka 安装包: ```bash tar -xzf kafka_2.12-2.1.1.tgz ``` 5. **构建 Kafka 源码(可选)** 如果需要从源码构建 Kafka 2.1 版本,确保 Gradle 配置正确,并使用以下命令进行构建: ```bash ./gradlew jar ``` 同时,确保 `gradle.properties` 文件中配置的 `scalaVersion` 和 `zookeeper` 版本与构建环境一致 [^4]。 --- ### 注意事项 - **Scala 版本选择**:Kafka 的版本命名中包含 Scala 版本信息,如 `kafka_2.12-2.1.1` 表示该版本使用 Scala 2.12 构建。选择时需确保与运行环境的 Scala 版本兼容。 - **ZooKeeper 依赖**:Kafka 依赖 ZooKeeper 进行集群协调,建议使用 ZooKeeper 3.5.x 或更高版本。 - **Gradle 配置**:如果需要构建源码,确保 `gradle.properties` 中的 `gradle` 和 `zookeeper` 版本与构建要求一致 [^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值