方案概述
在大資料 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 的效能壓測?
雲原生最佳實踐系列2:基於 MSE 雲原生閘道器同城多活
雲原生最佳實踐系列 3:基於 SpringCloud 應用玩轉 MSE
雲原生最佳實踐系列 4:基於 MSE 和 SAE 的微服務部署與壓測