2.1 要事先行在使用 Kafka 之前需要先做一些事情接下来介绍怎样做。2.1.1 选择操作系统Kafka 是使用 Java 开发的应用程序所以它可以运行在 Windows、MacOS 和 Linux 等多种操作系统上。着重介绍如何在 Linux 上安装和使用 Kafka因为把 Kafka 安装在Linux 系统上是最为常见的。即使只是把 Kafka 作为一般性用途仍然推荐使用 Linux 系统。2.1.2 版本选择2.1.3 Kafka2.x的安装、管理和配置Kafka是Java生态圈下的一员用Scala编写运行在Java虚拟机上所以安装运行和普通的Java程序并没有什么区别。安装Kafka官方说法Java环境推荐Java8.Kafka需要Zookeeper保存集群的元数据信息和消费者信息。Kafka一般会自带Zookeeper但是从稳定性考虑应该使用单独的Zookeeper而且构建Zookeeper集群。在http://kafka.apache.org/downloads上寻找合适的版本下载我们这里选用的是kafka_2.12-2.8.1kafka_2.12-2.8.1 这里Kafka的版本是2.8.1的版本。2.12是Scala的版本。下载完成后解压到本地目录tar-xzf kafka_2.12-2.8.1.tgz后台启动ZooKeeper# 更详细的日志输出 nohup bin/zookeeper-server-start.sh config/zookeeper.properties1zookeeper_stdout.log2zookeeper_stderr.log后台启动kafka# 先确认ZooKeeper已启动默认端口2181再启动Kafka nohup bin/kafka-server-start.sh config/server.propertieskafka.log21kafka基本的操作和管理# 主题相关./kafka-topics.sh--bootstrap-server localhost:9092--list./kafka-topics.sh--bootstrap-server localhost:9092--describe./kafka-topics.sh--bootstrap-server localhost:9092--create--topic new-topic--partitions3--replication-factor1# 查看消费者偏移量详情./kafka-consumer-groups.sh--bootstrap-server localhost:9092--group my-group--describe主题删除# 使用bootstrap-server./kafka-topics.sh--bootstrap-server localhost:9092--delete--topic my-topic查看主题消息# 查看最新消息./kafka-console-consumer.sh--bootstrap-server localhost:9092--topic my-topic # 从头消费./kafka-console-consumer.sh--bootstrap-server localhost:9092--topic my-topic--from-beginning # 消费特定分区./kafka-console-consumer.sh--bootstrap-server localhost:9092--topic my-topic--partition0# 消费特定偏移量./kafka-console-consumer.sh--bootstrap-server localhost:9092--topic my-topic--offset100--partition0Broker配置配置文件放在Kafka目录下的config目录中主要是server.properties文件常规配置broker.id在单机时无需修改但在集群下部署时往往需要修改。它是个每一个broker在集群中的唯一表示要求是正数。当该服务器的IP地址发生改变时broker.id没有变化则不会影响consumers的消息情况每个 broker 都需要有一个标识符使用 broker.id 来表示。它的默认值是 0也可以被设置成其他任意整数。这个值在整个 Kafka 集群里必须是唯一的。这个值可以任意选定如果出于维护的需要可以在服务器节点间交换使用这些 ID。建议把它们设置成与机器名具有相关性的整数这样在进行维护时将 ID 号映射到机器名就没那么麻烦了。例如如果机器名包含唯一性的数字比如 host1.example.com、host2.example.com那么用这些数字来设置 broker.id 就再好不过了。port如果使用配置样本来启动 Kafka它会监听9092端口。修改 port 配置参数可以把它设置成其他任意可用的端口。要注意如果使用1024以下的端口需要使用 root 权限启动Kafka不过不建议这么做。zookeeper.connectlog.dirsKafka把所有的消息都保存在磁盘上存放这些数据的目录通过log.dirs指定。可以使用多路径使用逗号分隔。如果是多路径Kafka会根据“最少使用”原则把同一个分区的日志片段保存到同一路径下。会往拥有最少数据分区的路径新增分区。num.recovery.threads.per.data.dir每数据目录用于日志恢复启动和关闭时的线程数量。因为这些线程只是服务器启动正常启动和崩溃后重启和关闭时会用到。所以完全可以设置大量的线程来达到并行操作的目的。注意这个参数指的是每个日志目录的线程数比如本参数设置为8而log.dirs设置为了三个路径则总共会启动24个线程。auto.create.topics.enable是否允许自动创建主题。如果设为true那么produce生产者往主题写消息consume消费者从主题读消息或者fetch metadata任意客户端向主题发送元数据请求时一个不存在的主题时就会自动创建。缺省为true。delete.topic.enabletrue删除主题配置默认未开启主题配置2.1.4 Kafka3.x的安装、管理和配置一般推荐下载3.9.1的版本,推荐使用 Java 17 (最稳定)