0

0

如何使用 GitHub Actions 和 JavaScript 自动创建和删除 Kafka 主题

花韻仙語

花韻仙語

发布时间:2025-01-17 08:40:19

|

443人浏览过

|

来源于php中文网

原创

如何使用 github actions 和 javascript 自动创建和删除 kafka 主题

对于采用事件驱动架构的开发者而言,自动化 Kafka 主题的创建和删除至关重要。无论是管理不断扩展的系统,还是实施基础设施即代码,随着 Kafka 部署规模的增长,手动管理主题将变得难以为继。本教程将指导您如何运用 JavaScript 和 GitHub Actions 自动化 Kafka 主题的创建和删除流程,将其无缝融入 DevOps 工作流。

Kafka 主题管理的挑战

主题是 Kafka 事件组织的基础。随着架构的演进,您需要创建不同的主题来:

  • 组织不同类型的事件
  • 存储事件的过滤版本
  • 维护事件的转换版本

随着系统规模的扩大,手动管理这些主题将变得日益复杂且容易出错。每个新服务可能都需要新的主题,而每个环境(开发、测试、生产)都需要各自一套配置一致的主题。缺乏自动化的情况下,这种手动操作会降低开发效率并引入配置错误。

自动化主题管理的优势

自动化 Kafka 主题的创建和删除具有诸多优势:

立即学习Java免费学习笔记(深入)”;

  1. 确保跨环境的主题配置一致性
  2. 减少人为错误
  3. 支持主题配置的版本控制
  4. 简化 DevOps 工作流程
  5. 将主题变更纳入 CI/CD 管道

选择合适的自动化工具

本教程采用 JavaScript 来构建自动化解决方案。尽管您可以选择多种编程语言,但 JavaScript 在此任务中具备以下优势:

  • 简化脚本编写(相较于 Bash)
  • 利用团队现有的 JavaScript 专业知识
  • 通过 npm 提供丰富的包生态系统
  • 提供简洁的异步/等待语法来处理 Kafka 操作

我们将此解决方案实现为一个 Kubernetes 作业运行的 Node.js 应用程序,非常适合使用 VPC 访问 Kafka 集群的团队。

应用程序设置

解决方案是一个 Node.js 应用程序,您需要创建一个 Node.js 项目。可以使用 npm init 命令创建一个新项目。如果您尚未安装 Node.js 和 npm,请访问 nodejs.org/en/download 下载并安装必要的二进制文件。

在终端中打开目标目录,然后运行命令 npm init -y。使用命令 npm install kafkajs 安装 Kafka JavaScript 客户端作为依赖项。

解决方案实施

我们的自动化方法包含三个主要部分:

  1. 一个 JSON 配置文件,声明要创建或删除的主题
  2. 与 Kafka 交互以执行这些操作的 Node.js 应用程序
  3. GitHub Actions 工作流程,在 JSON 配置文件发生更改时触发自动化

让我们逐步构建每个组件。

配置文件设置

应用程序将通过 JSON 文件读取要创建或删除的主题列表。这种方法允许任何人修改 GitHub 仓库中的 JSON 文件并创建 PR。一旦 PR 合并到主分支,代码将读取该文件中的数据,然后根据需要创建或删除主题。

Insou AI
Insou AI

Insou AI 是一款强大的人工智能助手,旨在帮助你轻松创建引人入胜的内容和令人印象深刻的演示。

下载

创建一个名为 topics.json 的文件,内容如下:

<code class="json">{
  "create": [],
  "delete": []
}</code>

此结构提供了主题管理操作的清晰、版本控制的记录。create 数组包含要创建的主题,delete 数组指定要删除的主题。

构建主题管理 API

创建一个名为 api.js 的文件,包含以下代码:

<code class="javascript">async function createtopics(topics, kafkaadmin) {
  if (topics.length > 0) {
    await kafkaadmin.createtopics({
      topics: topics.map((topic) => ({
        topic,
        numpartitions: 1,        // 根据吞吐量需求调整
        replicationfactor: 3,    // 通常与 Broker 数量匹配
        configentries: [
          { name: "min.insync.replicas", value: "2" }  // 确保写入持久性
        ],
      })),
    });
  }
}

async function deletetopics(topics, kafkaadmin) {
  if (topics.length > 0) {
    await kafkaadmin.deletetopics({ topics: topics });
  }
}

module.exports = { createtopics, deletetopics };</code>

该模块导出用于创建和删除 Kafka 主题的函数。此处显示的配置值仅为示例 - 您应根据吞吐量、持久性和集群大小的具体要求进行调整。

创建主应用程序

创建一个名为 index.js 的文件,包含以下代码:

<code class="javascript">const { kafka } = require("kafkajs");
const { createtopics, deletetopics } = require("./api");
const topics = require("../topics.json");

// ... (连接Kafka的代码,此处省略,与原文一致) ...

admin.connect().then(async () => {
  const existingtopics = await admin.listtopics();

  // 只创建尚不存在的主题
  const newtopics = topics.create.filter((x) => !existingtopics.includes(x));
  await createtopics(newtopics, admin);

  // 只删除当前存在的主题
  const deletiontopics = topics.delete.filter((x) =>
    existingtopics.includes(x)
  );
  await deletetopics(deletiontopics, admin);

  await admin.disconnect();
});</code>

此主应用程序处理与 Kafka 的连接,读取主题配置,并协调主题的创建和删除。它包含安全检查以避免重复操作并确保连接管理的整洁性。(此处省略了与Kafka连接的代码,因为与原文一致,避免重复)

使用 GitHub Actions 自动化部署

主题管理应用程序准备就绪后,让我们将其集成到持续部署管道中。每当主题配置发生变化时,我们将使用 GitHub Actions 自动运行主题管理代码。(此处省略了GitHub Actions的YAML配置,因为原文中该部分代码不完整且难以理解,建议参考完整的GitHub Actions配置文档)

结论

您已经学习了如何使用 JavaScript 自动创建和删除 Kafka 主题。这种利用 JSON 配置文件和 GitHub Actions 的自动化方法提供了一种可扩展的方式来管理 Kafka 主题,以适应系统规模的增长。通过将主题管理集成到 CI/CD 管道中,您可以确保整个 Kafka 部署中的主题配置的一致性和可靠性。

本解决方案展示了如何将手动主题管理转变为一个简化、自动化的流程,非常适合现代 DevOps 实践。提供的代码是一个基础,您可以根据自己的特定需求进行构建和定制。

需要 DevOps 专业知识或指导?请联系我,我很乐意为您的团队提供支持。 访问 devopsforjavascript.dev 了解更多信息

请注意,原文中提供的GitHub Actions配置不完整,无法直接使用。 您需要根据您的具体环境和需求完善该配置。 建议参考GitHub Actions官方文档,学习如何配置AWS凭证、连接到ECR和Kubernetes集群等。

相关文章

Kafka Eagle可视化工具
Kafka Eagle可视化工具

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

457

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

kafka消费者组有什么作用
kafka消费者组有什么作用

kafka消费者组的作用:1、负载均衡;2、容错性;3、广播模式;4、灵活性;5、自动故障转移和领导者选举;6、动态扩展性;7、顺序保证;8、数据压缩;9、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

175

2024.01.12

kafka消费组的作用是什么
kafka消费组的作用是什么

kafka消费组的作用:1、负载均衡;2、容错性;3、灵活性;4、高可用性;5、扩展性;6、顺序保证;7、数据压缩;8、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

159

2024.02.23

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2024.02.23

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

177

2026.02.04

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
快速入门Node.JS全套完整版
快速入门Node.JS全套完整版

共83课时 | 9.2万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.6万人学习

JavaScript设计模式视频教程
JavaScript设计模式视频教程

共28课时 | 5.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号