Kafka简介
Kafka是一个分布式流平台,可以如同消息队列或者企业级消息系统一样发布和订阅流记录,能够以容错持久化的方式存储流记录,并且实时处理流记录。
目前来说主要用在两个方面:
当作消息队列,在不同应用和系统之间传递可靠消息,达到系统解耦,流量削峰的目的,以此来构建实时流式数据处理管道,主要是Kafka。
构建实时处理数据的流式数据应用,主要是Kafka Stream。
Kafka集群
如图中所示,多个Kafka节点构成Kafka集群,每一个Kafka节点成为Broker,所有的节点并通过ZooKeeper来进行集群管理。
Docker搭建Zk-Kafka集群
直接使用Docker也是可以的,但是为了方便使用Docker-Compose来做服务编排更加推荐,也可以使用swarm和docker stack来部署,这里仅以Docker-Compose为例。
为了方便,以两个节点的ZooKeeper和两个节点的Kafka为目标,搭建ZooKeeper和Kafka的集群。
docker-compose.yml如下:
version: '3.1'services: zookeeper-1: image: zookeeper restart: always hostname: zookeeper-1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 zookeeper-2: image: zookeeper restart: always hostname: zookeeper-2 ports: - 2182:2181 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zookeeper-1:2888:3888 server.2=zookeeper-2:2888:3888 kafka-1: image: wurstmeister/kafka restart: always hostname: kafka-1 links: - zookeeper-1 - zookeeper-2 - kafka-2 ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: kafka-1 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181 KAFKA_BROKER_ID: 1 volumes: - /var/run/docker.sock:/var/run/docker.sock kafka-2: image: wurstmeister/kafka restart: always hostname: kafka-2 links: - zookeeper-1 - zookeeper-2 ports: - "9093:9092" environment: KAFKA_ADVERTISED_HOST_NAME: kafka-2 KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181 KAFKA_BROKER_ID: 2 volumes: - /var/run/docker.sock:/var/run/docker.sock
在命令行运行下面的命令:
cd docker-compose.yml文件所在目录docker-compose up -d
运行后可以通过命令查看日志:
docker-compose logs -f
最后
本文同步发表在个人博客上,https://www.soaringroad.com/article/132
听说点赞,收藏,转发,加关注的小伙伴们写代码无BUG,不知真假。