System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于數據流處理領域,涉及一種亂序流的流處理問題中以傳遞節點狀態限制聚合高頻開銷的辦法。
技術介紹
1、現有亂序流處理通常以水位線方式工作,即利用一個時間戳劃分區域以便進行不同的處理,只對該時間戳之前的。例如,2021年發表在tkde上題目為《cpix:real-timeanalytics?over?out-of-order?data?streams?by?incremental?sliding-windowaggregation》的論文,公開了“一種針對代數聚合問題的亂序流處理方法”,文章中認為,導致目前大數據領域主流的流聚合算法性能低下的原因是流處理系統在浪費了太多時間去在亂序嚴重的情況下維護中間聚合結果。cpix通過縮短聚合上傳的路徑,加快了聚合的速度并減少了在數據流亂序嚴重的情況下維護中間結果的成本。其縮短聚合上傳路徑的方式是通過將聚合節點放在同一個池中,利用部分聚合類型具備可交換性,放棄近期所有中間聚合節點的維護,轉而只對最早最老的節點進行維護,因為延遲是有限的,超過最大生存時間(ttl)后記錄應該被拋棄,所有可以認為越早的記錄越可能沒有未到達的記錄,從而不會因為亂序情況發生。此種聚合亂序數據流的方式存在著缺陷,由于其縮短了聚合路徑,其處理能力變得單一化,對可交換順序的聚合完全沒有應對能力,因而存在犧牲了處理范圍換取處理性能提升的問題。在處理一些復雜的整體聚合,特別是處理具備可交換性但是不具備可逆性的聚合問題時,因為沒有保留聚合路徑,所有只能完全重新進行聚合。
2、數據流(dataflow)是計算機
3、流處理算法中,常設計到分區劃分的算法,流處理中的分區劃分是關鍵的一環,它影響著系統的性能、擴展性和容錯能力。分區數量應與處理資源的并行度相匹配,以充分利用計算資源。盡量保證相關數據在同一分區,減少跨分區通信。分區策略應支持容錯,如通過數據備份或多副本機制。分區策略應支持動態擴展,以適應數據量的變化。cpix中采用的分區劃分算法為cutty,是一種根據滑動劃分分區的方法。流處理系統中,產生數據的用戶程序通常被稱為生產者,獲取系統提供的數據的用戶程序通常被稱為消費者。
4、水位線(watermark)機制,是流處理框架中用來處理事件時間(event?time)的一個重要概念,尤其是在處理亂序事件或者需要基于時間窗口進行計算的場景中。是一種邏輯時間戳,用于標記在特定時間點之前的數據都已經到達了流處理系統,可以認為在這個時間點之前的數據不會再出現。換句話說,水位線是一個延遲邊界,允許系統在觀察到所有相關事件后進行計算。水位線可以根據操作類型的不同分為周期性水位線(periodicwatermarks)和標點水位線(punctuated?watermarks)。周期性水位線水位線定期發出,例如,每收到一定數量的記錄或者每隔一定的時間間隔;而標點水位線在特定事件發生時發出,例如,在處理完具有特定屬性的事件后出發。
5、apache?flink是一個開源流處理框架,用于在高吞吐量和低延遲的情況下進行有狀態的計算。它可以處理有界和無界數據流,并且易于開發和部署大規模的數據處理應用。apache?flink提供了多種api來編寫數據處理應用程序,包括:datasetapi(用于批處理)、datastreamapi(用于流處理)、tableapi(用于結構化數據處理,類似于sql)和sql(直接使用sql進行查詢)。
6、apache?kafka是一種是用于構建實時數據管道和流式應用程序的平臺。kafka可以被視作一種具有高性能、高擴展性、高可用性并支持持久化的超級消息隊列。
7、有狀態分布式流式處理是apache?flink等流處理平臺常面對的問題。有狀態指的是流處理中保存了累計狀態,即過去歷史中接收的所有事件;簡單如sum計數,復雜如機器學習的狀態的累計都是有狀態的流式處理。分布式,指的是產生和處理信息的服務器是分散的獨立的計算機;這些主機在物理上相互分離但是被視為同一臺主機。
8、聚合的可交換性指的是,如果聚合的順序元素的次序發生交換,那么聚合的結果就不能保證和原本的聚合結果一致。對于聚合不具備可交換性的聚合問題,通常需要維持很多中間結果,因此這類流聚合中的節點可以分為三種類型:底層交換節點、中間節點和結果輸出節點。底層交換節點是最底層的節點,能夠和輸入的數據流直接交互,直接從輸入數據流獲取聚合信息的更新。中間節點指的是概括了部分底層交換節點內信息的節點。中間節點對于外部可以是隱形的,對于外部沒有意義,每個中間節點都是若干個個底層交換節點信息的匯總。中間節點往往不止一層(底層節點很少才會只有一層)。結果節點是整個聚合的輸出端,消費者直接從結果輸出節點獲取結果,通常這樣的結果節點只有一個。本專利技術將用層級結構來指代這種分點分為三類的流處理算法中數據的組織結構,其本質上是一種有向層次圖(dag),但是本文更強調其分層的特點,因此用層級結構來指代。當聚合操作不具備可交換性時,這種層級結構是必須的,本專利技術的研究在此基礎上進行。
技術實現思路
1、為了克服現有流聚合技術在處理不具備可交換性問題時開銷過大的缺陷,本專利技術提供一種基于apache?flink的亂序數據流聚合速率限制方法。本專利技術提出的流處理系統額外包括了流聚合速率限制器和水深線,以傳遞節點狀態的操作限制過高的開銷。本專利技術應用在聚合存在層級結構(一種分層的dag圖)的結構上,面向有狀態的分布式流聚合問題。本專利技術采用apache?kafka與生產者和消費者溝通。
2、流聚合速率限制器要求流處理系統將流聚合更新的近期記錄保存在相應的節點內。聚合更新時,根據聚合更新速率是判斷上傳中間聚合結果還是上傳阻塞狀態(阻塞狀態定期重置),減少更新無意義的聚合中間結果的維護成本,然后根據阻塞狀態來靈活標注水深線形成深水區,深水區限制聚合更新從而降低聚合更新頻率,從而降低聚合算法的總體開銷。數據結構上下分層,不同層級的數據結構涵蓋信息所代表的數據量大小是不同的;父子關系中,父節點總是涵蓋了比其子節點更大的數據量。
3、本專利技術中流處理系統運行在分布式的環境,向提供數據來源的客戶提供輸出端口和輸入端口,發送方的輸出端口處聚合的形式與接收方格式統一,接收方輸入端口上的底層節點設置為面向時間的聚合子節點。聚合更新從作為子節點的底層節點開始,通過聚合結構概括提煉信息的層級關系向更抽象的層級向上傳播;接收方上直接和輸入數據流交互的底層節點、聚合更低層級信息的中間節點、節點存儲池和接收數據的用戶程序共同構成一個聚合接收數據的完整結構。
4、水深線是根據傳統水位線的一種拓展,傳統水位線雖本文檔來自技高網...
【技術保護點】
1.一種基于Apache?Flink的亂序數據流聚合速率限制方法,其特征在于,包括步驟如下:
2.根據權利要求1所述的一種基于Apache?Flink的亂序數據流聚合速率限制方法,其特征在于,步驟(1)具體操作如下:
3.根據權利要求1所述的一種基于Apache?Flink的亂序數據流聚合速率限制方法,其特征在于,步驟(4)的向上傳遞阻塞狀態操作具體步驟如下:
4.根據權利要求1所述的一種基于Apache?Flink的亂序數據流聚合速率限制方法,其特征在于,步驟(6)向上傳遞通暢狀態操作具體步驟如下:
5.根據權利要求1所述的一種基于Apache?Flink的亂序數據流聚合速率限制方法,其特征在于,水深線的更新發生在阻塞上傳且遇到父節點處于阻塞時,其更新步驟如下:
【技術特征摘要】
1.一種基于apache?flink的亂序數據流聚合速率限制方法,其特征在于,包括步驟如下:
2.根據權利要求1所述的一種基于apache?flink的亂序數據流聚合速率限制方法,其特征在于,步驟(1)具體操作如下:
3.根據權利要求1所述的一種基于apache?flink的亂序數據流聚合速率限制方法,其特征在于,步驟(4)的向上傳遞...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。