概述
Kafka是一種高吞吐量的分布式釋出訂閱消息系統,就是我們常說的消息隊列。
基本術語:
1. topic:kafka通過topic來管理不同消息的分類
2. producer:把消息釋出到kafka一個topic的過程。
3. consumer:從kafka訂閱釋出的消息的過程。
4. broker:kafka由一個或者多個服務組成叢集,每個服務成為一個broker。
一個釋出訂閱的kafka消息系統流程如圖:
至此,我們對kafka有了一個基本的認知,即一個分布式消息系統,提供不同消息按照不同的topic來進行釋出和訂閱。
簡單安裝
單機安裝
下載下傳位址:http://kafka.apache.org/downloads.html
本例中我們使用0.8.2.1版本
1. 下載下傳 安裝包kafka_2.10-0.8.2.1.tgz
2. 解壓,tar –xzf kafka_2.10-0.8.2.1.tgz
3. 進到解壓目錄,cd kafka_2.10-0.8.2.1
4. 啟動服務
先不管配置,啟動服務,kafka依賴zookeeper服務,如果沒有也不用管,kafka自帶簡單的zookeeper服務
啟動zk:bin/zookeeper-server-start.sh config/zookeeper.properties &
啟動kafka:bin/kafka-server-start.sh config/server.properties &
5. 建立topic
bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test
6. 啟動發送端,發送消息:
bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test
this is a message #控制台輸入資訊
this is another message #控制台輸入資訊,輸完後按Ctrl+C退出
7. 啟動消費端:
bin/kafka-console-consumer.sh –zookeeper localhost:2181 –topic test –from-beginning
即可看到發送端發送的消息。
此時表示我們的單機kafka服務成功。
叢集安裝
僞叢集安裝
安裝
僞叢集即在一台機器上起多個kafka服務執行個體,組成叢集模式
首先複制兩個server.properties
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
分别編輯這兩個檔案,修改結果如下:
config/server-1.properties:
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
然後分别啟動這兩個broker:
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &
測試
-
建立一個topic:
bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 3 –partitions 1 –topic replicated-test-topic
-
顯示該broker的運作情況:
bin/kafka-topics.sh –describe –zookeeper localhost:2181 –topic replicated-test-topic
-
發送消息:
bin/kafka-console-producer.sh –broker-list localhost:9092 –topic replicated-test-topic
-
接收消息:
bin/kafka-console-consumer.sh –zookeeper localhost:2181 –from-beginning –topic replicated-test-topic
- 如果kill掉其中一個服務,發送和接收消息正常,可以自己驗證。
叢集安裝
叢集安裝同單機安裝情況相同,注意配置server.properties中:
1. broker.id要不同
2. port相同
3. zookeeper.connect一直,可以使用自己的zookeeper服務位址
常用指令
1、啟動Kafka
bin/kafka-server-start.sh config/server.properties &
2、停止Kafka
bin/kafka-server-stop.sh
3、建立topic
bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test
4、列舉所有的topic
bin/kafka-topics.sh –list –zookeeper localhost:2181
5、列舉出所有topic的詳細資訊
bin/kafka-topics.sh –describe –zookeeper localhost:2181
6、發送資訊:
bin/kafka-console-producer.sh –broker-list localhost:9092 –topic test
7、擷取資訊:
bin/kafka-console-consumer.sh –zookeeper localhost:2181 –topic test –from-beginning
官網參考:http://kafka.apache.org/documentation.html#gettingStarted