本文作者:kaifamei

Flink集的任務資源調整方法、裝置及電子設備與流程

更新時間:2025-12-25 19:04:12 0條評論

Flink集的任務資源調整方法、裝置及電子設備與流程


flink集的任務資源調整方法、裝置及電子設備
技術領域
1.本技術涉及計算機信息處理領域,具體而言,涉及一種flink集的任務資源調整方法、裝置、電子設備及計算機可讀介質。


背景技術:

2.apache flink是由apache軟件基金會開發的開源流處理框架,其核心是用java和scala編寫的分布式流數據流引擎。flink以數據并行和流水線方式執行任意流數據程序,flink的流水線運行時系統可以執行批處理和流處理程序。此外,flink的運行時本身也支持迭代算法的執行。flink相對簡單的編程模型、sql的支持,加上其高吞吐、低延遲、高性能以及支持exactly-once語義和eventtime的特性,使得開發人員可以快速的開發出滿足業務需求的實時處理任務。
3.但是,flink中任務的資源是靜態配置的,任務啟動后使用的資源量就不會變了,即使業務流量發生變化,flink也無法自動調整資源進行應對。如果預先預留過多的任務資源,則在日常處理情況下回造成資源極大的浪費,如果按照日常業務流量配置任務資源的話,則會在突發業務流量的情況下產生任務延遲或者任務處理異常等等問題。
4.因此,需要一種新的flink集的任務資源調整方法、裝置、電子設備及計算機可讀介質。
5.在所述背景技術部分公開的上述信息僅用于加強對本技術的背景的理解,因此它可以包括不構成對本領域普通技術人員已知的現有技術的信息。


技術實現要素:

6.有鑒于此,本技術提供一種flink集的任務資源調整方法、裝置、電子設備及計算機可讀介質,能夠在業務流量發生變化的情況下,自動調整flink任務資源,既能夠避免預留大量任務資源造成的浪費,又能夠避免由于缺少任務資源導致的任務延遲。
7.本技術的其他特性和優點將通過下面的詳細描述變得顯然,或部分地通過本技術的實踐而習得。
8.根據本技術的一方面,提出一種flink集的任務資源調整方法,該方法包括:通過metrics系統獲取flink集中的任務對應的多個指標;根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;在所述任務的狀態存在異常時,生成資源調整指令;基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
9.可選地,還包括:根據任務對應的taskmanager中cpu利用率生成資源調整策略;和/或根據任務對應的時延數值生成資源調整策略;和/或根據任務對應的taskmanager中內存利用率和gc指標生成資源調整策略;和/或根據任務對應的內存溢出異常生成資源調整策略;為多個任務類別分別確定其對應的資源調整策略。
10.可選地,通過metrics系統獲取flink集中的任務對應的多個指標,包括:在
flink集中的任務啟動時,在zookeeper注冊為臨時節點;prometheus監控系統通過zookeeper中的臨時節點對flink集中的任務進行監控;prometheus監控系統通過flink集中metrics系統獲取任務對應的所述多個指標。
11.可選地,prometheus監控系統通過flink集中metrics系統獲取任務對應的所述多個指標,包括:prometheus監控系統基于第一定時周期通過flink集中metrics系統獲取任務對應的延遲指標;prometheus監控系統基于第二定時周期通過flink集中metrics系統獲取任務對應的所述多個指標。
12.可選地,根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略,包括:在sql數據庫中獲取所述多個資源調整策略;根據任務類別由多個資源調整策略目標資源調整策略。
13.可選地,根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常,包括:將所述多個指標代入所述目標資源調整策略對應的規則表達式中,生成計算結果;根據結果階段確定所述任務的狀態是否存在異常。
14.可選地,基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源,包括:將所述資源調整指令發送到flink集的任務調度接口;重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
15.根據本技術的一方面,提出一種flink集的任務資源調整裝置,該裝置包括:指標模塊,用于通過metrics系統獲取flink集中的任務對應的多個指標;策略模塊,用于根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;判斷模塊,用于根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;指令模塊,用于在所述任務的狀態存在異常時,生成資源調整指令;調整模塊,用于基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
16.根據本技術的一方面,提出一種電子設備,該電子設備包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序;當一個或多個程序被一個或多個處理器執行,使得一個或多個處理器實現如上文的方法。
17.根據本技術的一方面,提出一種計算機可讀介質,其上存儲有計算機程序,該程序被處理器執行時實現如上文中的方法。
18.根據本技術的flink集的任務資源調整方法、裝置、電子設備及計算機可讀介質,通過通過metrics系統獲取flink集中的任務對應的多個指標;根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;在所述任務的狀態存在異常時,生成資源調整指令;基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源的方式,能夠在業務流量發生變化的情況下,自動調整flink任務資源,既能夠避免預留大量任務資源造成的浪費,又能夠避免由于缺少任務資源導致的任務延遲。
19.應當理解的是,以上的一般描述和后文的細節描述僅是示例性的,并不能限制本技術。
附圖說明
20.通過參照附圖詳細描述其示例實施例,本技術的上述和其它目標、特征及優點將
變得更加顯而易見。下面描述的附圖僅僅是本技術的一些實施例,對于本領域的普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
21.圖1是現有技術中flink集的系統框架。
22.圖2是根據一示例性實施例示出的一種flink集的任務資源調整方法的系統框圖。
23.圖3是根據一示例性實施例示出的一種flink集的任務資源調整方法的流程圖。
24.圖4是根據另一示例性實施例示出的一種flink集的任務資源調整方法的示意圖。
25.圖5是根據另一示例性實施例示出的一種flink集的任務資源調整方法的示意圖。
26.圖6是根據另一示例性實施例示出的一種flink集的任務資源調整方法的流程圖。
27.圖7是根據一示例性實施例示出的一種flink集的任務資源調整裝置的框圖。
28.圖8是根據一示例性實施例示出的一種電子設備的框圖。
29.圖9是根據一示例性實施例示出的一種計算機可讀介質的框圖。
具體實施方式
30.現在將參考附圖更全面地描述示例實施例。然而,示例實施例能夠以多種形式實施,且不應被理解為限于在此闡述的實施例;相反,提供這些實施例使得本技術將全面和完整,并將示例實施例的構思全面地傳達給本領域的技術人員。在圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復描述。
31.此外,所描述的特征、結構或特性可以以任何合適的方式結合在一個或更多實施例中。在下面的描述中,提供許多具體細節從而給出對本技術的實施例的充分理解。然而,本領域技術人員將意識到,可以實踐本技術的技術方案而沒有特定細節中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知方法、裝置、實現或者操作以避免模糊本技術的各方面。
32.附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應。即,可以采用軟件形式來實現這些功能實體,或在一個或多個硬件模塊或集成電路中實現這些功能實體,或在不同網絡和/或處理器裝置和/或微控制器裝置中實現這些功能實體。
33.附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內容和操作/步驟,也不是必須按所描述的順序執行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實際執行的順序有可能根據實際情況改變。
34.應理解,雖然本文中可能使用術語第一、第二、第三等來描述各種組件,但這些組件不應受這些術語限制。這些術語乃用以區分一組件與另一組件。因此,下文論述的第一組件可稱為第二組件而不偏離本技術概念的教示。如本文中所使用,術語“及/或”包括相關聯的列出項目中的任一個及一或多者的所有組合。
35.本領域技術人員可以理解,附圖只是示例實施例的示意圖,附圖中的模塊或流程并不一定是實施本技術所必須的,因此不能用于限制本技術的保護范圍。
36.為了使得本技術的技術更加容易被理解和執行,現對flink集(flinkcluste)的
系統框架進行簡要描述。如圖1所示,一個flinkcluster是由一個jobmanager和多個taskmanager組成的,jobmanager和taskmanager是進程級組件,其他的組件都是進程內的組件。
37.一個jobmanager中有一個resourcemanager和多個jobmaster,jobmanager中每一個jobmaster單獨管理一個具體的job,jobmanager中的scheduler組件負責調度執行該job的dag中所有task,發出資源請求,即整個資源調度的起點;jobmaster中的slot pool組件持有分配到該job的所有資源。另外,jobmanager中唯一的resource manager負責整個flink cluster的資源調度以及與外部調度系統對接,這里的外部調度系統指的是kubernetes、mesos、yarn等資源管理系統。
38.taskmanager負責task的執行,其中的slot是taskmanager資源的一個子集,也是flink集資源管理的基本單位,slot的概念貫穿資源調度過程的始終。
39.flink集的資源調度是一個經典的兩層模型,其中從cluster到job的分配過程是由slot manager來完成,job內部分配給task資源的過程則是由scheduler來完成。在有資源需求時,scheduler向slot pool發出slot request(資源請求),slot pool如果不能滿足該資源需求則會進一步請求resource manager,具體來滿足該請求的組件是slot manager。
40.flink集目前的資源分配機制為靜態分配機制,flink中的任務(job)在初始化完成之后,在整個運行期間資源不會變化,除非修改對應的資源配置,然后重啟整個job。這樣的設置會導致:當業務流量陡增的時候,job需要大量的資源處理需求時,flink卻無法增加資源,導致任務發生延遲,這種問題對于核心業務的實時處理場景會造成極大的失敗任務。
41.為了應對這種情況,開發人員往往會預分配大量的資源,應對高峰期的流量。這樣就造成了,資源的大量浪費。再有就是,有些開發人員針對flink的內核原理并不是很清楚,在配置任務的時候,分配的資源不合理,也會導致任務的異常,比如任務中使用的state大小大于分配的taskmanager內存,這樣往往會出現一些oom(內存溢出)的問題等。
42.因此,從保證任務穩定性、時效性和降低資源成本的角度出發,需要有能夠針對flink實時任務資源自動進行調優的功能。但是,本技術的發明人發現,目前開源flink本身不支持動態的資源調整,業界不同公司采用的方案都不太相同。
43.有鑒于現有技術中存在的問題,本技術提出一種新的flink集的任務資源調整方法,能夠在節約開發成本以及后續的升級維護成本的前提下,優化現有任務資源過分配的問題;在集任務任務發生延遲時,能夠快速調整資源并恢復;還能夠針對不同業務方定制不同的調優規則,并可快速部署上線;本案提出的方法具有高可用性、擴展性。下面借助于具體的實施例來對本技術的內容進行詳細說明。
44.圖2是根據一示例性實施例示出的一種flink集的任務資源調整方法及裝置的系統框圖。
45.如圖2所示,系統架構20可以包括flink集201,網絡202和服務器203。網絡202用以在flink集201和服務器203之間提供通信鏈路的介質。網絡202可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
46.flink集201可以是進行各種任務處理的服務器集,例如為用戶所瀏覽的互聯
網服務類網站提供支持的后臺管理服務集。flink集201可以對接收到的用戶任務進行分析等處理,并將生成處理結果。
47.服務器203可例如通過metrics系統獲取flink集201中的任務對應的多個指標;服務器203可例如根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;服務器203可例如根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;服務器203可例如在所述任務的狀態存在異常時,生成資源調整指令;服務器203可例如基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
48.服務器203還可例如根據任務對應的taskmanager中cpu利用率生成資源調整策略;服務器203還可例如根據任務對應的時延數值生成資源調整策略;服務器203還可例如根據任務對應的taskmanager中內存利用率和gc(garbage collection,垃圾回收)指標生成資源調整策略;服務器203還可例如根據任務對應的內存溢出異常生成資源調整策略;服務器203還可例如為多個任務類別分別確定其對應的資源調整策略。
49.為了保證最大程度的優化flink任務,在調優規則上面,可采取多種策略組合的方式。更具體的,可有如下幾種策略:
50.cpu-based策略:主要基于taskmanager的cpu實際利用率來動態調整并發度,這是一個典型的彈性計算伸縮策略。當cpu利用率高的時候,說明作業比較繁忙,這時候autopilot就會擴大作業的并發度,來減少單個taskmanager的負載。當cpu利用率低的時候,說明taskmanager比較空閑,這時候就可以反過來減少作業的并發度,來釋放多余的資源;
51.source-delay-based策略:主要根據source的delay metrics(時延度量)來判斷是否需要進行并發度調整。這個策略目前支持kafka和holosource。當檢測到延遲的情況下,可將任務迅速調整為n天內最大的資源使用量,來快速消費數據,消除任務延遲。
52.memory-utilization-based策略:主要基于taskmanager實際內存的利用率以及gc metrics信息來判斷是否需要調整taskmanager內存大小。當taskmanager整體內存利用率低,而且沒有gc嚴重的時候,可以調整內存的大小;當taskmanager內存利用率已經偏高,或者說gc嚴重的時候,可以調大單個taskmanager的內存,來保證上面跑的task處于比較健康的狀態;
53.job-exception-based策略:主要是自動識別因為資源異常所產生的作業的異常??杀O測是oom(內存溢出)等異常日志,當有對應日志的時候,系統會調大taskmanager的內存。
54.服務器203可以是一個實體的服務器,還可例如為多個服務器組成,需要說明的是,本技術實施例所提供的flink集的任務資源調整方法可以由服務器203執行,相應地,flink集的任務資源調整裝置可以設置于服務器203中。
55.圖3是根據一示例性實施例示出的一種flink集的任務資源調整方法的流程圖。flink集的任務資源調整方法30至少包括步驟s302至s310。
56.如圖3所示,在s302中,通過metrics系統獲取flink集中的任務對應的多個指標。可例如,在flink集中的任務啟動時,在zookeeper注冊為臨時節點;prometheus監控系統通過zookeeper中的臨時節點對flink集中的任務進行監控;prometheus監控系統通
過flink集中metrics系統獲取任務對應的所述多個指標。
57.其中,prometheus是一個開源監控解決方案,用于收集和聚合指標作為時間序列數據。更簡單地說,prometheus商店中的每個項目都是一個指標事件,并帶有它發生的時間戳。prometheus通過使用基于拉取的數據獲取機制來確定指標的當前值。它會定期輪詢支持每個指標的數據源,然后將結果作為新事件存儲在時間序列數據庫中。
58.圖4是根據另一示例性實施例示出的一種flink集的任務資源調整方法的示意圖。如圖4所示,flink任務在啟動的時候,會將自身的地址信息作為臨時節點注冊在zookeeper中,這樣prometheus便可實時發現對應的節點,并從flink的jobmanager/taskmanager中拉取指標。當flink任務退出時,promethues檢測到對應的節點消失,便不再從對應的節點拉取指標。
59.在一個實施例中,prometheus監控系統基于第一定時周期通過flink集中metrics系統獲取任務對應的延遲指標;prometheus監控系統基于第二定時周期通過flink集中metrics系統獲取任務對應的所述多個指標。
60.在一個實施例中,指標可包括如下一種或多種:jobmanager/taskmanager的堆內存(heap)使用率;full gc(full garbage collection,針對jvm整個堆進行垃圾回收)的次數;jobmanager/taskmanager的cpu使用率;任務的反壓(backpressure,任務下游蒜子處理過慢,導致任務上游算子阻塞的現象);source消費lag(flink任務數據源算子消費延遲);輸入輸出qps(每秒數據條數);exceptions/errors(任務的異?;蛘咤e誤日志)。
61.在s304中,根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略??衫纾趍ysql數據庫中獲取所述多個資源調整策略;根據任務類別由多個資源調整策略目標資源調整策略。
62.可在數據庫中提取預先設置的多個資源調整策略,如上文所述的cpu-based策略、source-delay-based策略、memory-utilization-based策略、job-exception-based策略等等。按照預先分配的策略和任務類別的對應關系,確定當前任務對應的具體策略種類。
63.在s306中,根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常??衫?,將所述多個指標代入所述目標資源調整策略對應的規則表達式中,生成計算結果;根據結果階段確定所述任務的狀態是否存在異常。
64.將獲取到的指標代入到上文所述的策略中,計算出實時的cpu數值或者實際內存利用率等指標,進而判斷當前任務是否存在異常。
65.在一個實施例中,當前任務對應的策略可為:cpu-based策略,在:cpu-based策略中,基于taskmanager的cpu實際利用率來動態調整并發度。此時,可根據獲取當前cpu的利用率,當cpu的利用率高于第一閾值時,此時可增加作業的并發度,增加的數量可根據cpu的利用率和預先指定的對應關系實時確定。當cpu的利用率小于第二閾值時,此時可減小作業的并發度,減小的數量可根據cpu的利用率和預先指定的對應關系實時確定。
66.其他策略和任務指標可做類似的處理,本技術在此不再贅述。
67.在s308中,在所述任務的狀態存在異常時,生成資源調整指令。接續上文內容,在cpu的利用率高于第一閾值時,或者低于第二閾值時,對應生成資源增加或減小指令。具體的指令參數可根據預先對應關系實時生成。
68.在s310中,基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述
任務對應的任務資源??衫?,將所述資源調整指令發送到flink集的任務調度接口;重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
69.根據本技術的flink集的任務資源調整方法,通過通過metrics系統獲取flink集中的任務對應的多個指標;根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;在所述任務的狀態存在異常時,生成資源調整指令;基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源的方式,能夠在業務流量發生變化的情況下,自動調整flink任務資源,既能夠避免預留大量任務資源造成的浪費,又能夠避免由于缺少任務資源導致的任務延遲。
70.應清楚地理解,本技術描述了如何形成和使用特定示例,但本技術的原理不限于這些示例的任何細節。相反,基于本技術公開的內容的教導,這些原理能夠應用于許多其它實施例。
71.圖5是根據另一示例性實施例示出的一種flink集的任務資源調整方法的示意圖。如圖5所示,本技術的flink集的任務資源調整方法對應的整體架構為無中心的分布式架構,為了保證系統的高性能,可采用的akka技術框架,mysql作為任務配置、調優規則以及調優歷史等信息的存儲。系統內部主要分為如下幾塊:
72.taskmanager可用于調優任務的發現、移除與負載均衡。針對每個調優的實時任務都會創建一個actor,來具體負責改任務的調優檢測工作。
73.tuneactor:可包含三個功能模塊:
74.metricsreader可用于根據配置好的指標,從外部系統(prometheus,elasticsearch)中獲取計算好的指標;
75.ruleevaluator可用于從數據庫中加載對應的調優規則,根據metricsreader獲取的任務指標,判斷任務當前狀態是否正常,是否需要增減資源,然后生成對應的action指令;
76.actionmerger可用于合并ruleevaluator生成的action指令,生成最終的action指令。
77.jobcontroller可用于根據生成的action指令,調用任務調度服務相關接口,更新并重啟任務。
78.對于線上生產環境中的flink實時任務而言,任務的時效性至關重要,因此能夠快速的檢測到任務延遲,并迅速恢復,是flink資源自動優化任務方案的關鍵點之一。另外,線上不同業務方,flink任務的類型、負載是多種多樣的,這樣對于基于規則的調優方案來說,調優規則的靈活性與多變性就非常重要,能夠靈活、快速高效的新增修改調優規則,是本技術中flink集的任務資源調整方法的優點。
79.本技術中flink集的任務資源調整方法,采用akka作為技術框架,promethues作為flink任務的metrics指標計算的來源,來檢測flink任務的異常,能夠保證任務的時效性。
80.本技術中flink集的任務資源調整方法,將調優規則存儲在數據庫中,利用google aviator來靈活解析規則表達式。這樣,在針對不同的業務方或者任務優化調優規則時,只需要修改數據庫中對應的規則即可,無需重新編寫代碼,打包部署上線。使得本申
請中的flink任務的調優方法具有靈活性、易用性。
81.為了保證任務能夠高效的檢測到任務延遲并迅速擴容,同時對prometheus不會產生太大的壓力。本技術中定義了兩個定時器:第一定時器可為actor自定義定時器,actor自定義定時器監測周期較短,主要用于檢測任務是否延遲、是否需要擴容;第二定時器可為crontab定時器,crontab定時器監測周期相對較長,主要用于檢測任務是否需要縮容。具體的流程如圖6所示。
82.在s602中,通過第一定時器獲取延遲指標。
83.在s604中,判斷系統當前是否有延遲的任務。
84.在s606中,通過第二定時器獲取全部指標。
85.在s608中,獲取任務對應的目標資源調整策略。
86.在s610中,計算確定是否需要進行資源調整。
87.在s612中,生成資源調整指令。
88.在s614中,更新重啟任務作業。
89.本技術的flink集的任務資源調整方法,直接存儲metrics對應的promethuesql語句,利用prometheus高效的查詢分析能力,直接獲取對應的flink指標,這種方法不同于現有技術中的硬編碼的方式,本技術的方式能夠保證調優規則的快速部署生效。
90.在本技術的flink集的任務資源調整方法中,為了定義了不同的調優規則模版,這樣,不同業務方,不同flink任務類型,可以使用對應的調優規則模版,同時在升級規則更新的時候,也可以快速批量應用。
91.在本技術的flink集的任務資源調整方法中,利用google avator來解析存儲的規則表達式,靈活高效。當我們需要調整調優規則的時候,只需要修改數據庫中存儲的對應的規則表達式即可,實時生效,且無需重啟程序,用戶側無感知。
92.本領域技術人員可以理解實現上述實施例的全部或部分步驟被實現為由cpu執行的計算機程序。在該計算機程序被cpu執行時,執行本技術提供的上述方法所限定的上述功能。所述的程序可以存儲于一種計算機可讀存儲介質中,該存儲介質可以是只讀存儲器,磁盤或光盤等。
93.此外,需要注意的是,上述附圖僅是根據本技術示例性實施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時間順序。另外,也易于理解,這些處理可以是例如在多個模塊中同步或異步執行的。
94.下述為本技術裝置實施例,可以用于執行本技術方法實施例。對于本技術裝置實施例中未披露的細節,請參照本技術方法實施例。
95.圖7是根據一示例性實施例示出的一種flink集的任務資源調整裝置的框圖。如圖7所示,flink集的任務資源調整裝置70包括:指標模塊702,策略模塊704,判斷模塊706,指令模塊708,調整模塊710。
96.指標模塊702用于通過metrics系統獲取flink集中的任務對應的多個指標;指標模塊702還用于在flink集中的任務啟動時,在zookeeper注冊為臨時節點;prometheus監控系統通過zookeeper中的臨時節點對flink集中的任務進行監控;prometheus監控系統通過flink集中metrics系統獲取任務對應的所述多個指標。
97.策略模塊704用于根據任務類別在多個資源調整策略中為所述任務確定目標資源
調整策略;策略模塊704還用于在mysql數據庫中獲取所述多個資源調整策略;根據任務類別由多個資源調整策略目標資源調整策略。
98.判斷模塊706用于根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;判斷模塊706還用于將所述多個指標代入所述目標資源調整策略對應的規則表達式中,生成計算結果;根據結果階段確定所述任務的狀態是否存在異常。
99.指令模塊708用于在所述任務的狀態存在異常時,生成資源調整指令;
100.調整模塊710用于基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。調整模塊710還用于將所述資源調整指令發送到flink集的任務調度接口;重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。
101.根據本技術的flink集的任務資源調整裝置,通過通過metrics系統獲取flink集中的任務對應的多個指標;根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;在所述任務的狀態存在異常時,生成資源調整指令;基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源的方式,能夠在業務流量發生變化的情況下,自動調整flink任務資源,既能夠避免預留大量任務資源造成的浪費,又能夠避免由于缺少任務資源導致的任務延遲。
102.圖8是根據一示例性實施例示出的一種電子設備的框圖。
103.下面參照圖8來描述根據本技術的這種實施方式的電子設備800。圖8顯示的電子設備800僅僅是一個示例,不應對本技術實施例的功能和使用范圍帶來任何限制。
104.如圖8所示,電子設備800以通用計算設備的形式表現。電子設備800的組件可以包括但不限于:至少一個處理單元810、至少一個存儲單元820、連接不同系統組件(包括存儲單元820和處理單元810)的總線830、顯示單元840等。
105.其中,所述存儲單元存儲有程序代碼,所述程序代碼可以被所述處理單元810執行,使得所述處理單元810執行本說明書中的根據本技術各種示例性實施方式的步驟。例如,所述處理單元810可以執行如圖3,圖6中所示的步驟。
106.所述存儲單元820可以包括易失性存儲單元形式的可讀介質,例如隨機存取存儲單元(ram)8201和/或高速緩存存儲單元8202,還可以進一步包括只讀存儲單元(rom)8203。
107.所述存儲單元820還可以包括具有一組(至少一個)程序模塊8205的程序/實用工具8204,這樣的程序模塊8205包括但不限于:操作系統、一個或者多個應用程序、其它程序模塊以及程序數據,這些示例中的每一個或某種組合中可能包括網絡環境的實現。
108.總線830可以為表示幾類總線結構中的一種或多種,包括存儲單元總線或者存儲單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結構中的任意總線結構的局域總線。
109.電子設備800也可以與一個或多個外部設備800’(例如鍵盤、指向設備、藍牙設備等)通信,使得用戶能與該電子設備800交互的設備通信,和/或該電子設備800能與一個或多個其它計算設備進行通信的任何設備(例如路由器、調制解調器等等)通信。這種通信可以通過輸入/輸出(i/o)接口850進行。并且,電子設備800還可以通過網絡適配器860與一個或者多個網絡(例如局域網(lan),廣域網(wan)和/或公共網絡,例如因特網)通信。網絡適配器860可以通過總線830與電子設備800的其它模塊通信。應當明白,盡管圖中未示出,可
以結合電子設備800使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設備驅動器、冗余處理單元、外部磁盤驅動陣列、raid系統、磁帶驅動器以及數據備份存儲系統等。
110.通過以上的實施方式的描述,本領域的技術人員易于理解,這里描述的示例實施方式可以通過軟件實現,也可以通過軟件結合必要的硬件的方式來實現。因此,如圖9所示,根據本技術實施方式的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、或者網絡設備等)執行根據本技術實施方式的上述方法。
111.所述軟件產品可以采用一個或多個可讀介質的任意組合??勺x介質可以是可讀信號介質或者可讀存儲介質??勺x存儲介質例如可以為但不限于電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合??勺x存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式盤、硬盤、隨機存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。
112.所述計算機可讀存儲介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了可讀程序代碼。這種傳播的數據信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合??勺x存儲介質還可以是可讀存儲介質以外的任何可讀介質,該可讀介質可以發送、傳播或者傳輸用于由指令執行系統、裝置或者器件使用或者與其結合使用的程序。可讀存儲介質上包含的程序代碼可以用任何適當的介質傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合。
113.可以以一種或多種程序設計語言的任意組合來編寫用于執行本技術操作的程序代碼,所述程序設計語言包括面向對象的程序設計語言—諸如java、c++等,還包括常規的過程式程序設計語言—諸如“c”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算設備上執行、部分地在用戶設備上執行、作為一個獨立的軟件包執行、部分在用戶計算設備上部分在遠程計算設備上執行、或者完全在遠程計算設備或服務器上執行。在涉及遠程計算設備的情形中,遠程計算設備可以通過任意種類的網絡,包括局域網(lan)或廣域網(wan),連接到用戶計算設備,或者,可以連接到外部計算設備(例如利用因特網服務提供商來通過因特網連接)。
114.上述計算機可讀介質承載有一個或者多個程序,當上述一個或者多個程序被一個該設備執行時,使得該計算機可讀介質實現如下功能:通過metrics系統獲取flink集中的任務對應的多個指標;根據任務類別在多個資源調整策略中為所述任務確定目標資源調整策略;根據所述多個指標和所述目標資源調整策略判斷所述任務的狀態是否存在異常;在所述任務的狀態存在異常時,生成資源調整指令;基于所述資源調整指令重啟所述任務對應的taskmanager以更新所述任務對應的任務資源。該計算機可讀介質還可實現如下功能:根據任務對應的taskmanager中cpu利用率生成資源調整策略;和/或根據任務對應的時延數值生成資源調整策略;和/或根據任務對應的taskmanager中內存利用率和gc指標生成資源調整策略;和/或根據任務對應的內存溢出異常生成資源調整策略;為多個任務類別分別確定其對應的資源調整策略。
115.本領域技術人員可以理解上述各模塊可以按照實施例的描述分布于裝置中,也可
以進行相應變化唯一不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。
116.通過以上的實施例的描述,本領域的技術人員易于理解,這里描述的示例實施例可以通過軟件實現,也可以通過軟件結合必要的硬件的方式來實現。因此,根據本技術實施例的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、移動終端、或者網絡設備等)執行根據本技術實施例的方法。
117.以上具體地示出和描述了本技術的示例性實施例。應可理解的是,本技術不限于這里描述的詳細結構、設置方式或實現方法;相反,本技術意圖涵蓋包含在所附權利要求的精神和范圍內的各種修改和等效設置。


文章投稿或轉載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-180-0.html

來源:專利查詢檢索下載-實用文體寫作網版權所有,轉載請保留出處。本站文章發布于 2022-11-24 15:05:10

發表評論

驗證碼:
用戶名: 密碼: 匿名發表
評論列表 (有 條評論
2人圍觀
參與討論