🎣实践指南-010-kafka编译与测试

type
status
date
slug
summary
tags
category
icon
password
kafka 官网提供了编译好的二进制包,但是基本的编译方法还是需要知道的。以下测试均在系统 Ubuntu 20.04 中进行。

1. 简介

kafka 是一款开源的分布式事件流平台,使用 Scala 和 Java 编写,被全球很多公司使用,目前托管在 Apach 基金会旗下。以下是官网的简介。
notion image

2. 核心概念

下面介绍Kafka相关概念,以便运行下面实例的同时,更好地理解Kafka.1. BrokerKafka集群包含一个或多个服务器,这种服务器被称为broker2. Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)3. PartitionPartition是物理上的概念,每个Topic包含一个或多个Partition.4. Producer负责发布消息到Kafka broker5. Consumer消息消费者,向Kafka broker读取消息的客户端。6. Consumer Group每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

3. 构建

由于 kafka 使用了 Scala 和 Java 编写,所以在编译时候,需要提供 Scala 和 Java 环境。目前 kafka 与 Scala 版本强依赖,因此针对不同的 Scala 版本,kafka 提供了不同的二进制包。同时,kafka 也需要使用 gradle 构建。是否需要手动安装 gradle,具体要看构建的版本。

3.1. 下载源码

官网提供了目前所有稳定版的更新,下载 kafka-xxx-src.tgz 格式源码包即可,地址为 http://kafka.apache.org/downloads。本次以 kafka-2.3.1 版本作为演示。

3.2. 安装依赖

3.3. 手动安装 gradle?

是否手动安装 gradle,是依赖版本决定的,目前 Ubuntu 20.04 只提供 gradle 4.4,为了避免麻烦,一般都需要手动安装高版本的 gradle。目前所有版本 gradle 的下载页面地址为 https://gradle.org/releases
修改 kafka 源码中的 build.gradle ,使用阿里云加速构建。
替换国内源后,依赖下载会很快。最后构建进入源码目录,运行构建命令。
构建完成后,生成会在 core/build/distributions/ 下。

4. 部署

4.1. 安装

4.2. 使用 systemd

kafka 运行,依赖于 zookeeper,源码中已经自带了 zookeeper,使用即可。
创建 /etc/systemd/system/zookeeper.service。
创建 /etc/systemd/system/kafka.service。
修改 /usr/local/kafka-server/config/server.properties 配置。
最后设置自启动。

5. 测试

6. 其他

6.1. idea 构建

  1. 打开 idea,选择 'Import Project'
  1. 选择 'Import project from external model',选择 gradle
  1. 在 Gradle Home 中,选择之前下载的 gradle 二进制包路径
  1. 修改 kafka 源码中的 build.gradle ,使用阿里云替换
  1. 如果不想使用图形化构建,命令如下

7. 参考

中年码农的困境log-001-我与计算机