Kafka 的核心功能是高性能的消息發送與高性能的消息消費。Kafka 名字的由來是 Kafka 三位原作者之一 Jay Kreps 說 Kafka 系統充分優化了寫操作,所以用一個作家的名字來命名很有意義,他非常喜歡作家 Franz Kafka,並且用 Kafka 命名開源項目很酷 。本文是 Ka... ...
Kafka 的核心功能是高性能的消息發送與高性能的消息消費。Kafka 名字的由來是 Kafka 三位原作者之一 Jay Kreps 說 Kafka 系統充分優化了寫操作,所以用一個作家的名字來命名很有意義,他非常喜歡作家 Franz Kafka,並且用 Kafka 命名開源項目很酷 。以下是 Kafka 的快速入門教程。
下載並解壓縮 Kafka 二進位代碼壓縮文件
打開 Kafka 官網的下載地址,可以看到不同版本的 Kafka 二進位代碼壓縮包下載鏈接,如下圖所示:
當前最新的 Kafka 版本是 3.5.0,提供了兩個二進位壓縮包可供下載:
- kafka_2.12-3.5.0.tgz
- kafka_2.13-3.5.0.tgz
其中的 2.12/2.13 表示編譯 Kafka 的 Scale 語言版本,後面的 3.5.0 是 Kafka 的版本。僅當使用 Scala 並且希望 Kafka 與使用的 Scala 版本一致時,選擇 Scale 語言版本才有意義,否則兩個版本都可以運行(推薦 2.13)。我這次下載的是 kafka_2.13-3.5.0.tgz。
下載完畢後將文件放至/usr/local/etc
目錄下,打開終端使用下列命令解壓文件:
cd /usr/local/etc
tar -zxf kafka_2.13-3.5.0.tgz
cd kafka_2.13-3.5.0
啟動伺服器
註意:啟動前需確保本地環境已安裝 Java 8+。
首先需要啟動 ZooKeeper 伺服器(ZooKeeper 是為 Kafka 提供協調服務的工具),可以直接使用 Kafka 內置的 ZooKeeper 伺服器,運行下列命令:
bin/zookeeper-server-start.sh config/zookeeper.properties
接下來打開另一個終端會話並運行下列語句來啟動 Kafka 伺服器:
bin/kafka-server-start.sh config/server.properties
所有服務成功啟動後,會擁有一個正在運行並可供使用的基本 Kafka 環境。
註意確保在 Kafka 的安裝目錄下運行 Kafka 命令,或者將 Kafka 的bin
目錄添加到系統的環境變數中,這樣就可以在任意位置運行 Kafka 命令。
創建 topic
Kafka 是一個分散式事件流平臺,它允許用戶在多台機器上讀取、寫入、存儲和處理事件(在文檔中也稱為記錄或消息)。 事件包括支付交易、手機的地理位置更新、發貨訂單、來自物聯網設備或醫療設備的感測器測量等等。這些事件被管理並存儲在主題(topic)中。簡單地說,topic 類似於文件系統中的文件夾,而事件則是該文件夾中的文件。 因此,在寫入第一個事件之前,必須創建一個 topic。確保之前啟動 ZooKeeper 和 Kafka 的終端不被關閉,再打開另一個終端會話並運行以下命令:
bin/kafka-topics.sh --create --topic test-events --bootstrap-server localhost:9092
這一步創建了一個名為 test-events 的 topic。接下來可以使用下麵的命令來查看該 topic 的狀態:
bin/kafka-topics.sh --describe --topic test-events --bootstrap-server localhost:9092
發送信息
Kafka 客戶端通過網路與 Kafka brokers(伺服器) 進行通信,用於寫入(或讀取)事件。運行控制台生產者客戶端,將一些事件寫入主題。預設情況下,輸入的每一行將導致一個單獨的事件被寫入主題。
再打開一個新的終端,執行下列命令:
bin/kafka-console-producer.sh --topic test-events --bootstrap-server localhost:9092
Hello, Kafka
This is my first enent
可以隨時使用 Ctrl + C 停止生產者客戶端。
消費信息
打開另一個終端會話並運行控制台消費者客戶端來讀取剛剛創建的事件:
bin/kafka-console-consumer.sh --topic test-events --from-beginning --bootstrap-server localhost:9092
之前的命令都運行成功的話,可以看到上一步發送的兩條消息。 可以隨時使用 Ctrl + C 停止消費者客戶端。
還可以嘗試切換回生產者終端(上一步)編寫其他事件,並查看事件是如何立即顯示在消費者終端的。
由於事件持久存儲在 Kafka 中,因此它們可以被任意數量的消費者讀取任意多次。可以通過打開另一個終端會話再次運行本條命令來輕鬆驗證這一點。
終止 Kafka 環境
現在就已經完成了快速入門,可以根據以下步驟終止 Kafka 環境。
- 使用 Ctrl + C 停止生產者和消費者客戶端。
- 使用 Ctrl + C 停止 Kafka 伺服器。
- 使用 Ctrl + C 停止 ZooKeeper 伺服器。