参考资料来自 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

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐