天天看點

資料庫必知詞彙:流計算

在傳統的資料處理流程中,總是先收集資料,然後将資料放到資料庫中。當人們需要的時候通過資料庫對資料做查詢,得到答案或進行相關的處理。這樣看起來雖然非常合理,但是結果卻非常的緊湊,尤其是在一些實時搜尋應用環境中的某些具體問題,類似于MapReduce方式的離線處理并不能很好地解決問題。這就引出了一種新的資料計算結構---流計算方式。它可以很好地對大規模流動資料在不斷變化的運動過程中實時地進行分析,捕捉到可能有用的資訊,并把結果發送到下一計算節點。

不同于批量計算模型,流式計算更加強調計算資料流和低延遲時間,流式計算資料處理模型如下:

  1. 使用實時資料內建工具,将資料實時變化傳輸到流式資料存儲(即消息隊列,如DataHub);此時資料的傳輸變成實時化,将長時間累積大量的資料平攤到每個時間點不停地小批量實時傳輸,是以資料內建的時延得以保證。此時資料将源源不斷寫入流資料存儲,不需要預先加載的過程。同時流計算對于流式資料不提供存儲服務,資料是持續流動,在計算完成後就立刻丢棄。
  2. 資料計算環節在流式和批量處理模型差距更大,由于資料內建從累積變為實時,不同于批量計算等待資料內建全部就緒後才啟動計算作業,流式計算作業是一種常駐計算服務,一旦啟動将一直處于等待事件觸發的狀态,一旦有小批量資料進入流式資料存儲,流計算立刻計算并迅速得到結果。同時,阿裡雲流計算還使用了增量計算模型,将大批量資料分批進行增量計算,進一步減少單次運算規模并有效降低整體運算時延。從使用者角度,對于流式作業,必須預先定義計算邏輯,并送出到流式計算系統中。在整個運作期間,流計算作業邏輯不可更改!使用者通過停止目前作業運作後再次送出作業,此時之前已經計算完成的資料是無法重新再次計算。
  3. 不同于批量計算結果資料需等待資料計算結果完成後,批量将資料傳輸到線上系統;流式計算作業在每次小批量資料計算後可以立刻将資料寫入線上/批量系統,無需等待整體資料的計算結果,可以立刻将資料結果投遞到線上系統,進一步做到實時計算結果的實時化展現。

流計算是一種持續、低延遲時間、事件觸發的計算作業,使用者使用流計算的順序是:

  • 送出流計算作業。
  • 等待流式資料觸發流計算作業。
  • 計算結果持續不斷對外寫出。

流式處理可以用于兩種不同場景: 事件流和持續計算。

1、事件流:事件流具能夠持續産生大量的資料,這類資料最早出現與傳統的銀行和股票交易領域,也在網際網路監控、無線通信網等領域出現、需要以近實時的方式對更新資料流進行複雜分析如趨勢分析、預測、監控等。簡單來說,事件流采用的是查詢保持靜态,語句是固定的,資料不斷變化的方式。

2、持續計算:比如對于大型網站的流式資料:網站的通路PV/UV、使用者通路了什麼内容、搜尋了什麼内容等,實時的資料計算和分析可以動态實時地重新整理使用者通路資料,展示網站實時流量的變化情況,分析每天各小時的流量和使用者分布情況;比如金融行業,毫秒級延遲的需求至關重要。一些需要實時處理資料的場景也可以應用Storm,比如根據使用者行為産生的日志檔案進行實時分析,對使用者進行商品的實時推薦等。

流式計算的價值在于業務方可在更短的時間内挖掘業務資料中的價值,并将這種低延遲轉化為競争優勢。比方說,在使用流式計算的推薦引擎中,使用者的行為偏好可以在更短的時間内反映在推薦模型中,推薦模型能夠以更低的延遲捕捉使用者的行為偏好以提供更精準、及時的推薦。流式計算能做到這一點的原因在于,傳統的批量計算需要進行資料積累,在積累到一定量的資料後再進行批量處理;而流式計算能做到資料随到随處理,有效降低了處理延時。

資料來源:

實時計算與批量計算相比存在哪些差異?

https://help.aliyun.com/knowledge_detail/62440.html

流式計算的應用特征

https://zhuanlan.zhihu.com/p/82171672

什麼是流式計算?

https://zhuanlan.zhihu.com/p/81849938