1、kafka和zookeeper简介
Kafka是一个高性能、低延迟、分布式的分布式数据库,可以在分布式环境中实现数据的实时同步和分发。
Zookeeper是一种开源的分布式数据存储系统,它可以在分布式环境中存储和管理数据库中的数据。它的主要作用是实现数据的实时同步和分发,可以用于实现分布式数据库、分布式文件系统、分布式日志系统等。Zookeeper的设计目标是高可用性、高性能、低延迟,它支持多种客户端协议,包括TCP和HTTP,可以方便地与其他分布式系统进行集成。此外,Zookeeper还支持分布式锁、分布式领导选举等功能,可以用于实现分布式应用程序的管理和协调。总之,Zookeeper是一种非常重要的分布式数据存储系统,它可以在分布式系统中发挥重要作用。
Zookeeper和Kafka是两种常用的分布式数据存储系统,它们的作用和使用场景有所不同,但它们之间有一定的关联。
首先,Zookeeper可以用于存储和管理数据库中的数据,而Kafka可以用于在分布式环境中分发和消费数据。因此,可以将Kafka作为Zookeeper的客户端,使用Zookeeper存储和管理数据,并通过Kafka来在分布式环境中分发和消费数据。
其次,Zookeeper和Kafka都可以使用多种客户端协议,包括TCP和HTTP,这意味着它们可以方便地与其他分布式系统进行集成。因此,可以将Zookeeper和Kafka组合使用,构建一个分布式数据存储系统,可以充分利用这两种数据存储系统的优点。
总之,Zookeeper和Kafka之间有密切的关系,它们可以结合使用,构建一个分布式数据存储系统,用于在分布式环境中存储和管理数据。
2、安装步骤
linux环境主要是centos,默认已经安装好docker,这次咱们需要把docker-compose也安装上。
首先,在终端中输入以下命令来更新系统软件包列表:
sudo yum update
然后,输入以下命令来安装 Docker Compose:
sudo yum install docker-compose
为了提高镜像下载速度,咱们需要更换docker镜像源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. 创建一个kafka.yml文件
先创建一个kafka目录
mkdir /kafka
在项目根目录下创建一个yml文件,例如docker-compose.yml,文件内容如下:
version: '3.2'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
restart: always
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_LISTENERS=PLAINTEXT://:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime # 保证容器时区与宿主机一致
restart: always
这个文件定义了一个名为“kafka”的服务,使用Wurstmeister的Kafka镜像。
同时,定义了一个名为“zookeeper”的服务,使用Wurstmeister的Zookeeper镜像,将Zookeeper的主机路径设置为“localhost:2181”。
3. 运行Docker Compose.yml文件
docker-compose up -d
这个命令将在docker-compose.yml文件中定义的服务启动后自动运行。
第一次运行因为需要下载镜像,会比较慢
3、验证Kafka和Zookeeper集群
你可以使用以下命令来验证Kafka和Zookeeper集群是否已经运行:
# 进入容器
docker exec -it kafka /bin/bash
# 创建名为 test 的 topic
kafka-topics.sh --create --topic test --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
# 查看刚刚创建的 topic 信息
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test
# 作为生产者发送测试消息
kafka-console-producer.sh --topic=test --broker-list kafka:9092
>test1
>test2
>hello
kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic test
这个命令作为消费者接收刚才发送的测试消息,能接收到则证明服务部署成功
这就是一个基于Docker Compose的Kafka和Zookeeper安装和部署教程。希望这个教程能够帮助你在Docker容器中部署和管理Kafka和Zookeeper。