1、簡介java
官網:http://kafka.apache.org/apache
Apache Kafka是分佈式發佈-訂閱消息系統。它最初由LinkedIn公司開發,以後成爲Apache項目的一部分。Kafka是一種快速、可擴展的、設計內在就是分佈式的,分區的和可複製的提交日誌服務。bootstrap
Apache Kafka與傳統消息系統相比,有如下不一樣:服務器
它被設計爲一個分佈式系統,易於向外擴展;socket
它同時爲發佈和訂閱提供高吞吐量;分佈式
它支持多訂閱者,當失敗時能自動平衡消費者;this
它將消息持久化到磁盤,所以可用於批量消費,例如ETL,以及實時應用程序。.net
2、安裝設計
下載地址:wget http://mirrors.shuosc.org/apache/kafka/1.0.2/kafka_2.11-1.0.2.tgz日誌
解壓:tar -zxvf kafka_2.11-1.0.2.tgz
cd kafka_2.11-1.0.2
3、啓動服務器
一、啓動ZooKeeper
Kafka使用ZooKeeper,因此您須要先啓動一個ZooKeeper服務器,若是您尚未。您可使用隨Kafka一塊兒打包的便捷腳原本獲取一個快速可是比較粗糙的單節點ZooKeeper實例。
啓動命令:bin/zookeeper-server-start.sh config/zookeeper.properties
這個 zookeeper中主要就3個配置:
# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
咱們須要記住zookeeper的端口 2181,在後面會用到。
二、Kafka基本配置
Kafka在config目錄下提供了一個基本的配置文件。爲了保證能夠遠程訪問Kafka,咱們須要修改兩處配置。
打開config/server.properties文件,在很靠前的位置有listeners和 advertised.listeners兩處配置的註釋,去掉這兩個註釋,而且根據當前服務器的IP修改以下:
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
# FORMAT:
# listeners = listener_name://host_name:port
# EXAMPLE:
# listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://:9092
# Hostname and port the broker will advertise to producers and consumers. If not set,
# it uses the value for "listeners" if configured. Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://192.168.163.10:9092
當前服務器IP爲192.168.163.10,你須要修改成外網或局域網能夠訪問到的服務器IP。
三、啓動Kafka
接下來啓動Kafka服務:
啓動命令:bin/kafka-server-start.sh config/server.properties
四、建立 Topic
使用下面的命令建立 Topic。
命令:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
五、啓動一個消費者
在一個新的終端執行下面的命令。
命令:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
六、啓動生產者
命令:bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
啓動後,能夠輸入內容,而後回車。
此時你應該能夠在上一個消費者中看到有消息輸出。
七、查看 topic 列表
命令:bin/kafka-topics.sh --list --zookeeper localhost:2181
八、查看描述 topics 信息
命令:bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
第一行給出了全部分區的摘要,每一個附加行給出了關於一個分區的信息。 因爲咱們只有一個分區,因此只有一行。
「Leader」: 是負責給定分區的全部讀取和寫入的節點。 每一個節點將成爲分區隨機選擇部分的領導者。
「Replicas」: 是複製此分區日誌的節點列表,不管它們是不是領導者,或者即便他們當前處於活動狀態。
「Isr」: 是一組「同步」副本。這是複製品列表的子集,當前活着並被引導到領導者。