本文為您介紹Realtime ComputeFlink版產品有關的基礎背景知識。
什麼是Realtime Compute?
資料的業務價值會隨著時間的流失而迅速降低,因此在資料發生後必須儘快對其進行計算和處理。目前,對於資訊的高時效性和可操作性要求越來越高,這就要求軟體系統能夠在更短的時間內處理更多的資料。而傳統的巨量資料處理模型將線上交易處理和離線分析從時序上完全分開,對於資料加工均遵循傳統的日清日畢模式,即以小時甚至以天為計算周期對當前資料進行累計並處理。顯然,傳統的巨量資料處理方式無法滿足資料Realtime Compute的需求。資料處理時延造成的影響對要求苛刻的業務情境會非常明顯,例如即時巨量資料分析、風控預警、即時預測和金融交易等領域。
Realtime Compute可以有效地縮短全鏈路資料流時延、即時化計算商務邏輯、平攤計算成本,最終有效滿足即時處理巨量資料的業務需求。Realtime Compute具備三大特點:
即時(Realtime)且無界(Unbounded)的資料流
Realtime Compute面對的資料是即時且流式的,這些資料按照時間發生順序被Realtime Compute訂閱和消費。例如網站的訪問單擊日誌流,只要網站不關閉,其單擊日誌流將不停產生並進入Realtime Compute系統。
持續(Continuous)且高效的計算
Realtime Compute是一種事件觸發的計算模式,觸發源為無界流式資料。一旦有新的流資料進入Realtime Compute系統,它就立刻發起並進行一次計算任務,因此整個過程是持續進行的。
流式(Streaming)且即時的Data Integration
被流資料觸發的計算結果,可以被直接寫入目的資料存放區。例如將計算後的報表資料直接寫入阿里雲關係型資料庫RDS(Relational Database Service)進行報表展示。因此流資料的計算結果可以同流式資料一樣,持續被寫入目的資料存放區。
什麼是流資料?
所有巨量資料的產生均可以看作是一系列離散事件,這些離散事件是一條條事件流或資料流。相對於離線資料,流資料的規模普遍較小。流資料是由資料來源持續產生的資料,樣本如下:
使用移動或Web應用程式產生的記錄檔。
網購資料。
遊戲內玩家活動資訊。
社交網站資訊。
金融交易大廳或地理空間服務資料中心內所串連裝置或儀器的遙測資料。
地理空間服務資訊。
裝置或儀器的遙測資料。
Realtime Compute與批次運算相比存在哪些差異?
下面從使用者和產品層面來理解兩類計算方式的區別。
批次運算
批次運算是一種批量、高時延、主動發起的計算。目前絕大部分傳統資料計算和資料分析服務均基於批量資料處理模型,即使用ETL系統或者OLTP系統進行構造資料存放區,線上的資料服務(包括Ad-Hoc查詢、DashBoard等)通過構造SQL語言訪問上述資料存放區並取得分析結果。傳統的批量資料處理模型如下圖所示。
傳統的批量資料處理流程如下:
裝載資料
對於批次運算,需要預先將資料載入到計算系統,您可以使用ETL系統或者OLTP系統裝載未經處理資料。系統將根據自己的儲存和計算情況,對於裝載的資料進行一系列查詢最佳化、分析和計算。
提交請求
系統主動發起一個計算作業(例如MaxCompute的SQL作業,或Hive的SQL作業)並向上述資料系統進行請求。此時計算系統開始調度(啟動)計算節點進行大量資料計算,該過程的計算量可能非常大,耗時間長度達數分鐘乃至於數小時。由於資料累計處理不及時,上述計算過程中可能就會存在一些歷史資料,導致資料不新鮮。
說明對於批次運算,您可以根據業務需求,隨時調整SQL語句,也可以使用AdHoc查詢做到即時修改和即時查詢。
返回結果
計算作業完成後將資料以結果集形式返回給使用者,由於儲存在資料計算系統中的計算結果資料量巨大,需要使用者再次整合資料到其他系統。一旦資料結果巨大,整體的Data Integration過程就會漫長,耗時可能長達數分鐘乃至於數小時。
Realtime Compute
Realtime Compute是一種持續、低時延、事件觸發的計算作業。由於當前Realtime Compute的計算模型較為簡單,所以在大部分巨量資料計算情境下,Realtime Compute可以看做是批次運算的增值服務,Realtime Compute更強調計算資料流和低時延。Realtime Compute資料處理模型如下。
即時資料流
使用即時資料整合工具,將即時變化的資料轉送到流式資料存放區(例如訊息佇列、DataHub)。此時資料的傳輸即時化,將長時間累積的大量資料平攤到每個時間點,不停地小批量即時傳輸,因此Data Integration的時延得以保證。
源源不斷的資料被寫入流資料存放區,不需要積極式載入。同時,Realtime Compute對於流式資料不提供儲存服務,資料持續流動,在計算完成後就被立刻丟棄。
提交流式任務
批次運算要等待Data Integration全部就緒後才能啟動計算作業,而流式計算作業是一種常駐計算服務。Realtime Compute作業啟動後,一旦有小批量資料進入流式資料存放區,Realtime Compute會立刻計算並得出結果。同時,阿里雲Realtime Compute還使用了增量計算模型,將大批量資料分批進行增量計算,進一步減少單次運算規模並有效降低整體運算時延。從使用者角度,對於流式作業,必須預先定義計算邏輯,並提交到流式計算系統中。
說明對於Realtime Compute,在作業運行期間,可以修改作業邏輯後但無法即時生效,需要重啟作業。而且,已經計算完成的資料無法重新再次被計算。
即時結果流
批次運算的結果資料需等待資料計算結果完成後,批量將資料轉送到線上系統。不同於批次運算,流式計算作業在每次小批量資料計算後,無需等待整體的資料計算結果,會立刻將資料結果投遞到線上/批量系統,實現計算結果的即時化展現。
使用Realtime Compute的順序如下:
提交Realtime Compute作業。
等待流式資料觸發Realtime Compute作業。
計算結果持續不斷對外寫出。
計算模型差別對比,詳情內容如下表所示。
對比指標 | 批次運算 | Realtime Compute |
Data Integration方式 | 積極式載入資料。 | 即時載入資料到Realtime Compute。 |
使用方式 | 商務邏輯可以修改,資料可重新計算。 | 商務邏輯一旦修改,之前的資料不可重新計算(流資料易逝性)。 |
資料範圍 | 對載入的所有或大部分資料進行查詢或處理。 | 對滾動時間視窗內的資料或僅對最近的資料記錄進行查詢或處理。 |
資料大小 | 大批量資料。 | 單條記錄或幾條記錄的微批量資料。 |
效能 | 幾分鐘至幾小時的延遲。 | 大約幾秒或幾毫秒的延遲。 |
分析 | 複雜分析。 | 簡單的響應函數、彙總和滾動指標。 |