方案概述
在大數據 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 官方模板快速拉起演示環境。
-
基礎環境搭建
-
配置 MongoDB
2.1. 設置白名單
2.2. 記錄 MongoDB 連接地址
2.3. 創建 MongoDB 庫和集合
2.4. 查詢 MongoDB 中的數據
-
配置函數計算 FC
3.1. 登錄函數計算 FC 控制檯
3.2. 配置函數環境變量
3.3. 配置函數實例生命週期回調
3.4. 配置函數的層
3.5. 配置函數代碼
-
場景驗證
4.1. 阿里雲 Kafka 模擬發送消息
4.2. 查詢 MongoDB 數據
4.3. 驗證更多場景
-
一鍵釋放資源
最佳實踐全部內容,請點擊此處查看。對方案和產品感興趣的朋友,可以加入釘釘羣交流(羣號:31852400)。
往期文章:
雲原生最佳實踐系列 1:藉助雲速搭 CADT 如何實現 Kafka 的性能壓測?