部署环境如果是单机伪集群的话可以考虑采用docker的方式,这样方便快捷,容易管理,而且对物理机影响很小,好处多多。
镜像可以去docker hub上选择支持度,pull次数比较高的。当然如果有官方镜像,优先选择官方镜像。
docker-compose.yaml
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
depends_on: [ zookeeper ]
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 47.106.143.76
KAFKA_CREATE_TOPICS: "imooc-kafka"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
等待docker-compose启动容器完毕可以docker ps看一下镜像
然后docker exec -it进入kafka容器可以运行以下kafka命令
# 新建Topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-topic
查看已存在Topic列表
bin/kafka-topics.sh --list --zookeeper localhost:2181
查看指定Topic状态
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-topic
启动Consumer读取消息并输出到标准输出
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic my-topic --from-beginning
运行Producer并将Terminal输入的消息发送到服务端
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic << This is a messageThis is another message
性能测试
bin/kafka-producer-perf-test.sh --messages 500000 --message-size 1000 --batch-size 500 --topics test --threads 2 --broker-list localhost:9092 bin/kafka-consumer-perf-test.sh --zookeeper localhost:2181 --messages 500000 --topic test --threads 1
关于kafka集群的想法:
通过docker-compose的方式可以搭建一个单机伪集群,能否通过k8s集群来实现kafka集群,每个物理主机上有一组pod来实例broker,维护一个中心zookeeper。但是组里的大佬说docker网络容易出现问题,不能保证高可用。感觉这还是一个比较可行的方案。