30分鍾了解如何使用Kafka


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的入門,更加深入的知識還需要各位小伙伴一起去探索。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM