搞流處理的話,無論如何是繞不過kafka的了,還好kafka是乙個概念比較好理解的架構模型。
我覺得官方的這三張圖已經很好地把模型結構給闡述清楚了。
發布-訂閱模型:實現訊息寫入與訊息讀取解耦。kafka相當於是乙個訊息緩衝池
2. 日誌檔案順序結構:kafka的高吞吐量就是依賴順序寫入(當然還包括了一些零拷貝的內容);訊息可以寫入多個分割槽來實現並行,但是多分割槽的主題只能保證乙個分區內的訊息是有序的。
概念理解了,就可以開始上手實踐。(概念理解看起來簡單,但是真正要把乙個框架的細節研究透需要花費大量的精力)
說到入門,無論是哪個框架的學習,我都是推薦直接看官方文件. 三個原因:1. 最新的版本和**(基本上版本一更新,文件也會同步) 2. 比較準確(畢竟受這麼多人監督) 3. 寫的比較精緻用心(為了吸引大家來用吧)
可能有人覺得直接看英文壓力太大,其實要想成為優秀的程式設計師,英文是必備技能了,所以咬咬牙還是硬啃吧,回頭你會發現,其實英文文件看起來還是挺簡單的(起碼比**簡單多了)。
接下來的**主要來自官方文件
tar -xzf kafka_2.12-2.2.0.tgz
cd kafka_2.12-2.2.0
解壓後,我一般會在.bashrc配置檔案中加入以下兩行**:
export
2. 啟動服務
kafka是通過zookeeper來對broker(即訊息具體負責人)進行管理, 需啟動zookeeper集群。若已有zookeeper集群,可直接使用。同時kafka原始碼包裡也自帶zookeeper
# 加--daemon選項可實現後台執行守護程序
bin/zookeeper-server-start.sh config/zookeeper.properties
broker服務是真正處理訊息的程序,他包括響應生產者和消費者請求,同時也負責本broker內的分割槽副本同步等工作。
# 同樣,加--daemon選項可實現後台執行守護程序
bin/kafka-server-start.sh config/server.properties
3. 主題建立
kafka提供了一些工具來進行主題管理工作, 需指定broker服務的ip和埠(預設9092)
# 建立主題
bin/kafka-topics.sh --create --bootstrap-server localhost:9092
--replication-factor 1 --partitions 1 --topic test
# 判斷主題是否成功建立
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
4. 測試是否可正常寫入和消費
# 使用kafka自帶的生產者工具
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 在開啟乙個終端,使用kafka自帶的消費者工具
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092
--topic test --from-beginning
此時,如果在生產者終端輸入內容,然後在消費者終端能看到資料,那就證明kafka在正常運作
關於搭建乙個穩健的用於生產環境kafka集群還需要更多的知識和考慮更多的業務場景。
快速搭建kafka集群
先安裝jdk和zookeeper 修改配置檔案,進入config目錄修改server.properties檔案 第21行 broker.id 1,每個節點配置乙個編號,保證每個節點的編號在集群裡面是唯一的。第31行 listeners plaintext 開啟註解配置機器的ip和埠號,預設9092。...
使用Docker快速搭建Kafka開發環境
1 zookeeper 1 kafka 這裡以我自己最常用的wurstmeister kafka為例,使用docker compose執行乙個只有乙個zookeeper node和乙個kafka broker的開發環境 version 2 services zoo1 image wurstmeist...
搭建kafka環境
步驟2 啟動zookeeper bin zookeeper server start.sh config zookeeper.properties步驟3 修改配置檔案config server.properties,新增如下內容 host.name localhost advertised.host...