一種基於流式計算實現海量資料滾動視窗聚合計算的方式

2021-10-25 15:49:14 字數 581 閱讀 9024

在使用實時流式計算的時候,經常都會使用視窗的概念。對於storm而言,整體對事件視窗支援較弱,快取整個視窗的所有資料,視窗結束時一起計算。而flink,視窗支援較為完善,自帶一些視窗聚合方法,並且會自動管理視窗狀態。

伴隨著大促以及相關秒殺等突發流量的行為下,會導致該視窗下資料量激增,導致資料處理延遲,當訊息有延遲時,對應視窗內的資訊資料會丟失,無法得到計算,需要對失效的資料做單獨處理。整體不足主要體現在如下:

1、資料激增導致處理延遲延遲,尤其是突發流量計算延時嚴重,需要對延遲不在當前視窗下的資料做單獨處理,否則資料就丟失,增加了系統設計的複雜性,因此watermark的設定,也並未解決實際問題

2、對於突增的資料無法準確預知,在分配資源上容易出現偏差,容易造成資源浪費

1、自定義滾動視窗實現,基於業務需要,針對時間(埋點上報的時間或者是系統處理時間),分成指定大小的時間段。例如以一天為例,按照5分鐘維度計算,一天可以分成244個時間段,每乙個時間到達,都可以找到對應的時間段

2、清洗相關的資料之後,留下需要處理的資料,對於需要處理的資料存入到佇列中,於此同時,採用常駐執行緒排程任務,按照佇列長度以及時間週期去處理獲取到的資料,生成對應指標,對應整體流程圖如下:

一種基於mget的資料持久辦法

專案中需要一部分資料常駐於redis中,但是要求資料冷卻下來之後自動掉出記憶體,所以使用了如下的方法 材料php,mget,sql 的 in 首先方法體開頭迴圈傳入的陣列引數list,拼接成redis中的key,存放於新陣列userlist中,然後呼叫mget userlist 獲得結果settin...

一種基於C 的撲克牌實現

主函式流程 建立乙個物件 洗牌 發牌 印色 排序 列印輸出 各模組的功能 構造器 第一步 利用兩個整型陣列分別定義撲克牌的類別 比如黑桃 紅心等,這裡只是區分,並沒有印色 和編號 這裡只是簡單的編序號,沒有印上諸如 a k q j 等 第二步 有四種花色,每種花色有13張牌,用四個for迴圈分別對類...

一種基於策略模式實現的資料處理流程模組

本人基於策略模式實現了一種資料處理流程模組,該模組可在qt環境下直接使用。模組支援資料處理流程的定製化,目前提供濾波 公式計算 fft三種資料處理方式,可根據實際需求進行處理方式的組合新增以及排序。模組提供了一種資料處理流程框架,實現上採用的是策略設計模式,支援處理方式的擴充套件,可應用於需要對資料...