本發明涉及數據處理領域,尤其涉及流計算引擎的測試方法及裝置。
背景技術:
流計算引擎用于對大規模流動數據在不斷變化的運動過程中實時地進行分析。其應用場景廣泛,且種類繁多。例如用于金融領域的數據處理。
在金融銀行領域的日常運營過程中,往往會產生大量數據,這些數據的時效性往往較短。因此,金融銀行領域是大數據流式計算最典型的應用場景之一,也是大數據流式計算最早的應用領域。在金融銀行系統內部,每時每刻都有大量的往往是結構化的數據在各個系統間流動,并需要實時計算。同時,金融銀行系統與其他系統也有著大量的數據流動,這些數據不僅有結構化數據,也會有半結構化和非結構化數據。通過對這些大數據的流式計算,發現隱含于其中的內在特征,可以幫助金融銀行系統進行實時決策。
對于一個具體的應用場景而言,需要選擇合適的流計算引擎進行數據處理。目前,需要技術人員操作,嘗試不同的流計算引擎對數據進行處理,并根據經驗選擇合適的流計算引擎。這種做法效率低,且無法保證選擇最合適的流計算引擎。
因此,現有技術中的缺陷是,運用不同的流計算引擎進行數據處理,需要技術人員操作,并根據經驗選擇合適的流計算引擎,這種做法效率低,且無法保證選擇最合適的流計算引擎。
技術實現要素:
針對上述技術問題,本發明提供一種流計算引擎的測試方法及裝置,通過程序自動調用不同的流計算引擎,并采集流計算引擎的運行結果,通過對運行結果進行分析,選擇合適的流計算引擎。
為解決上述技術問題,本發明提供的技術方案是:
第一方面,本發明提供一種流計算引擎的測試方法,包括:
步驟S1,獲取目標場景;
步驟S2,選擇所述目標場景對應的多個測量參數,所述多個測量參數為預先保存的測量參數;
步驟S3,調用流計算引擎,通過所述流計算引擎對樣本數據進行處理,得到流計算運行結果,所述樣本數據為所述目標場景對應的數據;
步驟S4,根據所述流計算運行結果,得到所述多個測量參數對應的測量值;
步驟S5,根據所述多個測量參數對應的測量值,經分析得到所述流計算引擎的測試結果。
本發明的流計算引擎的測試方法,其技術方案為:先獲取目標場景;接著選擇所述目標場景對應的多個測量參數,所述多個測量參數為預先保存的測量參數;然后調用流計算引擎,通過所述流計算引擎對樣本數據進行處理,得到流計算運行結果;接著,根據所述流計算運行結果,得到所述多個測量參數對應的測量值;最后,根據所述多個測量參數對應的測量值,經分析得到所述流計算引擎的測試結果。
本發明的流計算引擎的測試方法,通過程序自動調用不同的流計算引擎,并采集流計算引擎的運行結果,通過對運行結果進行分析,選擇合適的流計算引擎,本發明中將對流計算引擎的評價抽象為若干測試參數,通過調用流計算引擎,并監控其運行過程,從而獲取各個測試參數的測量值,客觀反映其性能,且效率高。
進一步地,通過多線程并行的方式調用所述流計算引擎,或通過串行的方式調用不同的所述流計算引擎。
根據不同的數據處理需求,可以選擇不同的方式調用流計算引擎。對于數據量小的場景,可選擇串行的方式,邏輯簡單,對于數據量大的場景,可選擇多線程并行的方式對數據進行并行處理,效率更高。
進一步地,所述多個測量參數包括操作復雜程度、key值分布、key值空間、窗口操作、狀態信息、多階段報警類型和時間。
不同的應用場景(目標場景),評價流計算引擎所需要的測量參數不同,因此根據不同的應用場景,評價流計算引擎就需要選擇不同的測量參數。比如,對于拉抬打壓的流計算引擎評價,需要的測量參數是Key值分布、狀態信息、窗口操作、業務時間和操作復雜程度,其中,時間包括業務時間和系統時間;而對于大額封漲停的流計算引擎評價,需要的測量參數是Key值分布、狀態信息和操作復雜程度。
其中,在流計算引擎中,自定義的算子或自定義函數(UDF)工作在進程中,也就是說對于用戶定義好的某個操作(如:UDF),同一個進程共用該操作的一個實例,那么所謂的狀態信息就是該實例里存在放屬性信息,所謂的狀態信息就是該實例里存在放屬性信息。
進一步地,所述多個測量參數對應的測量值包括所述多個測量參數的支持度。
測量值反映的是在此目標場景下,流計算引擎對數據處理的不同測量參數的具體情況,可用支持度表示,比如對于測量參數中狀態信息的測量值,可通過支持度“是否有狀態”反映測量的這個測量值的結果,對于測量參數中Key值分布的測量值,可用過支持度“是否均勻”反映測量的這個測量值的結果。
進一步地,還包括,對所述測試結果的處理:
包括將所述測試結果通過顯示器進行顯示,或將所述測試結果發送給服務器。
將測試結果可通過顯示器進行顯示,也可以傳送給服務器進行保存或處理,測試結果反映了不同的目標場景下,選擇合適的流計算引擎,提高了數據處理效率。
進一步地,通過所述流計算引擎對樣本數據進行處理采用分布式計算方式。
通過流計算引擎進行數據處理,是通過流計算引擎中的算子(窗口等)按照預先定義的數據處理邏輯進行樣本數據的處理;因此,將計算邏輯分配到多個計算節點上進行,多個節點同時工作,這可以有效縮減計算時間。同樣地,分布式流計算的計算引擎會將用于計算操作的算子分布到多個計算節點上,對數據進行并行處理,高效完成數據處理工作。
第二方面,本發明提供了一種流計算引擎的測試裝置,包括:
場景獲取模塊,用于獲取目標場景;
測量參數選擇模塊,用于選擇所述目標場景對應的多個測量參數,所述多個測量參數為預先保存的測量參數;
流計算引擎調用模塊,用于調用流計算引擎,通過所述流計算引擎對樣本數據進行處理,得到流計算運行結果,所述樣本數據為所述目標場景對應的數據;
測量值獲取模塊,用于根據所述流計算運行結果,得到所述多個測量參數對應的測量值;
測試結果模塊,用于根據所述多個測量參數對應的測量值,經分析得到所述流計算引擎的測試結果。
本發明的流計算引擎的測試裝置,其技術方案為:先通過場景獲取模塊,獲取目標場景;接著通過測量參數選擇模塊,選擇所述目標場景對應的多個測量參數,所述多個測量參數為預先保存的測量參數;然后通過流計算引擎調用模塊,調用流計算引擎,通過所述流計算引擎對樣本數據進行處理,得到流計算運行結果,所述樣本數據為所述目標場景對應的數據;接著通過測量值獲取模塊,根據所述流計算運行結果,得到所述多個測量參數對應的測量值;最后通過測試結果模塊,用于根據所述多個測量參數對應的測量值,經分析得到所述流計算引擎的測試結果。
本發明的流計算引擎的測試裝置,通過程序自動調用不同的流計算引擎,并采集流計算引擎的運行結果,通過對運行結果進行分析,選擇合適的流計算引擎,本發明中將對流計算引擎的評價抽象為若干測試參數,通過調用流計算引擎,并監控其運行過程,從而獲取各個測試參數的測量值,客觀反映其性能,且效率高。
進一步地,通過多線程并行的方式調用所述流計算引擎,或通過串行的方式調用不同的所述流計算引擎。
根據不同的數據處理需求,可以選擇不同的方式調用流計算引擎。對于數據量小的場景,可選擇串行的方式,邏輯簡單,對于數據量大的場景,可選擇多線程并行的方式對數據進行并行處理,效率更高。
進一步地,所述多個測量參數包括操作復雜程度、key值分布、key值空間、窗口操作、狀態信息、多階段報警類型和時間。
不同的應用場景(目標場景),評價流計算引擎所需要的測量參數不同,因此根據不同的應用場景,評價流計算引擎就需要選擇不同的測量參數。比如,對于拉抬打壓的流計算引擎評價,需要的測量參數是Key值分布、狀態信息、窗口操作、業務時間和操作復雜程度,其中,時間包括業務時間和系統時間;而對于大額封漲停的流計算引擎評價,需要的測量參數是Key值分布、狀態信息和操作復雜程度。
其中,在流計算引擎中,自定義的算子或自定義函數(UDF)工作在進程中,也就是說對于用戶定義好的某個操作(如:UDF),同一個進程共用該操作的一個實例,那么所謂的狀態信息就是該實例里存在放屬性信息,所謂的狀態信息就是該實例里存在放屬性信息。
進一步地,所述多個測量參數對應的測量值包括所述多個測量參數的支持度。
測量值反映的是在此目標場景下,流計算引擎對數據處理的不同測量參數的具體情況,可用支持度表示,比如對于測量參數中狀態信息的測量值,可通過支持度“是否有狀態”反映測量的這個測量值的結果,對于測量參數中Key值分布的測量值,可用過支持度“是否均勻”反映測量的這個測量值的結果。
附圖說明
為了更清楚地說明本發明具體實施方式或現有技術中的技術方案,下面將對具體實施方式或現有技術描述中所需要使用的附圖作簡單地介紹。
圖1示出了本發明實施例所提供的一種流計算引擎的測試方法的流程圖;
圖2示出了本發明實施例所提供的一種流計算引擎的測試裝置的示意圖。
具體實施方式
下面將結合附圖對本發明技術方案的實施例進行詳細的描述。以下實施例僅用于更加清楚地說明本發明的技術方案,因此只是作為示例,而不能以此來限制本發明的保護范圍。
實施例一
圖1示出了本發明實施例所提供的一種流計算引擎的測試方法的流程圖;如圖1所示,本發明實施例一提供了一種流計算引擎的測試方法,包括:
步驟S1,獲取目標場景;
步驟S2,選擇目標場景對應的多個測量參數,多個測量參數為預先保存的測量參數;
步驟S3,調用流計算引擎,通過流計算引擎對樣本數據進行處理,得到流計算運行結果,樣本數據為目標場景對應的數據;
步驟S4,根據流計算運行結果,得到多個測量參數對應的測量值;
步驟S5,根據多個測量參數對應的測量值,經分析得到流計算引擎的測試結果。
本發明的流計算引擎的測試方法,其技術方案為:先獲取目標場景,不同的場景選擇的測量參數不同;接著選擇目標場景對應的多個測量參數,多個測量參數為預先保存的測量參數,即程序確定需要從哪幾個維度對流計算引擎進行評價;其中,選擇測量參數的過程在評價結束完成前完成即可;然后調用流計算引擎,通過流計算引擎對樣本數據進行處理,得到流計算運行結果,樣本數據為目標場景對應的數據;不同的目標場景選擇不同的測量參數,不同的測量參數數據的處理過程不同;接著,根據流計算運行結果,得到多個測量參數對應的測量值;最后,根據多個測量參數對應的測量值,經分析得到流計算引擎的測試結果,測量結果反映了選擇流計算引擎的性能。
本發明的流計算引擎的測試方法,通過程序自動調用不同的流計算引擎,并采集流計算引擎的運行結果,通過對運行結果進行分析,選擇合適的流計算引擎,本發明中將對流計算引擎的評價抽象為若干測試參數,通過調用流計算引擎,并監控其運行過程,從而獲取各個測試參數的測量值,客觀反映其性能,且效率高。
具體地,通過多線程并行的方式調用流計算引擎,或通過串行的方式調用不同的流計算引擎。
根據不同的數據處理需求,可以選擇不同的方式調用流計算引擎。對于數據量小的場景,可選擇串行的方式,邏輯簡單,對于數據量大的場景,可選擇多線程并行的方式對數據進行并行處理,效率更高。
具體地,多個測量參數包括操作復雜程度、key值分布、key值空間、窗口操作、狀態信息、多階段報警類型和時間。
不同的應用場景(目標場景),評價流計算引擎所需要的測量參數不同,因此根據不同的應用場景,評價流計算引擎就需要選擇不同的測量參數。比如,對于拉抬打壓的流計算引擎評價,需要的測量參數是Key值分布、狀態信息、窗口操作、業務時間和操作復雜程度,其中,時間包括業務時間和系統時間;而對于大額封漲停的流計算引擎評價,需要的測量參數是Key值分布、狀態信息和操作復雜程度;對于x分鐘指數振幅超標,盤中分時漲跌異常應用場景,評價流計算引擎,需要的測量參數是窗口操作、業務時間和即時響應;對于x分鐘會員金額超標應用場景,評價流計算引擎,需要的測量參數是Key值分布、窗口操作和業務時間。
其中,目標場景包括x分鐘指數振幅超標、x分鐘會員金額超標、盤中分時漲跌異常、盤中拉抬打壓、大額封漲停、實時查詢和簡單匯總統計、基本數據存儲和查詢統計、投資者歷史盈虧(盈虧替換為交易金額)計算查詢。
其中,在流計算引擎中,自定義的算子或自定義函數(UDF)工作在進程中,也就是說對于用戶定義好的某個操作(如:UDF),同一個進程共用該操作的一個實例,那么所謂的狀態信息就是該實例里存在放屬性信息,所謂的狀態信息就是該實例里存在放屬性信息。
具體地,多個測量參數對應的測量值包括多個測量參數的支持度。
測量值反映的是在此目標場景下,流計算引擎對數據處理的不同測量參數的具體情況,可用支持度表示,比如對于測量參數中狀態信息的測量值,可通過支持度“是否有狀態”反映測量的這個測量值的結果,對于測量參數中Key值分布的測量值,可用過支持度“是否均勻”反映測量的這個測量值的結果。
具體地,還包括,對測試結果的處理:
包括將測試結果通過顯示器進行顯示,或將測試結果發送給服務器。
將測試結果可通過顯示器進行顯示,也可以傳送給服務器進行保存或處理,測試結果反映了不同的目標場景下,選擇合適的流計算引擎,提高了數據處理效率。
具體地,通過流計算引擎對樣本數據進行處理采用分布式計算方式。
通過流計算引擎進行數據處理,是通過流計算引擎中的算子(窗口等)按照預先定義的數據處理邏輯進行樣本數據的處理;因此,將計算邏輯分配到多個計算節點上進行,多個節點同時工作,這可以有效縮減計算時間。同樣地,分布式流計算的計算引擎會將用于計算操作的算子分布到多個計算節點上,對數據進行并行處理,高效完成數據處理工作。
圖2示出了本發明實施例所提供的一種流計算引擎的測試裝置的示意圖,如圖2所示,本發明實施例一提供了一種流計算引擎的測試裝置10,包括:
場景獲取模塊101,用于獲取目標場景;
測量參數選擇模塊102,用于選擇目標場景對應的多個測量參數,多個測量參數為預先保存的測量參數;
流計算引擎調用模塊103,用于調用流計算引擎,通過流計算引擎對樣本數據進行處理,得到流計算運行結果,樣本數據為目標場景對應的數據;
測量值獲取模塊104,用于根據流計算運行結果,得到多個測量參數對應的測量值;
測試結果模塊105,用于根據多個測量參數對應的測量值,經分析得到流計算引擎的測試結果。
本發明的流計算引擎的測試裝置10,其技術方案為:先通過場景獲取模塊101,獲取目標場景;不同的場景選擇的測量參數不同;接著通過測量參數選擇模塊102,選擇目標場景對應的多個測量參數,多個測量參數為預先保存的測量參數,即程序確定需要從哪幾個維度對流計算引擎進行評價;其中,選擇測量參數的過程在評價結束完成前完成即可;然后通過流計算引擎調用模塊103,調用流計算引擎,通過流計算引擎對樣本數據進行處理,得到流計算運行結果,樣本數據為目標場景對應的數據;不同的目標場景選擇不同的測量參數,不同的測量參數數據的處理過程不同;接著通過測量值獲取模塊104,根據流計算運行結果,得到多個測量參數對應的測量值;最后通過測試結果模塊105,用于根據多個測量參數對應的測量值,經分析得到流計算引擎的測試結果,測量結果反映了選擇流計算引擎的性能。
本發明的流計算引擎的測試裝置10,通過程序自動調用不同的流計算引擎,并采集流計算引擎的運行結果,通過對運行結果進行分析,選擇合適的流計算引擎,本發明中將對流計算引擎的評價抽象為若干測試參數,通過調用流計算引擎,并監控其運行過程,從而獲取各個測試參數的測量值,客觀反映其性能,且效率高。
具體地,通過多線程并行的方式調用流計算引擎,或通過串行的方式調用不同的流計算引擎。
根據不同的數據處理需求,可以選擇不同的方式調用流計算引擎。對于數據量小的場景,可選擇串行的方式,邏輯簡單,對于數據量大的場景,可選擇多線程并行的方式對數據進行并行處理,效率更高。
具體地,多個測量參數包括操作復雜程度、key值分布、key值空間、窗口操作、狀態信息、多階段報警類型和時間。
不同的應用場景(目標場景),評價流計算引擎所需要的測量參數不同,因此根據不同的應用場景,評價流計算引擎就需要選擇不同的測量參數。比如,對于拉抬打壓的流計算引擎評價,需要的測量參數是Key值分布、狀態信息、窗口操作、業務時間和操作復雜程度,其中,時間包括業務時間和系統時間;而對于大額封漲停的流計算引擎評價,需要的測量參數是Key值分布、狀態信息和操作復雜程度;對于x分鐘指數振幅超標,盤中分時漲跌異常應用場景,評價流計算引擎,需要的測量參數是窗口操作、業務時間和即時響應;對于x分鐘會員金額超標應用場景,評價流計算引擎,需要的測量參數是Key值分布、窗口操作和業務時間。
其中,目標場景包括x分鐘指數振幅超標、x分鐘會員金額超標、盤中分時漲跌異常、盤中拉抬打壓、大額封漲停等。
其中,在流計算引擎中,自定義的算子或自定義函數(UDF)工作在進程中,也就是說對于用戶定義好的某個操作(如:UDF),同一個進程共用該操作的一個實例,那么所謂的狀態信息就是該實例里存在放屬性信息,所謂的狀態信息就是該實例里存在放屬性信息。
具體地,多個測量參數對應的測量值包括多個測量參數的支持度。
測量值反映的是在此目標場景下,流計算引擎對數據處理的不同測量參數的具體情況,可用支持度表示,比如對于測量參數中狀態信息的測量值,可通過支持度“是否有狀態”反映測量的這個測量值的結果,對于測量參數中Key值分布的測量值,可用過支持度“是否均勻”反映測量的這個測量值的結果。
實施例二
基于實施例一中的流計算引擎的測試方法,及流計算引擎的測試裝置10,結合具體的開發語言環境及應用場景,進行具體流計算引擎的測試過程說明。
本發明提供的流計算引擎的測試方法及裝置,開發語言環境為Java。結合flink相關的概念對流計算的抽象邏輯進行具體表述:流計算場景的抽象內容是在計算引擎(compute engine)上對源源不斷的輸入數據(input stream)進行處理(operate,也可稱為操作,以下混用),而處理數據的流程是可以被分解為多個操作符(operator,也可稱之為算子,以下混用)和操作符之間的數據流(stream),并組合成一個復雜的處理邏輯(topology)。
然后按照操作符所處在的位置,對操作符進行分類:將接入輸入數據的操作符稱之為source,將對數據進行加工處理的操作符稱之為transform,將把數據寫出到計算引擎之外(如其他存儲)的操作符稱之為sink。
本發明中采用分布式計算,對于分布式計算,其加速原理在于將計算邏輯分配到多個計算節點(node)上進行,多個節點同時工作,這可以有效縮減計算時間。同樣地,分布式流計算的計算引擎會將用于計算操作的算子(operator)分布到多個計算節點上,對數據進行并行處理,高效完成數據處理工作。
從抽象層面看,數據源源不斷地流入到流計算引擎中,按照預定義好的數據處理邏輯,對數據進行并行地加工處理,將處理后的結果寫到存儲上。整個的計算過程以input stream作為驅動,有數據流入到計算引擎中,計算引擎中的算子將對數據完成處理,沒有數據流入的時候,算子處于等待狀態。
由于復雜的處理邏輯已經被拆解成一個個的算子操作,所以整個計算任務最核心最耗時的是算子,只有對算子操作進行加速,才能使得處理邏輯高效完成。基于這樣的認識,分布式的處理邏輯,主要是算子的并發和分布式。也就是說算子可以按照并發度(Parallelism),被拆分成多個獨立的算子實例(instance),多個實例并發工作。一個具體的例子:比如完成word count工作的算子WCOP(Word Count OPerator),可以對輸入流中的單詞(word)進行累加(word->count),那么并行的算子就意味著可以同時存在多個WCOP(比如:10個并發)同時進行這項工作,只要輸入流被切分成多份(10份)分別給到算子實例就能使得處理效率大大提升。
分布式的流計算引擎進行工作時,運算邏輯的表達能力受限于能夠使用算子的能力,算子的表達能力強,則能夠實現更復雜的運算邏輯,反之,算子的表達能力弱,則實現的運算邏輯就很簡單。為方便開發人員順利完成用戶邏輯(業務邏輯),算子中可以加入用戶自定義函數(User define function),使得算子在對數據進行邏輯操作時按照用戶邏輯進行處理。
以flink為例,它提供了多種類型的UDF接口:map、flatMap、filter、reduce、fold、aggregate、window、join、cogroup、connect、split等,這些UDF接口可以方便開發人員實現業務邏輯,并在合理的位置使用,這樣就可以把每個算子的單元邏輯串起來實現復雜的處理邏輯。其中常用到的幾類:
map/flatMap/filter,其實現邏輯如下,輸入是1條記錄(tuple),按照業務邏輯(UDF)完成計算,并按需要collector出去,即為輸出。
reduce/fold/aggregate,其實現邏輯如下,輸入是經過keyby過的數據,該操作符將把多條記錄按照業務邏輯(UDF)聚集成一個輸出結果,并輸出出去。
對于測量參數窗口(window),其實現邏輯如下,對于流入的每條數據,通過window assigner可以判定其由哪個(哪些)window進行處理,每個window實例都有其各自的trigger,用于對window內的數據進行觸發計算,在真正調用業務邏輯(UDF)之前使用evictor將不用于計算的數據過濾出去,這樣就完成了整個計算邏輯,并在業務邏輯中決定哪些數據需要collector出去,輸出給下游。在window之上可以進行單流(stream)操作如:reduce、fold等聚集操作,也可以進行雙流操作如:join、cogroup。
在flink中窗口只是一種相對復雜的算子,其組件包括:assigner、trigger、evictor,其核心處理流程是當數據到來時根據assigner指定的邏輯放入到特定的window中,每個window均有其獨有的trigger,按照trigger中定義的邏輯觸發window的計算,在對窗口內數據進行計算前按照evictor指定的邏輯過濾特定數據。而且上述三個接口均可由用戶自定義實現。
利用flink中的window相關的接口可以實現:
1、每隔固定時間t_s(slide time)對一段時間t_w(window size)內的數據進行計算,這稱之為滑動時間窗口計算(slide window),如每隔30秒對此前180秒的數據進行一次拉抬打壓報警計算;
2、周期(tumbling time)輸出統計數據,這稱之為跳動時間窗口計算(tumbling window),如輸出每秒鐘證券的最大價格、最小價格、成交股數等。
對于測量參數Key值:Flink中的key是用來對數據進行分組操作的,而并行度(Parallelism)決定的是某個算子使用的task(thread)數量,key by過的數據流流入到一個并行的算子上時,相同key的數據會由同一個算子進行處理,同一個算子上會處理多個key的數據。Key by后的數據往往會使用聚集操作(可以在窗口上進行),那么flink集群中將為所有出現的key存儲一個聚集狀態。因此key的取值空間大小(約等于flink集群中出現的key數量)對于flink集群將有不同的內存壓力。
舉例進行說明:
1、證券
證券數量在10000只左右。當使用證券進行keyby時,并行的算子會處理10000個左右的key,以及key對應的聚集狀態。如果聚集狀態不大(如:500KB),則flink集群壓力不會太大(總體的狀態數據量為500KB*2000=1000MB,還被并行計算)。
2、投資者
投資者數量在億級左右。當使用投資者進行keyby時,并行的算子會處理1億左右的key。按照聚集狀態數據量為200B估計,則flink集群壓力會達到:200B*10^8=20GB。
3、證券+投資者
證券+投資者描述的是當天活躍的投資者交易證券的行為,其數量級應該在億級,分析與投資者情況類似,不再贅述。
當數據在Key值上分布不均勻,存在數據傾斜問題時,有可能對集群造成不同程度的影響,不過這取決于keyby后續操作是什么算子。當key by后是聚集算子時,對于每個key其緩存的是聚集狀態,該聚集狀態大小不隨數據傾斜發生變化,因此在keyby后進行聚集操作這個場景下數據傾斜不影響集群的內存壓力,但數據傾斜意味著某些key的流入數據量大,這就使得其計算開銷增加,對cpu占用情況會有一定程度加重。
當keyby后是window算子時,其影響情況取決于window內進行什么形式的操作,如果在window上進行聚集操作,其對集群影響情況與上面分析類似;如果在window上進行全窗口數據計算,即window.apply(User Define Window Function),那么對于window中的每個key,都會在內存中緩存一份iterable,以方便用戶處理邏輯調用,在這個情況下,數據傾斜意味著數據量大的key所在機器(thread)的內存壓力會增大,又在同一個thread上,多個key值是順序進行的,數據量大的key會延時阻塞這個thread上后續的計算。
從報警類型來說,有一階段類的報警,也有具有事件依賴關系的多階段報警。對于一階段報警,實現相對容易,關注焦點主要在實現邏輯、復雜度、吞吐量、延時等;對于多階段報警,需要當某條件成立(報警)時在進行后續監控報警。
對業務邏輯來說,窗口操作是一種很重要的操作算子,其操作流程在上述窗口介紹中進行了說明。
從多個維度(多個測量參數)對Flink上運行的任務進行分解可以得到如下表格:
針對不同的業務場景可以對其進行設計分析,大體的分析維度可以參考上面的表格,而具體的實現邏輯中給出了相關的實現細節。詳情參考具體場景的設計實現。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍,其均應涵蓋在本發明的權利要求和說明書的范圍當中。