发布于 2026-01-06 0 阅读
0

如何将 Kafka 与 Node.js 集成?DEV 全球展示挑战赛,由 Mux 主办:展示你的项目!

如何将Kafka与Node.js集成?

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

Kafka 是一个功能强大的开源流处理平台,近年来因其能够处理海量数据和实时流处理场景而日益流行。另一方面,Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境,以其构建可扩展、高性能网络应用程序的能力而闻名。在本篇博文中,我们将探讨如何将 Kafka 和 Node.js 结合使用,构建能够处理海量数据和流量的高效实时数据处理系统。

👋 你也可以在领英上查看我的每周帖子。

要求:

  • 具备 Node.js 基础知识
  • Docker基础知识
  • 具备 JavaScript 基础知识

我们将采取以下措施:

  1. 设置 Kafka。
  2. 设置两个Node.js应用程序:一个用于生产者,一个用于消费者。
  3. 发送来自生产者的消息并消费它
  4. 场景:当创建生产者时,消费者中将自动创建一个用户。

讨论一些关键术语:

  • 生产者:生产者是一个将数据写入 Kafka 集群的程序。生产者会向一个或多个主题发送消息。
  • 消费者:消费者是从 Kafka 集群读取数据的程序。
  • 代理:代理是 Kafka 服务器,用于存储和提供数据。
  • 主题:主题是生产者和消费者沟通的渠道。
  • 分区:分区是主题中数据存储的单元。每个主题被划分为一个或多个分区。

我们来玩游戏吧:

首先,我们将安装 Kafka。

  • 安装 Docker:Kafka 通常运行在 Docker 容器中,因此如果您的系统尚未安装 Docker,则需要先安装它。请按照适用于您操作系统的说明安装 Docker。

  • 我们需要两个 Docker 镜像:

    • 香肠大师/动物园管理员
    • 香肠大师/卡夫卡

1️⃣ 创建一个 docker-compose.yml 文件,并在其中添加以下内容。

version: "3"
services:
zookeeper:
image: 'wurstmeister/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'wurstmeister/kafka:latest'
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_LISTENERS=PLAINTEXT://:9092
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper

2️⃣ 运行以下命令启动容器(-d 参数用于在前台启动容器)

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

3️⃣ 启动 Kafka shell:(将 kafka_kafka_1 替换为您的容器名称)

docker exec -it <u>kafka_kafka_1</u> /bin/sh
Enter fullscreen mode Exit fullscreen mode

4️⃣ 创建主题:

kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic your-topic-name-here
Enter fullscreen mode Exit fullscreen mode

其他命令行工具:
▪️ kafka-topics.sh --list --zookeeper zookeeper:2181:列出所有主题。▪️
docker ps:显示正在运行的容器。

仅此而已。

下一步:设置两个 Node.js 应用

1️⃣ 创建 package.json 文件:

npm init

Enter fullscreen mode Exit fullscreen mode

2️⃣ 安装软件包:

npm i express nodemon dotenv mongoose kafkajs
Enter fullscreen mode Exit fullscreen mode

3️⃣ 现在我们将配置生产者:

图片描述
4️⃣ 将以下两行添加到索引中:

我们的生产者

结果: 👇

生产者结果

5️⃣ 通过在消费者配置文件中添加以下内容来配置消费者:

我们的消费者

6️⃣ 现在我们开始模拟场景:

首先,创建你的模型、控制器和路由。在控制器中,你必须添加以下两行代码: 就像下面的示例一样:👇
import {run} from "../utils/producer.js";
run(response);

用户控制器

7️⃣ 更新我们的制作人:

制作人

8️⃣ 更新我们的消费者信息:

图片描述

结果很棒👏

来自制作人:

图片描述

来自消费者:

图片描述


🪄 Github 仓库

总之,Apache Kafka 是一个强大的分布式流处理平台,支持实时数据处理和流处理应用。它可以通过 Kafka 客户端库与流行的 JavaScript 运行时 Node.js 集成,使开发者能够结合这两种技术构建事件驱动和数据驱动型应用。Kafka 以其可扩展性、高性能和处理海量数据的能力而闻名,是构建健壮且可扩展应用的宝贵工具。然而,它的配置和维护也可能较为复杂,需要对其架构和配置选项有深入的了解才能有效使用。总而言之,Kafka 和 Node.js 的组合可以成为构建高效且可扩展应用的强大工具,对于任何需要实时数据处理或流处理功能的项目都值得考虑。

文章来源:https://dev.to/chafroudtarek/how-to-integrate-kafka-with-nodejs--4bil