全文目錄:
- 開篇語
- 前言
- 1. Kafka 集群架構
- 2. 環境要求
- 2.1 安裝 Java
- 2.2 安裝 Zookeeper
- 3. 安裝 Kafka
- 4. 創建 Topic
- 4.1 查看創建的 Topic
- 5. 測試 Kafka 集群
- 5.1 生產者(Producer)測試
- 5.2 消費者(Consumer)測試
- 6. 小結
- 文末
開篇語
哈嘍,各位小伙伴們,你們好呀,我是喵手。運營社區:C站/掘金/騰訊云/阿里云/華為云/51CTO;歡迎大家常來逛逛
??今天我要給大家分享一些自己日常學習到的一些知識點,并以文字的形式跟大家一起交流,互相學習,一個人雖可以走的更快,但一群人可以走的更遠。
??我是一名后端開發愛好者,工作日常接觸到最多的就是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 !!!
??若喜歡我,就請關注我叭。
??若對您有用,就請點贊叭。
??若有疑問,就請評論留言告訴我叭。
版權聲明:本文由作者原創,轉載請注明出處,謝謝支持!