Kafka是當下對海量數據提供了最佳支持的MQ中間件,無論是高並發的處理,還是依托zookeeper的水平拓展都有不俗的特性。由於公司最近也在嘗試如何將它應用到開發中以對業務更好的支撐,因此特地分享一些安裝和使用的心得。
一、安裝與啟動
服務器環境采用CentOS 7 x64位系統。實際使用中Kafka依賴Zookeeper進行Broker管理,測試環境我們可以只使用Kafka自帶的Zookeeper。
Kafka運行依賴JVM,首先需要安裝Java
java-1.8.0-openjdk-1.8.0
java-1.8.0-openjdk-devel
解壓Kafka並將解壓的文件放置到系統目錄下
tar -zxvf kafka_2.12-2.1.0.tgz
mv kafka_2.12-2.1.0 /usr/local/kafka
進入kafka下的config目錄,打開zookeeper.properties文件,確定端口號(默認:2181)
打開server.properties文件修改以下配置
broker.id=1 #這個屬性是kafka需要提交給zookeeper注冊的Key num.partitions=3 #主題的默認分區數,可選修改,默認為1 listeners=PLAINTEXT://<host>:9092 #配置當前主機ip,這個是broker的通信地址 zookeeper.connect=localhost:2181 #zookeeper的地址 group.initial.rebalance.delay.ms=3 #集群環境下的節點平衡時間,默認是0
啟動服務
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties #啟動zookeeper服務
bin/kafka-server-start.sh -daemon config/server.properties #啟動kafka服務
最后Jps查看結果
> 13587 Kafka
> 13604 Jps
> 13269 QuorumPeerMain
二、創建主題——生產者與消費者
創建主題
kafka-topics.sh --create --topic test --zookeeper localhost:2181 --partitions 1 --replication-factor 1
我們分別指定了操作類型(create),主題(test),zookeeper的地址(localhost:2181),分區數(1),副本數(1)
查詢主題
bin/kafka-topics.sh --list --zookeeper localhost:2181
啟動生產者
bin/kafka-console-producer.sh --topic test --broker-list <host>:9092
打開另一個終端啟動消費者監聽test主題
bin/kafka-console-consumer.sh --topic test --bootstrap-server <host>:9092 --from-beginning
三、使用輔助Web工具:kafka-mamage
下載:網上的資源很多,不樂意從百度雲下載的可以在我的QQ群獲取(960652410)
修改配置文件application.conf
kafka-manager.zkhosts="localhost:2181"
后台啟動
nohup ./bin/kafka-manager -Dconfig.file=./conf/application.conf -Dhttp.port=8080 >kafka-manager.log 2>&1 &
具體操作網上有大量的現成案例,我主要想說一下為什么選擇kafka-manager。按照別人的說法似乎KafkaOffsetMonitor是最佳選擇,但是KafkaOffsetMonitor是使用AngularJs開發的頁面工具,js資源需要google的支持(防火長城了解一下)。所以權衡再三,我還是選擇了后者。當然有興趣的同學也可以根據實際情況自己開發一個監控工具,由於kafka提供了librdkafka的C/C++開源庫自己寫一個簡單難度其實也不大。我的群里就有我自己使用Qt開發的linux版本的監聽工具。
后記:這里僅僅是對Kafka的入門,更加深入的知識還需要各位小伙伴一起去探索。