基于Docker搭建分布式消息隊列Kafka

本文基于Docker搭建一套單節(jié)點的Kafka消息隊列,Kafka依賴Zookeeper為其管理集群信息,雖然本例不涉及集群,但是該有的組件都還是會有,典型的kafka分布式架構(gòu)如下圖所示。本例搭建的示例包含Zookeeper + Kafka + Kafka-manger

mark

獲取鏡像

  • zookeeper鏡像:zookeeper:3.4.9
  • kafka鏡像:wurstmeister/kafka:0.10.2.0
  • kafka-manager鏡像:kafka-manager:latest

建立Zookeeper容器

這里我們用最簡單的方式創(chuàng)建一個獨立的Zookeeper節(jié)點,如果要考慮zookeeper的高可用,可以將其做成一個集群,最好是能有多臺機器。

docker run --name some-zookeeper \
--restart always \
-p 2181:2181 \
-d zookeeper

默認的,容器內(nèi)配置文件在,/conf/zoo.cfg,數(shù)據(jù)和日志目錄默認在/data 和 /datalog,需要的話可以將上述目錄映射到宿主機的可靠文件目錄下。詳情參考Zookeeper官方鏡像

建立kafka節(jié)點

這里同樣只做一個簡單的單點kafka

docker run --name kafka \
-p 9092:9092 \
-e KAFKA_ADVERTISED_HOST_NAME=kafka01 \
-e KAFKA_CREATE_TOPICS="test:1:1" \
-e KAFKA_ZOOKEEPER_CONNECT=100.100.16.231:2181 \
-d  wurstmeister/kafka  

詳情參考Kafka官方鏡像

創(chuàng)建Kafka管理節(jié)點

kafka-manager有圖形化UI,可以方便的監(jiān)控集群狀態(tài),調(diào)整隊列配置

docker run -itd \
--restart=always \
--name=kafka-manager \
-p 9000:9000 \
-e ZK_HOSTS="100.100.16.231:2181" \
sheepkiller/kafka-manager

容器啟動以后訪問主機的9000端口,http://xxx:9000

mark

首次進入需要添加一個集群標識,如下圖所示

mark

配置好以后,通過Zookeeper該管理節(jié)點可以讀取到整個Kafka集群的信息,并且我們可以通過JMX直接看到集群的健康狀態(tài)


mark

也可以看到主題的讀寫速度,偏移量等信息,如下圖所示:


mark

讀寫驗證

讀寫驗證的方法有很多,這里我們用kafka容器自帶的工具來驗證,首先進入到kafka容器的交互模式:

docker exec -it kafka /bin/bash

  • 創(chuàng)建一個主題:
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 100.100.16.231:2181 --replication-factor 1 --partitions 1 --topic my-test
  • 查看剛創(chuàng)建的主題:
/opt/kafka/bin/kafka-topics.sh --list --zookeeper 100.100.16.231:2181
mark
  • 發(fā)送消息:
/opt/kafka/bin/kafka-console-producer.sh --broker-list  100.100.16.231:9092 --topic my-test

This is a message
This is another message

  • 讀取消息:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 100.100.16.231:9092 --topic my-test --from-beginning

參考:https://kafka.apache.org/quickstart

原文鏈接:《基于Docker搭建分布式消息隊列Kafka》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,500評論 19 139
  • 在hyperledger fabric的orderer中,目前發(fā)布的版本是使用kafka來做排序,并沒有用到所謂的...
    y9g閱讀 6,948評論 0 3
  • 背景介紹 Kafka簡介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)。主要設(shè)計目標如下: 以時間復(fù)雜度為O...
    高廣超閱讀 13,042評論 8 167
  • kafka的定義:是一個分布式消息系統(tǒng),由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,535評論 1 15
  • Kafka入門經(jīng)典教程-Kafka-about云開發(fā) http://www.aboutyun.com/threa...
    葡萄喃喃囈語閱讀 10,980評論 4 54

友情鏈接更多精彩內(nèi)容