kafka
1. 入门简介
kafka
https://www.cnblogs.com/likehua/p/3999538.html
zookeeper
https://blog.csdn.net/java_66666/article/details/81015302
2. 使用docker安装zk
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
- 2181是zk默认的监听端口
3. 使用docker安装kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.3.183:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.3.183 -e KAFKA_ADVERTISED_PORT=9092 -t wurstmeister/kafka
1. 配置kafka相关环境变量
-
这里使用docker构建容器的时候已经配置了相关的环境变量
- KAFKA_ZOOKEEPER_CONNECT: 需要连接的zookeeper信息
- KAFKA_ADVERTISED_HOST_NAME: 该kafka实例的外网ip
- KAFKA_ADVERTISED_PORT: 该kafka实例对外开放的端口
- KAFKA_BROKER_ID: 集群中kafka实例的id
-
这里启动kafka实例的时候一定需要给不同的实例配置不同的brokerId
-
理论上来说我们已经是完成了集群的配置,现在测试下配置的成果.
- 进入zookeeper安装目录下的bin运行
./zkCli.sh -server (zk的ip):(zk监听的端口)
该操作是登录指定的zk客户端 ls /brokers/ids
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KuwludTl-1584340843927)(https://note.youdao.com/yws/api/personal/file/WEBea48ce0be3f83545d2be725a5ec87a4a?method=download&shareKey=1bf902a8dee1a3398359d08b7f51dd53)]
从这里我们可以看到目前是有三个broker连接这个zk客户端的
- 进入zookeeper安装目录下的bin运行
4. 操作kafka
接下来我们可以操作kafka了
1. 创建topic
- 进入kafka集群任意一个kafka实例中
docker exec -ti kafka /bin/bash
- 进入/opt/kafka/bin/目录,运行kafka-topic.sh脚本
kafka-topics.sh --create --zookeeper 192.168.3.183:2181 --replication-factor 3 --partitions 6 --topic test
--replication-factor
这个参数是这个主题一共会使用几个kafka的broker,注意这里的值不能大于kafka集群中broker的个数--partitions
指定这个主题在没个broker下会有几个分区来存储消息--topic
为topic的命名
运行完这个指令之后我们就可以创建一个kafka集群中的topic了.
3. 运行指令来查看该topic的详情kafka-topic.sh --describe --zookeeper 192.168.3.183:2181 --topic test
.如图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d6sL3sfg-1584340843936)(https://note.youdao.com/yws/api/personal/file/WEB09166f4a39e2000b345505a478db8e92?method=download&shareKey=c2befb693d880e9902500c9fa2787839)]
- leader 是在给出的所有partitons中负责读写的节点,每个节点都有可能成为leader
- replicas 显示给定partiton所有副本所存储节点的节点列表,不管该节点是否是leader或者是否存活。
- isr 副本都已同步的的节点集合,这个集合中的所有节点都是存活状态,并且跟leader同步
2. 发送消息测试kafka集群
直接在不同的kafka实例中用脚本启动生产者消费者测试
- 在id为0的broker启动生产者,同样在bin目录下运行脚本
kafka-console-producer.sh --broker-list 192.168.3.183:9092 --topic test
并发送几条消息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFpRyNHt-1584340843942)(https://note.youdao.com/yws/api/personal/file/WEBfc8d791bddc91895a89bb74bd585b381?method=download&shareKey=9d98c6785c8a71c89a4ce22d6f38ef7e)] - 在id为1的broker启动消费者,进入之前的bin目录运行脚本
kafka-console-consumer.sh --bootstrap-server 192.168.3.183:9093 --from-beginning --topic test
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-69GX5bk3-1584340843954)(https://note.youdao.com/yws/api/personal/file/WEBc4772d00a9db8a0ad09730d779fdad42?method=download&shareKey=9ff48fde193cb7e15d3e170635f256a8)]
在这里我们生产者和消费者是通过不同的broker来启动的以证明不同的broker会同步消息.
总结
QQ交流群
以上是单个zk和kafka集群的使用,因为为了方便所以采用的是使用docker安装.如果想了解docker安装或者其他方便的小知识可以关注博主的csdn博客或者加QQ交流群,文档会不定时更新.如有需要请尊重原创注明转发!谢谢大家支持.