您可以使用雲工作流程和Function Compute輕鬆構建ETL離線資料處理系統,實現更靈活、成本更低的資料處理解決方案。您無需管理底層伺服器資源,從而更加聚焦於商務邏輯本身。
背景資訊
隨著雲端運算、人工智慧、物聯網等新技術的應用普及,人類產生的資料呈現出了爆髮式增長的趨勢,對資料處理的需求能力也提出了越來越高的要求。資料成了重要資產,收集、處理資料的能力成為了核心競爭力,例如,應用服務的運行監控、營運資料的分析以及深度學習的資料過濾、預先處理等,這些對已有資料的處理能力將直接影響服務的營運效率。我們可以使用現成的ETL系統完成上述目的,但是在很多情況下您可能希望自建服務。例如:
您的資料處理業務不定時運行,希望在無任務時,不消耗任何資源。
您的資料處理需求只有簡單的幾個步驟,使用自建服務更迅速。
您的資料處理商務程序有較多的自訂步驟,但現成系統靈活性不足,自建才能滿足業務需求。
您不希望消耗過多精力搭建和維護系統中使用的各類開來源資料處理模組,但希望在大並發資料處理請求的情境下能夠有良好的效能表現。
如果您有上述需求,或者希望實現一個高度靈活、高度可靠、低成本、高效能的離線資料處理系統,那麼本文提供的Serverless技術方案將是您的最佳選擇。
使用情境
假設我們有一批待處理資料,資料的值為data_1或data_2。我們的資料處理目的是統計各類資料的出現次數,並將統計結果儲存到資料倉儲中。當資料量級達到一定程度,或資料來源異構的情況下,我們很難一次性通過一個進程在短時間內快速處理完成,在這種情境下,CloudFlow +Function Compute的組合提供了高效的解決方案。
為方便展示資料處理方面的核心能力,在資料倉儲的儲存方面,我們使用阿里雲Object Storage ServiceOSS來代表各種類型的資料庫等作為基礎儲存設施。
下述方案將展示如何使用CloudFlow+Function Compute實現一個低成本高彈性的資料處理系統。在這個系統中,Function Compute將根據資料量大小動態提供底層計算資源用於資料的處理、統計等工作,CloudFlow將協助實現複雜業務上下遊的邏輯編排。
實現原理
在一般的資料處理業務中,主要關注點如下:
資料來源:需要處理的資料來源。一般情況下,我們的資料往往來源於各類資料庫、文字檔(記錄檔)等。在本樣本中,我們使用函數產生少量資料用作功能性的展示。在實際情境中,您可以使用各類自訂的資料來源作為系統資料輸入來源。
處理架構/模式:MapReduce,本樣本中使用CloudFlow實現。
目的端:資料倉儲。在本樣本中,我們使用 OSS 作為資料倉儲,即最終處理後資料的目的端。
資料處理流程:
我們首先將未經處理資料隨機分成3~5個shards,每個shard中包含兩種類型的資料。對每個shard先分別進行類型統計,並將中間結果儲存(Map)。最後,我們統一處理各shard的統計結果,對結果求和並儲存最終結果(Reduce)。商務程序如下:
從資料來源擷取資料;
對資料按照某種規則或隨機劃分 shard;
使用MapReduce提高資料平行處理能力,對資料進行處理;
儲存至最終目的源。
結合我們所使用的阿里雲服務,系統的模組及互動關係如下圖。
前提條件
操作步驟
在Function Compute應用中心一鍵部署雲工作流程與函數。
單擊一鍵部署跳轉到Function Compute的應用中心,開始快速部署應用。

在建立應用頁面,配置以下參數,然後單擊建立並部署預設環境。
重點參數配置如下,其餘參數保持預設值即可。
參數名稱
參數說明
基礎資訊
部署類型
選擇直接部署。
角色名稱
如果您使用的是阿里雲帳號,第一次在應用中心建立應用,則需要單擊前往授權,跳轉至角色快捷建立頁面,建立
AliyunFCServerlessDevsRole角色,然後單擊同意授權。
如果您使用的是RAM使用者,請根據頁面提示,將複製的授權連結給到阿里雲帳號進行授權。授權完成後,單擊已完成授權。
說明如果頁面提示無法擷取角色,請聯絡對應的阿里雲帳號給當前RAM使用者賦予
AliRAMReadOnlyAccess、AliyunFCFullAccess許可權。具體操作,請參見通過阿里雲帳號給RAM使用者授權。
進階配置
地區
選擇應用部署的地區。
工作流程名執行角色
工作流程執行使用的服務角色。請提前建立角色,並為其授予AliyunFCInvocationAccess權限原則。
函數服務角色
Function Compute訪問其他雲端服務時使用的服務角色,如果沒有特殊要求,建議使用Function Compute提供的預設服務角色AliyunFCDefaultRole。
Object Storage Service儲存桶名
填寫與工作流程和函數相同地區下的Bucket名稱。
等待1~2分鐘後,應用部署成功,系統將自動建立3個函數以及對應的1個工作流程
etl-data-processing-2q1i,您可以分別登入Function Compute控制台和雲工作流程控制台查看建立結果。shards-spliter: 用於讀取資料來源,並依據某種規則對來源資料劃分shard,將shard返回給工作流程。
mapper: MapReduce架構中的Map函數。在該函數中針對傳入的shard資料進行過濾、清洗、計算。往往一次資料處理流程中將會根據shard數並行產生多個函數執行個體以提高資料處理速度。每個map函數處理結束後,結果將會被儲存到OSS的特定目錄下。
reducer: MapReduce架構中的Reduce函數。在該函數中針對map的處理結果進行整合、合并,並推送最終結果至OSS。
您可從Function Compute控制台對應應用擷取本樣本的全部代碼。
驗證結果。
登入雲工作流程控制台,然後在頂部功能表列,選擇地區。
在工作流程列表,單擊目標工作流程
etl-data-processing-2q1i,在工作流程詳情頁面,選擇執行記錄頁簽,單擊啟動執行執行工作流程。執行完成後,查看工作流程的輸入和輸出。

登入Object Storage Service控制台,查看分區內容與合并處理內容。
