本申請涉及云計算,特別是涉及云原生和無服務器計算。
背景技術:
1、隨著云計算的發展,無服務器計算逐漸成為目前發展的熱點,其最主要的特點是按量計費和按需擴展,在應對負載波動時有顯著的性能優勢和價格優勢。為了擴展無服務器計算的應用場景,云提供商推出了面向工作流的無服務器計算實現,從控制流的角度出發,通過多個階段函數之間的拓撲關系來實現復雜的功能,一般可以用有向無環圖dag表示。然而,目前常見的無服務器計算工作流引擎主要是面向靜態工作流,即假設每次請求需要的計算資源都相對一致,忽略了請求的動態特征對于服務質量的影響:
2、(1)中間數據大小的存取對端到端延遲的影響。工作流相鄰步驟之間存在數據傳輸的過程,而無服務器計算的無狀態特性要求在任意節點拉起的容器都可以訪問到中間數據,為此通常需要借助遠程存儲來存取中間數據,這種方式在中間數據較大時傳輸開銷過高;
3、(2)并行分支數目對系統資源分配的影響。工作流提供并行語句以支持大規模數據處理,然而無服務器計算的擴展性要求每一個任務對應于一個容器實例,因此在高并行度下過度擴展容器會占用大量的計算資源,且大量容器都存在訪問頻率低的現象,帶來資源浪費,對云提供商的部署和用戶的服務質量都帶來負面影響。
4、使用本地內存存儲作為上下游函數之間的數據傳輸媒介可以有效降低數據傳輸開銷。這種方法要求上下游函數部署在同一個計算節點,靜態工作流下資源需求相對恒定,可以通過預先采集數據的方式提前做工作流的圖切分,然而,對于動態工作流,由于資源需求波動性較高,圖切分效果不佳,難以滿足某些負載特征下的部署條件,會導致排隊現象,帶來嚴重的用戶服務質量下降。此外,在之前的工作中也有提出通過共享運行時來降低高并行度下的內存開銷,但主要是針對單個函數的多次請求之間,忽略了安全性、公平性等問題;而在工作流場景下,并行任務相互之間容易受到干擾,目前尚未提出有效的共享策略。
5、與靜態工作流相比,動態工作流的任務調度面臨兩大新挑戰:首先,動態場景下容易出現過度資源分配的問題。在某些負載條件下,擴展出的容器實例占用了大量系統資源,但在較長時間內其利用率卻極低,從而對系統整體性能造成不利影響。因此,如何更高效地利用系統資源成為一個亟待解決的關鍵問題。其次,不同請求在同一工作流中可能表現出顯著的特征差異。通用的部署策略無法適應這種差異性,可能導致某些請求的性能大幅下降。因此,如何在資源開銷與數據傳輸開銷之間實現有效平衡,并制定最優調度方案,是動態工作流調度中的另一項重要挑戰。
技術實現思路
1、鑒于以上所述現有技術的缺點,本申請的目的在于提供一種無服務計算動態工作流調度方法、存儲介質及電子設備,用于提高計算節點資源利用率,有效提升負載吞吐量,降低端到端延遲。
2、為實現上述目的及其他相關目的,本申請提供一種無服務計算動態工作流調度方法,所述方法包括:基于資源訪問頻率,周期性對計算節點上的函數容器進行合并和分解;響應于接收到任務調度請求,根據所述任務調度請求產生的中間數據量和任務并行度確定任務的部署節點;將所有任務分發成多個任務組,對于調度到當前節點的任務所在的任務組將所述任務分發至合適度數的容器或容器組合。
3、于本申請的一實施例中,所述對計算節點上的函數容器進行合并和分解包括:以多進程多請求并行處理模式控制單個容器處理一組任務;令不同度數的容器組成異構容器池,并基于當前的任務并行度需求和所述異構容器池為當前的任務并行度分配相應的容器組;根據容器度數和訪問頻率對計算節點上各容器組中的函數容器進行合并和分解。
4、于本申請的一實施例中,所述基于當前的任務并行度需求和所述異構容器池為當前的任務并行度分配相應的容器組的方式為:
5、
6、其中,n為當前的并行度需求,di為容器i能支持的并行執行的任務數,即為容器度數,k為對于當前的并行度需求n在異構容器池中求得最小的容器數。
7、于本申請的一實施例中,所述根據容器度數和訪問頻率對計算節點上各容器組中的函數容器進行合并包括:若存在容器度數與當前的并行度需求匹配的容器,則為當前的任務并行度分配該容器;若存在容器度數小于當前的并行度需求,則基于訪問頻率從所述異構容器池中搜索至少由兩個容器組成的一個容器組合,所述容器組合的總容器度數與當前的并行度需求匹配,并為當前的任務并行度分配該容器組合。
8、于本申請的一實施例中,所述根據容器度數和訪問頻率對計算節點上各容器組中的函數容器進行分解包括:響應于容器組合搜索失敗,基于訪問頻率和容器度數從所述異構容器池中獲取待分解容器;將所述待分解容器分解為至少兩個容器,并令其中一個容器與所述異構容器池中的其它容器組合,形成所述容器組合;響應于容器的訪問頻率低于訪問頻率閾值,分解所該容器。
9、于本申請的一實施例中,所述根據所述任務調度請求產生的中間數據量和任務并行度確定任務的部署節點包括:計算出當前任務并行度下對應的中間數據量,并判斷將本地計算節點的資源是否滿足所述中間數據量,若所述本地計算節點的資源滿足所述中間數據量的資源計算需求,將所述任務部署于所述本地計算節點,若所述本地計算節點的資源不滿足所述中間數據量的資源計算需求,將所述任務切分,并將切分的部分任務部署于遠程計算節點。
10、于本申請的一實施例中,在將所述任務切分,并將切分的部分任務部署于遠程計算節點包括:分別獲取任務在本地計算節點的完成時間和任務在遠程計算節點的完成時間;枚舉任務的所有的二分結果,形成本地任務集合和遠程任務集合;根據所述遠程任務集合分別獲取任務在本地計算節點的完成時間和任務在遠程計算節點的完成時間的各個時間組合;獲取各所述時間組合的最小值,基于該最小值將所述任務切分,并將切分的部分任務部署于遠程計算節點。
11、于本申請的一實施例中,對于調度到當前節點的任務所在的任務組為所述任務分發至合適度數的容器或容器組合包括:按照數據量對待處理的所有任務從小到大進行排序得到一個雙端任務隊列;對于容器度數di,分別取di/2個隊首任務和di/2個隊尾任務作為容器任務分發至對應的容器或容器組;重復上述操作,直到所有的任務分發完成。
12、為實現上述目的及其他相關目的,本申請還提供一種計算機存儲介質,存儲有程序指令,所述程序指令被執行時實現如上所述的無服務計算動態工作流調度方法的步驟。
13、為實現上述目的及其他相關目的,本申請還提供一種電子設備,包括存儲器,用于存儲計算機程序;處理器,用于運行所述計算機程序以實現如上所述的無服務計算動態工作流調度方法的步驟。
14、如上所述,本申請的無服務計算動態工作流調度方法、存儲介質及電子設備具有以下有益效果:
15、本申請可以解決動態工作流場景下的計算資源和中間數據量的高可變性導致的服務質量下降問題,實現延遲最小化的目標,同時最大限度地減少資源浪費,有效提高計算節點資源利用率,有效提升負載吞吐量,降低端到端延遲。
1.一種無服務計算動態工作流調度方法,其特征在于:所述方法包括:
2.根據權利要求1所述的無服務計算動態工作流調度方法,其特征在于:所述對計算節點上的函數容器進行合并和分解包括:
3.根據權利要求2所述的無服務計算動態工作流調度方法,其特征在于:所述基于當前的任務并行度需求和所述異構容器池為當前的任務并行度分配相應的容器組的方式為:
4.根據權利要求2所述的無服務計算動態工作流調度方法,其特征在于:所述根據容器度數和訪問頻率對計算節點上各容器組中的函數容器進行合并包括:
5.根據權利要求4所述的無服務計算動態工作流調度方法,其特征在于:所述根據容器度數和訪問頻率對計算節點上各容器組中的函數容器進行分解包括:
6.根據權利要求1所述的無服務計算動態工作流調度方法,其特征在于:所述根據所述任務調度請求產生的中間數據量和任務并行度確定任務的部署節點包括:
7.根據權利要求6所述的無服務計算動態工作流調度方法,其特征在于:在將所述任務切分,并將切分的部分任務部署于遠程計算節點包括:
8.根據權利要求1或7所述的無服務計算動態工作流調度方法,其特征在于:對于調度到當前節點的任務所在的任務組為所述任務分發至合適度數的容器或容器組合包括:
9.一種電子設備,其特征在于,包括:包括存儲器,用于存儲計算機程序;處理器,用于運行所述計算機程序以實現如權利要求1至權利要求8任一權利要求所述的無服務計算動態工作流調度方法的步驟。
10.一種計算機存儲介質,存儲有程序指令,其特征在于:所述程序指令被執行時實現如權利要求1至權利要求8任一項所述的無服務計算動態工作流調度方法的步驟。