瞭解並部署 kafka
阿新 • • 發佈:2021-07-28
kafka
Kafka是用scala語言編寫
1.Kafka的特性
- 高吞吐量、低延遲:kafka每秒可以處理幾十萬條訊息,它的延遲最低只有幾毫秒,每個topic可以分多個partition,consumer group 對 partition 進行consume操作。
- 可擴充套件性:kafka叢集支援熱擴充套件
- 永續性、可靠性:訊息被持久化到本地磁碟,並且支援資料備份防止資料丟失
- 容錯性:允許叢集中節點失敗(若副本數量為n,則允許n-1個節點失敗)
- 高併發:支援數千個客戶端同時讀寫
- 順序性:由生產者傳送到一個特定的主題分割槽的訊息將被以他們被髮送的順序來追加。也就是說,
如果一個訊息M1和訊息M2都來自同一個生產者,M1先發,那麼M1將有一個低於M2的偏移,會更早在日誌中出現。
消費者看到的記錄排序就是記錄被儲存在日誌中的順序。
2.Kafka的使用場景:
- 日誌收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一介面服務的方式開放給各種consumer,例如Hadoop、Hbase、Solr等。
- 訊息系統:解耦生產者和消費者、快取訊息等。
- 使用者活動跟蹤:Kafka經常被用來記錄web使用者或者app使用者的各種活動,如瀏覽網頁、搜尋、點選等活動,這些活動資訊被各個伺服器釋出到kafka的topic中,然後訂閱者通過訂閱這些topic來做實時的監控分析,或者裝載到hadoop、資料倉庫中做離線分析和挖掘。
- 運營指標:Kafka也經常用來記錄運營監控資料。包括收集各種分散式應用的資料,生產各種操作的集中反饋,比如報警和報告。
- 流式處理:比如 Spark Streaming 和 Storm。
- 事件源
docker 部署單機版kafka
1.下載Kafka和Zookeeper映象檔案
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
2.先執行zk,再執行kafka
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run --name kafka01 \ -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=172.11.0.4:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.11.0.4:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ -d wurstmeister/kafka
3.進入容器
docker exec -it kafka01 bash
cd /opt/kafka_2.13-2.7.0/bin/
4.執行kafka生產者傳送訊息
./kafka-console-producer.sh --broker-list localhost:9092 --topic sun
傳送訊息:
{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
執行kafka消費者接收訊息:
/opt/kafka_2.13-2.7.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning
5.檢視kafka啟動日誌:
docker logs kafka01