目錄
手動 Kafka 主題管理的挑戰
自動化主題管理的好處
選出正確的工具
設定應用程式
實施解決方案
設定檔設定
建構主題管理 API
建立主應用程式
使用 GitHub Actions 進行自動化部署
結論
首頁 web前端 js教程 如何使用 GitHub Actions 和 JavaScript 自動建立和刪除 Kafka 主題

如何使用 GitHub Actions 和 JavaScript 自動建立和刪除 Kafka 主題

Jan 17, 2025 am 08:32 AM

How to Automate Kafka Topic Creation and Deletion, Using GitHub Actions and JavaScript

自動化 Kafka 主題建立和刪除對於使用事件驅動架構的開發人員至關重要。 隨著 Kafka 部署的擴展,無論您是處理不斷增長的系統還是實施基礎設施即程式碼,手動管理都變得不切實際。本指南示範如何使用 JavaScript 和 GitHub Actions 自動化此流程,並將其無縫整合到您的 DevOps 工作流程中。

手動 Kafka 主題管理的挑戰

Kafka 主題是活動組織的基礎。 隨著您的架構擴展,您將需要不同的主題:

  • 將不同的事件類型分類
  • 儲存過濾後的事件子集
  • 維護轉換後的事件版本

隨著系統的成長,手動主題管理變得複雜且容易出錯。每個新服務可能需要新主題,每個環境(開發、登台、生產)都需要自己一致的配置集。 如果沒有自動化,這種手動開銷會減慢開發速度並增加配置錯誤。

自動化主題管理的好處

自動化 Kafka 主題建立和刪除具有顯著優勢:

  1. 所有環境中一致的主題配置。
  2. 減少主題管理中的人為錯誤。
  3. 主題配置的版本控制。
  4. 簡化的 DevOps 工作流程。
  5. 將主題變更整合到 CI/CD 管道中。

選出正確的工具

本教學使用 JavaScript 作為其自動化解決方案。雖然其他語言也是可能的,但 JavaScript 有以下優點:

  • 比 Bash 更簡單的腳本。
  • 利用現有團隊 JavaScript 專業知識。
  • 透過 npm 豐富的軟體包生態系。
  • Kafka 操作的簡潔非同步/等待語法。

此解決方案作為 Node.js 應用程式實現,作為 Kubernetes 作業運行,非常適合使用 VPC 可存取的 Kafka 叢集的團隊。

設定應用程式

您需要一個 Node.js 專案。使用 npm init -y 建立一個。 如果未安裝 Node.js 和 npm,請從https://www.php.cn/link/0d78f6439e652fdbf801d103430d2e12下載。

在您的專案目錄中,執行 npm install kafkajs 安裝 Kafka JavaScript 用戶端。

實施解決方案

我們的自動化包含三個核心元件:

  1. 指定要建立或刪除的主題的 JSON 設定檔。
  2. Node.js 應用程式與 Kafka 互動來執行這些操作。
  3. GitHub Actions 工作流程在 JSON 設定檔變更時觸發自動化。

讓我們建構每個元件。

設定檔設定

應用程式讀取列出要建立或刪除的主題的 JSON 檔案。 這允許透過 GitHub 拉取請求進行版本控制的變更。 合併 PR 後,程式碼會讀取更新的檔案並相應地建立/刪除主題。

建立topics.json:

{
  "create": [],
  "delete": []
}
登入後複製

此結構提供主題管理操作的版本控制記錄。 create 陣列列出了要建立的主題,而 delete 列出了要刪除的主題。

建構主題管理 API

建立api.js:

async function createTopics(topics, kafkaAdmin) {
  if (topics.length > 0) {
    await kafkaAdmin.createTopics({
      topics: topics.map((topic) => ({
        topic,
        numPartitions: 1,        // Adjust as needed
        replicationFactor: 3,    // Adjust as needed
        configEntries: [
          { name: "min.insync.replicas", value: "2" }  // Adjust as needed
        ],
      })),
    });
  }
}

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

module.exports = { createTopics, deleteTopics };
登入後複製

此模組匯出用於建立和刪除 Kafka 主題的函數。 根據您的需求調整配置值(分割區、複製因子、min.insync.replicas)。

建立主應用程式

建立index.js:

const { Kafka } = require("kafkajs");
const { createTopics, deleteTopics } = require("./api");
const topics = require("../topics.json");

// ... (Kafka connection details using environment variables) ...

const kafka = new Kafka({
  // ... (Kafka connection configuration) ...
});

const admin = kafka.admin();

admin.connect().then(async () => {
  const existingTopics = await admin.listTopics();

  // Create only non-existent topics
  const newTopics = topics.create.filter((x) => !existingTopics.includes(x));
  await createTopics(newTopics, admin);

  // Delete only existing topics
  const deletionTopics = topics.delete.filter((x) => existingTopics.includes(x));
  await deleteTopics(deletionTopics, admin);

  await admin.disconnect();
});
登入後複製

該應用程式處理 Kafka 連接、讀取主題配置並協調主題創建/刪除。 它包括防止重複操作的保護措施並確保乾淨的連接處理。

使用 GitHub Actions 進行自動化部署

使用 GitHub Actions 將主題管理應用程式整合到 CI/CD 管道中。 每當主題配置發生變化時,這就會自動執行。

.github/workflows/kafka.yml

# ... (GitHub Actions workflow YAML configuration -  This section needs significant adaptation for a real-world scenario and would require setting up AWS credentials, ECR, and Kubernetes cluster details. The provided example is incomplete and illustrative only.) ...
登入後複製

此工作流程會自動執行建置、容器化(使用 Docker)、推送至容器註冊表(如 Amazon ECR)以及作為作業部署到 Kubernetes。

結論

本指南示範了使用 JavaScript 和 GitHub Actions 自動建立和刪除 Kafka 主題。 這種方法使用 JSON 設定檔和 GitHub Actions,提供了一個可擴展的解決方案,用於隨著系統的成長管理 Kafka 主題。 將主題管理整合到 CI/CD 管道中可確保整個 Kafka 部署中的主題配置一致且可靠。 這將手動主題管理轉變為與現代 DevOps 實踐保持一致的簡化、自動化流程。 提供的代碼可作為自訂和適應您的特定要求的基礎。

以上是如何使用 GitHub Actions 和 JavaScript 自動建立和刪除 Kafka 主題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

前端熱敏紙小票打印遇到亂碼問題怎麼辦? 前端熱敏紙小票打印遇到亂碼問題怎麼辦? Apr 04, 2025 pm 02:42 PM

前端熱敏紙小票打印的常見問題與解決方案在前端開發中,小票打印是一個常見的需求。然而,很多開發者在實...

神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

誰得到更多的Python或JavaScript? 誰得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

JavaScript難以學習嗎? JavaScript難以學習嗎? Apr 03, 2025 am 12:20 AM

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

如何實現視差滾動和元素動畫效果,像資生堂官網那樣?
或者:
怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? 如何實現視差滾動和元素動畫效果,像資生堂官網那樣? 或者: 怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? Apr 04, 2025 pm 05:36 PM

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? 如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

console.log輸出結果差異:兩次調用為何不同? console.log輸出結果差異:兩次調用為何不同? Apr 04, 2025 pm 05:12 PM

深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...

See all articles