雲原生最佳實踐系列 5:基於函式計算 FC 實現阿里雲 Kafka 訊息內容控制 MongoDB DML 操作

阿里云云原生發表於2024-03-28

方案概述

在大資料 ETL 場景,將 Kafka 中的訊息流轉到其他下游服務是很常見的場景,除了常規的訊息流轉外,很多場景還需要基於訊息體內容做判斷,然後決定下游服務做何種操作。

該方案實現了透過 Kafka 中訊息 Key 的內容來判斷應該對 MongoDB 做增、刪、改的哪種 DML 操作。

當 Kafka 收到訊息後,會自動觸發函式計算中的函式,接收到訊息,對訊息內容做判斷,然後再操作 MongoDB。使用者可以對提供的預設函式程式碼做修改,來滿足更復雜的邏輯。

整體方案透過 CADT 可以一鍵拉起依賴的產品,並完成了大多數的配置,使用者只需要到函式計算和 MongoDB 控制檯做少量配置即可。

方案優勢

  • 可以實現根據 Kafka 訊息的具體內容判斷,該對 MongoDB 做哪種 DML 操作,靈活性和可擴充套件性極高。
  • 函式計算具有完善的日誌系統、容錯機制。可以清晰的看到對每條訊息的處理日誌,如果邏輯執行失敗,也有重試機制和函式失敗補償機制,保證業務資料的完整性和一致性。

詳情可參見文件:

https://help.aliyun.com/zh/fc/user-guide/retry-policy

https://help.aliyun.com/zh/fc/result-callback

方案限制: 目前源 Kafka 只支援阿里雲 Kafka。

部署架構

架構說明

該架構圖直觀的表現出了該方案中使用到的網路(VPC,交換機,安全組)、Kafka、函式計算 FC、MongoDB 之間的關係。

網路架構:

  • 整個方案會在某個 Region 下,該示例使用的是北京 Region
  • 在 Region 下會建立一個 VPC
    • 在該 VPC 下會建立一個某可用區的交換機,該示例使用的是 G 可用區
    • 在該 VPC 下會建立一個安全組
  • Kafka,FC,MongoDB 都在該 VPC 的 G 可用區的交換機下
  • FC 在與 VPC 其他資源互通時會使用到 VPC 下的安全組

產品介紹

專有網路 VPC(Virtual Private Cloud): 是使用者基於阿里雲建立的自定義私有網路, 不同的專有網路之間二層邏輯隔離,使用者可以在自己建立的專有網路內建立和管理雲產品例項,比如 ECS、負載均衡、RDS 等。

函式計算 FC(Function Compute): 函式計算是事件驅動的全託管計算服務。使用函式計算,您無需採購與管理伺服器等基礎設施,只需編寫並上傳程式碼或映象。函式計算為您準備好計算資源,彈性地、可靠地執行任務,並提供日誌查詢、效能監控和報警等功能。

雲訊息佇列 Kafka 版: 雲訊息佇列 Kafka 版是阿里雲提供的分散式、高吞吐、可擴充套件的訊息佇列服務。雲訊息佇列 Kafka 版廣泛用於日誌收集、監控資料聚合、流式資料處理、線上和離線分析等大資料領域,已成為大資料生態中不可或缺的部分。

雲資料庫 MongoDB 版(ApsaraDB for MongoDB): 完全相容 MongoDB 協議,基於飛天分散式系統和高可靠儲存引擎,提供多節點高可用架構、彈性擴容、容災、備份恢復、效能最佳化等功能。

雲速搭 CADT(Cloud Architect Design Tools): 是一款為上雲應用提供自助式雲架構管理的產品,顯著地降低應用雲上管理的難度和時間成本。本產品提供豐富的預製應用架構模板,同時也支援自助拖拽方式定義應用雲上架構;支援較多阿里雲服務的配置和管理。使用者可以方便的對雲上架構方案的成本、部署、運維、回收進行全生命週期的管理。

前置條件

在進行本文操作之前,您需要完成以下準備工作:

1)註冊阿里雲賬號,並完成實名認證。您可以登入阿里雲控制檯,並前往實名認證頁面 https://account.console.aliyun.com/v2/#/authc/home) 檢視是否完成實名認證。

2)購買按量付費資源,阿里雲賬戶餘額需要大於 100 元。考慮到部署後每小時會產生費用,建議賬號內餘額或者代金卷金額大於 200 元。您可以登入阿里雲控制檯,前往賬戶總覽頁面 https://usercenter2.aliyun.com/home) 檢視賬戶餘額。

操作步驟

本實踐可透過 CADT 官方模板快速拉起演示環境。

  1. 基礎環境搭建

  2. 配置 MongoDB

    2.1. 設定白名單

    2.2. 記錄 MongoDB 連線地址

    2.3. 建立 MongoDB 庫和集合

    2.4. 查詢 MongoDB 中的資料

  3. 配置函式計算 FC

    3.1. 登入函式計算 FC 控制檯

    3.2. 配置函式環境變數

    3.3. 配置函式例項生命週期回撥

    3.4. 配置函式的層

    3.5. 配置函式程式碼

  4. 場景驗證

    4.1. 阿里雲 Kafka 模擬傳送訊息

    4.2. 查詢 MongoDB 資料

    4.3. 驗證更多場景

  5. 一鍵釋放資源

最佳實踐全部內容,請點選此處檢視。對方案和產品感興趣的朋友,可以加入釘釘群交流(群號:31852400)。

往期文章:

雲原生最佳實踐系列 1:藉助雲速搭 CADT 如何實現 Kafka 的效能壓測?

雲原生最佳實踐系列2:基於 MSE 雲原生閘道器同城多活

雲原生最佳實踐系列 3:基於 SpringCloud 應用玩轉 MSE

雲原生最佳實踐系列 4:基於 MSE 和 SAE 的微服務部署與壓測

相關文章