全文目录:
开篇语
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!
前言
Apache Kafka 是一个分布式流式平台,广泛用于构建高吞吐量的消息传递系统。Kafka 可以作为消息队列、日志收集系统等进行使用。通常,Kafka 集群由多个 Broker 实例组成,以实现负载均衡和容错能力。在本文中,我们将详细介绍如何在本地机器上搭建一个包含多个 Kafka Broker 的集群,并为你提供相应的配置步骤和技巧。
1. Kafka 集群架构
Kafka 集群由多个 Broker 实例组成,每个 Broker 实例都管理着一部分数据。Kafka 允许集群中的多个 Broker 共同工作,通过分区(Partition)和副本(Replica)机制来保证数据的高可用性和扩展性。
- Broker:Kafka 集群中的每个节点(服务)称为 Broker。每个 Broker 负责处理一部分的生产者和消费者请求。
- Topic:Kafka 中的消息流是通过 Topic 来组织的,每个 Topic 可以包含多个分区(Partition),而每个分区又可以有多个副本。
- Partition:每个 Topic 可以分为多个分区,分区内的消息是有序的。分区能够实现数据的并行处理。
- Replica:每个分区有多个副本(Replica),副本之间在不同的 Broker 上,以确保数据的可靠性和高可用性。
2. 环境要求
在本地搭建 Kafka 多 Broker 集群,需要以下环境:
- Java:Kafka 是用 Java 开发的,因此需要安装 Java(推荐使用 JDK 8 版本)。
- Zookeeper:Kafka 使用 Zookeeper 来管理集群的元数据和协调各个 Broker 实例。我们需要配置 Zookeeper。
2.1 安装 Java
Kafka 需要 Java 环境来运行。你可以通过以下命令检查是否已安装 Java:
java -version
如果没有安装 Java,可以从 Oracle 官方网站 下载并安装 JDK。
2.2 安装 Zookeeper
Kafka 依赖 Zookeeper 来管理集群状态。虽然 Kafka 2.8.0 及以上版本开始支持 KRaft 模式(不依赖 Zookeeper),但在本地多 Broker 集群的搭建中,我们通常还是使用 Zookeeper。
你可以通过下载并配置 Zookeeper 来进行集群管理:
下载 Zookeeper:
wget https://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.7.0-bin.tar.gz tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz cd apache-zookeeper-3.7.0-bin
配置 Zookeeper:编辑
conf/zoo.cfg
配置文件,至少指定数据目录。cp conf/zoo_sample.cfg conf/zoo.cfg
打开
zoo.cfg
文件,并配置数据目录和端口(默认端口是 2181):dataDir=/var/lib/zookeeper clientPort=2181
启动 Zookeeper:
bin/zkServer.sh start
使用以下命令查看 Zookeeper 状态:
bin/zkServer.sh status
3. 安装 Kafka
下载 Kafka:
wget https://mirror.bit.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz tar -zxvf kafka_2.13-2.8.0.tgz cd kafka_2.13-2.8.0
配置 Kafka:
打开
config/server.properties
配置文件,配置以下项:- broker.id:每个 Broker 实例必须指定唯一的 ID。对于每个 Kafka Broker 实例,设置不同的
broker.id
。 - listeners:Kafka Broker 启动时的监听地址,可以使用
PLAINTEXT://hostname:9092
或PLAINTEXT://0.0.0.0:9092
。 - zookeeper.connect:配置 Zookeeper 地址,用于 Kafka 集群中的协调。
配置示例如下:
broker.id=1 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181 log.dirs=/tmp/kafka-logs num.partitions=1
对于其他 Kafka 实例,只需更改
broker.id
和listeners
配置。例如,第二个实例的配置文件可以如下:broker.id=2 listeners=PLAINTEXT://localhost:9093 zookeeper.connect=localhost:2181 log.dirs=/tmp/kafka-logs-2 num.partitions=1
以上配置意味着第二个 Kafka Broker 实例将监听
localhost:9093
,并且broker.id
为 2。- broker.id:每个 Broker 实例必须指定唯一的 ID。对于每个 Kafka Broker 实例,设置不同的
启动 Kafka Broker:
启动 Kafka Broker 时,指定不同的
server.properties
配置文件。分别启动多个 Kafka Broker 实例:启动第一个 Broker:
bin/kafka-server-start.sh config/server.properties
启动第二个 Broker(更改配置文件中的
broker.id
和端口):bin/kafka-server-start.sh config/server-2.properties
4. 创建 Topic
Kafka 中的数据是按 Topic 来组织的,每个 Topic 又可以划分成多个 Partition。我们可以使用以下命令创建 Topic:
bin/kafka-topics.sh --create --topic my_topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2
解释:
--topic
:指定 Topic 名称。--partitions
:指定 Partition 数量。--replication-factor
:指定副本数。--bootstrap-server
:指定 Kafka Broker 地址。
4.1 查看创建的 Topic
可以通过以下命令查看当前 Kafka 集群中的所有 Topic:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
5. 测试 Kafka 集群
5.1 生产者(Producer)测试
通过 Kafka 提供的生产者工具来发送消息:
bin/kafka-console-producer.sh --topic my_topic --bootstrap-server localhost:9092
输入消息并按回车,消息将被发送到 Kafka 集群的 my_topic
Topic 中。
5.2 消费者(Consumer)测试
通过 Kafka 提供的消费者工具来接收消息:
bin/kafka-console-consumer.sh --topic my_topic --bootstrap-server localhost:9092 --from-beginning
这个命令会消费从 my_topic
Topic 中开始的所有消息。
6. 小结
通过以上步骤,我们成功在本地搭建了一个包含多个 Broker 实例的 Kafka 集群。Kafka 的高可用性和分布式特性可以帮助我们处理大规模的数据流和消息系统。本文介绍了如何在单机环境下启动一个多 Broker 的 Kafka 集群,配置 Zookeeper,启动多个 Kafka Broker,并测试生产者和消费者。
搭建和配置 Kafka 集群时,需要特别注意 Broker 的 ID、端口的配置,以及 Zookeeper 的连接。通过合理配置,我们可以实现 Kafka 集群的高可用和负载均衡,满足大规模数据处理和消息传输的需求。
… …
文末
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
… …
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
版权声明:本文由作者原创,转载请注明出处,谢谢支持!