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

浙公网安备 33010602011771号