docker 快速启动 Confluent Kafka

参考资料来自 Confluent

https://developer.confluent.io/quickstart/kafka-docker/

Kafka 与 Confluent

随着 Kafka 代码被贡献给 Apache 软件基金会,成功孵化成 Apache 顶级项目并顺利毕业,
世界上有越来越多的公司和个人开始接触到 Kafka,并不断地向 LinkedIn 的 Kafka 创始团队寻
求技术上的支持与帮助,这让 3 位 Kafka 创始人感到这是一个巨大的商业机会。
于是,在 2014 年 Jay Kreps、Jun Rao 和 Neha Narkhede 离开 LinkedIn 公司创办了 Confluent.io。
这家公司从事商业化 Kafka 工具开发以及提供实时流式处理方面的产品。
该公司基于 Apache Kafka 提供了 Confluent Platform。如果我们把 Apache Kafka 比作 Linux 的内核,那么 Confluent 就类似于 Linux 的某个发行版(比如 CentOS 或 Ubuntu)。Confluent 提供了一些 Apache Kafka 没有的组件和功能,比如完善的跨数据中心数据备份以及集群监控解决方案等。
另外 Confluent 还分为开源版本和企业版本。在企业版本中它提供了对于底层 Kafka 集群完整的可视化监控解决方案,以及一些辅助系统帮助管理集群。Confluent 的开源版本与 Apache 社区的 Kafka 并无太大的区别,用户甚至完全可以使用 Confluent Open Source 来替代 Apache Kafka。

创建 docker-compose.yml

---
version: '3'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.0.1
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  broker:
    image: confluentinc/cp-kafka:7.0.1
    container_name: broker
    ports:
    # To learn about configuring Kafka for access across networks see
    # https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1

启动服务

找到包含 docker-compose.yml 的目录。

quintin at 192 in ~/Downloads/dockerKafka
$ pwd
/Users/quintin/Downloads/dockerKafka
quintin at 192 in ~/Downloads/dockerKafka
$ ls
docker-compose.yml

运行以下命令:

docker-compose up -d

运行成功的界面如下所示:
Uv83Zl

创建 Topic

创建一个名为 quickstart 的 topic。

quintin at 192 in ~/Downloads/dockerKafka
$ docker exec broker \
kafka-topics --bootstrap-server broker:9092 \
             --create \
             --topic quickstart
Created topic quickstart.

向 quickstart 中写入数据

quintin at 192 in ~/Downloads/dockerKafka
$ docker exec --interactive --tty broker \
kafka-console-producer --bootstrap-server broker:9092 \
                       --topic quickstart
>hello world! -quentin
>:-D
>^C%

以 command + C 结束输入。

消费 quickstart 中的数据

quintin at 192 in ~/Downloads/dockerKafka
$ docker exec --interactive --tty broker \
kafka-console-consumer --bootstrap-server broker:9092 \
                       --topic quickstart \
                       --from-beginning
hello world! -quentin
:-D
^CProcessed a total of 2 messages

同样是使用 command + C 退出。

关闭 Kafka

quintin at 192 in ~/Downloads/dockerKafka
$ docker-compose down
Stopping broker    ... done
Stopping zookeeper ... done
Removing broker    ... done
Removing zookeeper ... done
Removing network dockerkafka_default

总结

RWcXhY

### 使用 Docker 启动 Kafka 3.7 和 Zookeeper 为了启动 Kafka 3.7 版本及其依赖的 Zookeeper,可以采用 Docker 容器化的方式简化部署过程。下面提供了一种通过 `docker run` 命令来分别创建并运行这两个服务的方法。 #### 创建网络以便容器间通信 由于 Kafka 需要连接到 Zookeeper 来存储元数据信息,因此建议先建立一个自定义桥接网络让两者能够互相发现: ```bash docker network create kafka-network ``` #### 启动 Zookeeper 实例 接着,在上述创建好的网络环境中启动 Zookeeper 容器实例,并指定版本标签为 `confluentinc/cp-zookeeper:7.0.1`, 这里选择了 Confluent 提供的一个兼容性较好的镜像作为基础[^1]: ```bash docker run -d \ --name=zookeeper \ --network=kafka-network \ -e ZOOKEEPER_CLIENT_PORT=2181 \ confluentinc/cp-zookeeper:7.0.1 ``` #### 启动 Kafka 实例并与 Zookeeper 关联 最后一步就是基于相同网络环境下的 Zookeeper 地址配置参数 `-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181` 来启动 Kafka broker: ```bash docker run -d \ --name=kafka-broker \ --network=kafka-network \ -e KAFKA_BROKER_ID=1 \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka-broker:9092 \ -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ confluentinc/cp-kafka:7.0.1 ``` 以上命令会下载官方提供的最新稳定版 Apache Kafka (由 Confluent 维护),并通过设置环境变量完成必要的初始化工作。请注意这里使用的 Kafka 和 Zookeeper 的具体版本号可能不是严格意义上的 "Kafka 3.7", 而是选择了一个较为接近且稳定的组合方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值