Kafka 的核心功能是高效能的訊息傳送與高效能的訊息消費。Kafka 名字的由來是 Kafka 三位原作者之一 Jay Kreps 說 Kafka 系統充分優化了寫操作,所以用一個作家的名字來命名很有意義,他非常喜歡作家 Franz Kafka,並且用 Kafka 命名開源專案很酷 。以下是 Kafka 的快速入門教學。
開啟 Kafka 官網的下載地址,可以看到不同版本的 Kafka 二進位制程式碼壓縮包下載連結,如下圖所示:
當前最新的 Kafka 版本是 3.5.0,提供了兩個二進位制壓縮包可供下載:
其中的 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 命令。
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 環境。