docker部署kafka

docker镜像

[root@localhost kafka]# docker images 
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
zookeeper                                                         latest              50d238989423        2 months ago        269MB
wurstmeister/kafka                                                latest              c3b059ede60e        2 months ago        507MB

load

docker load -i zookeeper.tar 
docker load -i kafka.tar

启动

docker run -d --name zookeeper -p 2181:2181  zookeeper
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=你的宿主ip --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest

produce,sub

cd /opt/kafka/bin

创建topic
kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic aa

创建生产者
./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic aa

创建消费者
./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic aa --group g1


查看broker下的所有group
kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --list

查询某个group下订阅的所有topic
kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group g1

查询订阅某个topic的所有group, 无


查看某个消费者组当前消费者的数量
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group group1 --state


查看某个消费者组的详细信息
./kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group group1


查看某个topic有几个分区
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic t2


多播
一条消息可以被多个消费者消费的模式称为多播,要想实现多播,只需要保证每个消费者放在不同的消费组即可。因为通过消费组只能有一个消费者可以消费。
topic消息同步到每个消费者组


单播:
一条消息只能被某一个消费者消费的模式称为单播,要想实现单播,只需要把所有消费者放在同一个消费组即可。
topic消息只能被每个消费者组中的一个消费者消费


(同一个组中)消费者数多于分区数
创建单分区topic

kafka-topics.sh --create --zookeeper zookeeper:2181 \
--replication-factor 1 --partitions 1 --topic t1

./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic t1

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic t1 --group group1


同一个分区内的消息只能被同一个组中的一个消费者消费,
当(同一个组中)消费者数量多于分区数量时,(同一个组中)多于的消费者空闲(不能消费数据
--------------------------------


消费者少于分区数
创建3分区topic和2个消费者
kafka-topics.sh --create --zookeeper zookeeper:2181 \
--replication-factor 1 --partitions 3 --topic t2

./kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic t2

./kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic t2 --group group1

当分区数多于消费者数的时候,(同一个组中)有的消费者对应多个分区。
--------------------------------


消费者等于分区数
创建3分区topic和3个消费者
当分区数等于(同一个组中)消费者数的时候,每个消费者对应一个分区



原理
http://www.360doc.com/content/18/0904/21/41344223_783908767.shtml
https://my.oschina.net/jallenkwong/blog/4449224

命令
https://www.cnblogs.com/wangzhuxing/p/10127497.html
https://www.cnblogs.com/lvzuwen/p/13803154.html
https://www.jianshu.com/p/d5c88f0b904c

https://segmentfault.com/a/1190000038974239
http://blog.70ci.com/post/736.html
https://www.cnblogs.com/kaichenkai/p/11234450.html

posted @ 2021-08-30 22:10  gdut17  阅读(193)  评论(0)    收藏  举报