TWI654563B - Computing resource expansion and release method and device thereof for real-time stream computing - Google Patents
Computing resource expansion and release method and device thereof for real-time stream computingInfo
- Publication number
- TWI654563B TWI654563B TW103134242A TW103134242A TWI654563B TW I654563 B TWI654563 B TW I654563B TW 103134242 A TW103134242 A TW 103134242A TW 103134242 A TW103134242 A TW 103134242A TW I654563 B TWI654563 B TW I654563B
- Authority
- TW
- Taiwan
- Prior art keywords
- computing
- message
- unit
- computing unit
- task
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明揭示了一種用於即時串流式計算的計算資源擴容方法和裝置,一種用於即時串流式計算的計算資源釋放方法和裝置。其中所述用於即時串流式計算的計算資源擴容方法包括:判斷是否存在工作負荷超過指定條件的計算單元;若是,對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分,並將拆分後的計算任務指派給與拆分數目對應的計算單元處理。採用本發明提供的用於即時串串流式計算的計算資源擴容方法和計算資源釋放方法,能夠在系統繁忙時自動擴充計算資源、在系統空閒時自動釋放多餘的計算資源。
Description
本發明關於即時串流式計算領域,具體提供一種用於即時串流式計算的計算資源擴容方法及其裝置。本發明同時提供一種用於即時串流式計算的計算資源釋放方法及其裝置。
隨著資訊科技的日新月異,資訊呈現出爆發式的膨脹,人們獲取資訊的途徑也更加多樣、更加便捷,同時對於資訊的時效性要求也越來越高,在這種情況下,基於分散式集群的即時串流式處理系統成為對海量資料進行計算和處理的主要方式之一。即時串流式處理系統的基本原理是:把海量即時資料抽象為一個個獨立的訊息,然後把這些訊息分發到預先分配好的計算單元上,一個計算單元計算完成後,會把計算結果按照預先設定的訊息串流的處理順序(拓撲關係)傳遞給後續的計算單元(也稱下游計算節點),直到訊息串流處理完畢為止。上、下游計算節點之間訊息串流的傳遞可以採用點對點傳遞的同步模型,
也可以採用分散式訊息佇列進行傳遞。
在資料量相對穩定的情況下,上述分散式串流式處理系統通常採用固定的資源配置方式即可。但是,在大資料的即時資料處理場景中,上游資料源產生資料流的頻率時常具有不確定的波動性,一方面,系統高峰時產生的資料流量會增大,而系統低峰時產生的資料流量會降低;另一方面,前臺業務邏輯調整也會導致資料流量波動,例如:在購物網站進行促銷活動的時段,賣家操作頻繁,商品變化頻率會異常增加,活動結束後,商品變化率又恢復正常,導致資料流量產生大幅度波動。
而即時串流式處理系統無法預計資料流量可能出現的波動,為了滿足系統處理資料的即時性要求,可以按照系統在高峰時的最大資料處理能力進行計算資源(即:計算節點)的配置,這樣做雖然保證了系統的即時性,但是在系統低峰期,計算資源則處於大量閒置的狀態,在資料流量波動幅度較大的大資料場景下,對計算資源的浪費更為顯著。
由於現有的分散式串流式處理系統對訊息的抽象和管理大多停留在對訊息分片、訊息分發等傳統大資料概念上,不具備自動監測系統繁忙程度的能力,自然也不具備自動擴充或者釋放計算資源的能力,因此要解决上述因為資料流量大幅波動引發的問題,需要透過對計算節點的操作來調整系統的計算資源,即:當發現系統壓力變大後或者變小後,修改計算節點與訊息分片的對應關係,並透過
新增計算節點或者删除計算節點的方式實現系統計算資源的擴充或釋放,由於上述過程一般依賴人工操作完成的,效率相對低下。此外,對於採用點對點同步模型傳遞訊息的串流式計算系統,由於上、下游計算節點之間的緊密耦合,計算資源的擴充或釋放會影響上、下游全部計算節點,而且由於全域拓撲結構的變更,通常還需要先停止現有服務、修改拓撲配置後再重新啟動服務,整個處理過程比較複雜、耗時。
本發明提供一種用於即時串流式計算的計算資源擴容方法,以及一種用於即時串流式計算的計算資源釋放方法,以解决現有技術無法自動根據資料流量的波動擴充或者釋放計算資源的問題。本發明另外提供一種用於即時串流式計算的計算資源擴容裝置,以及一種用於即時串流式計算的計算資源釋放裝置。
本發明提供一種用於即時串流式計算的計算資源擴容方法,包括:判斷是否存在工作負荷超過指定條件的計算單元;若是,對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分,並將拆分後的計算任務指派給與拆分數目對應的計算單元處理。
可選的,所述計算任務是指,包含一個或者多個訊息
分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述判斷是否存在工作負荷超過指定條件的計算單元,包括:獲取計算單元處理訊息分片集合的執行狀況;根據上述獲取的計算單元處理訊息集合的執行狀況判斷是否存在工作負荷超過指定條件的計算單元;所述計算單元處理訊息集合的執行狀況包括:計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目,所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值。
可選的,所述根據上述獲取的計算單元處理訊息集合的執行狀況判斷是否存在工作負荷超過指定條件的計算單元,具體是判斷是否存在同時滿足以下兩個條件的計算單元:計算單元的訊息處理進度大於預先設定的進度閾值;計算單元每秒鐘處理的訊息數目大於或者等於計算單元每秒鐘處理訊息數目的理論值;以及滿足如下條件。
處於工作狀態的計算單元總數小於預先指定的計算單元數目的最大值。
可選的,所述對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分是指,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個訊息分片集合;
相應的,所述將拆分後的計算任務指派給與拆分數目對應的計算單元處理是指,將拆分後的兩個訊息分片集合分別指派給兩個計算單元處理。
可選的,所述將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個訊息分片集合是指,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個包含訊息數量盡可能均等的訊息分片集合。
可選的,所述將拆分後的兩個訊息分片集合分別指派給兩個計算單元處理,包括:向工作負荷超過指定條件的計算單元發送停止處理訊息分片集合的命令;以及,為負責處理拆分後的計算任務的兩個計算單元設置各自負責處理的訊息分片集合;完成上述操作後,向所述負責處理拆分後的計算任務的兩個計算單元分別發送啟動命令。
相應的,本發明還提供一種用於即時串流式計算的計算資源擴容裝置,包括:工作負荷判斷單元,用於判斷是否存在工作負荷超過指定條件的計算單元;計算任務拆分單元,用於當所述工作負荷判斷單元的輸出為“是”時,對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分;拆分任務指派單元,用於將所述計算任務拆分單元輸
出的拆分後計算任務指派給與拆分數目對應的計算單元處理。
可選的,所述計算任務拆分單元拆分的計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述工作負荷判斷單元包括:
執行狀況獲取子單元,用於獲取計算單元處理訊息分片集合的執行狀況;所述計算單元處理訊息集合的執行狀況包括:計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目,所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值;
工作負荷判斷執行子單元,用於根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況判斷是否存在工作負荷超過指定條件的計算單元。
可選的,所述工作負荷判斷執行子單元具體用於,判斷是否存在同時滿足以下三個條件的計算單元:計算單元的訊息處理進度大於預先設定的進度閾值;計算單元每秒鐘處理的訊息數目大於或者等於計算單元每秒鐘處理訊息數目的理論值;處於工作狀態的計算單元總數小於預先指定的計算單元數目的最大值。
可選的,所述計算任務拆分單元具體用於,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個訊息分片集合;
相應的,所述拆分任務指派單元具體用於,將拆分後的兩個訊息分片集合分別指派給兩個計算單元處理。
可選的,所述計算任務拆分單元具體用於,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個包含訊息數量盡可能均等的訊息分片集合。
可選的,所述拆分任務指派單元包括:停止命令發送子單元一,用於向工作負荷超過指定條件的計算單元發送停止處理訊息分片集合的命令;任務設置子單元一,用於為負責處理拆分後的計算任務的兩個計算單元設置各自負責處理的訊息分片集合;啟動命令發送子單元一,用於在上述兩個子單元完成操作後,向所述負責處理拆分後的計算任務的兩個計算單元分別發送啟動命令。
此外,本發明還提供一種用於即時串流式計算的計算資源釋放方法,包括:判斷是否需要進行計算單元的合併;若是,將需要合併的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併,並指派一個計算單元負責處理合併後的計算任務;所述計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述方法包括:對需要合併的計算單元進行分組;相應的,所述將需要合併的計算單元負責處理的、透
過分散式訊息佇列傳遞的計算任務進行合併是指,針對每個分組,將本分組內的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併。
可選的,所述判斷是否需要進行計算單元的合併,包括:獲取計算單元處理訊息分片集合的執行狀況;所述計算單元處理訊息分片集合的執行狀況是指,計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目;所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值;根據上述獲取的計算單元處理訊息分片集合的執行狀況,判斷目前系統是否同時滿足以下兩個條件:訊息處理進度小於或者等於預先設定的進度閾值的計算單元的數目多於一個;處於工作狀態的計算單元總數大於預先指定的計算單元數目的最小值。
可選的,所述對需要合併的計算單元進行分組,採用如下分組方法:將需要合併的計算單元採用兩兩組合的方式形成多個分組,並且,保證如下條件成立:根據所獲取的計算單元處理訊息分片集合的執行狀況資料,將每個分組內的兩個計算單元的每秒鐘處理訊息數目相加,其結果小於計算單元每秒鐘處理訊息數目的理論值。
可選的,所述指派一個計算單元負責處理合併後的計
算任務,包括:向分組內的需要合併的兩個計算單元分別發送停止處理訊息分片集合的命令;以及,為負責處理合併後的計算任務的計算單元設置其負責處理的訊息分片集合;完成上述操作後,向所述負責處理合併後的計算任務的計算單元發送啟動命令。
相應的,本發明還提供一種用於即時串流式計算的計算資源釋放裝置,包括:資源合併判斷單元,用於判斷是否需要進行計算單元的合併;計算任務合併單元,用於當所述合併判斷單元的輸出為“是”時,將需要合併的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併;合併任務指派單元,用於指派一個計算單元負責處理所述任務合併單元輸出的合併後的計算任務;所述計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述裝置包括:分組單元,用於對需要合併的計算單元進行分組;相應的,所述計算任務合併單元具體用於針對每個分組,將本分組內的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併。
可選的,所述資源合併判斷單元包括:執行狀況獲取子單元,用於獲取計算單元處理訊息分
片集合的執行狀況;所述計算單元處理訊息分片集合的執行狀況是指,計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目;所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值;合併判斷執行子單元,用於根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況,判斷目前系統是否同時滿足以下兩個條件:訊息處理進度小於或者等於預先設定的進度閾值的計算單元的數目多於一個;處於工作狀態的計算單元總數大於預先指定的計算單元數目的最小值。
可選的,所述分組單元具體用於,將需要合併的計算單元採用兩兩組合的方式形成多個分組,並且,保證如下條件成立:根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況資料,將每個分組內的兩個計算單元的每秒鐘處理訊息數目相加,其結果小於計算單元每秒鐘處理訊息數目的理論值。
可選的,所述合併任務指派單元包括:停止命令發送子單元二,用於向分組內的需要合併的兩個計算單元分別發送停止處理訊息分片集合的命令;任務設置子單元二,用於為負責處理合併後的計算任務的計算單元設置其負責處理的訊息分片集合;啟動命令發送子單元二,用於在上述兩個子單元完成
操作後,向所述負責處理合併後的計算任務的計算單元發送啟動命令。
與現有技術相比,本發明具有以下優點:
本發明提供的用於即時串流式計算的計算資源擴容方法,在採用分散式訊息佇列傳遞計算任務的基礎上,透過判斷是否存在待擴容的計算單元,並對待擴容計算單元負責處理的計算任務進行拆分,然後將拆分後的計算任務指派給與拆分數目對應的接替計算單元處理,從而實現了在系統繁忙時自動擴充計算資源的功能,有效保證系統處理的即時性。
本發明提供的用於即時串流式計算的計算資源釋放方法,在採用分散式訊息佇列傳遞計算任務的基礎上,透過判斷是否需要進行計算單元的合併,並對需要合併的計算單元負責處理的計算任務進行合併,然後指派一個接替計算單元負責處理合併後的計算任務,從而實現了在系統空閒時自動釋放多餘的計算資源的功能,減少對計算資源的浪費。
S201-S204‧‧‧步驟
S501-S507‧‧‧步驟
S701-S704‧‧‧步驟
S801-S808‧‧‧步驟
901‧‧‧工作負荷判斷單元
902‧‧‧計算任務拆分單元
903‧‧‧拆分任務指派單元
1001‧‧‧資源合併判斷單元
1002‧‧‧計算任務合併單元
1003‧‧‧合併任務指派單元
圖1為本發明技術方案需要達成的技術效果的示意圖;圖2為本發明的一種用於即時串流式計算的計算資源擴容方法的實施例流程圖;圖3為本發明的一個計算單元處理訊息的時序圖;
圖4為本發明的一種用於即時串流式計算的計算資源擴容方法的拆分過程示意圖;圖5為本發明的一種用於即時串流式計算的計算資源擴容方法的拆分算法流程圖;圖6為本發明的一種用於即時串流式計算的計算資源釋放方法的合併過程示意圖;圖7為本發明的一種用於即時串流式計算的計算資源釋放方法的實施例流程圖;圖8為本發明的一種用於即時串流式計算的計算資源釋放方法的合併算法流程圖;圖9為本發明的一種用於即時串流式計算的計算資源擴容裝置的實施例示意圖;圖10為本發明的一種用於即時串流式計算的計算資源釋放裝置的實施例示意圖。
在下面的描述中闡述了很多具體細節以便於充分理解本發明。但是本發明能夠以很多不同於在此描述的其它方式來實施,本領域技術人員可以在不違背本發明內涵的情況下做類似推廣,因此本發明不受下面揭示的具體實施的限制。
請參看圖1,該圖為本發明所提供的技術方案需要達成的技術效果的示意圖。
如圖1所示,在即時串流式計算系統中,採用分散式
訊息佇列傳遞計算任務。本發明提供的實施例期望達成的技術效果是:當計算單元的任務過重時,即分散式訊息佇列在流量高峰期時,能夠自動檢測到這一情況,並自動增加計算單元數量;當分散式訊息佇列在流量低峰期時,同樣能夠檢測到這一情況,並自動減少訊息流計算單元數量。
為達成上述目的,本發明提供一種用於即時串流式計算的計算資源擴容方法,以及一種用於即時串流式計算的計算資源釋放方法。上述兩種方法針對的都是將計算單元的數量--即計算資源--根據分散式訊息佇列傳遞的計算任務進行調整,前者是在計算任務過大時增加計算資源,後者是在計算任務過小時減少計算資源。
請參看圖2,該圖為本發明第一實施例提供的用於即時串流式計算的計算資源擴容方法的流程圖。該流程圖所示的各個步驟,由計算系統中某個能夠獲得各個計算單元狀況並可以對整個計算系統的資源進行調配的調度處理單元完成。
步驟S201,獲取計算單元處理訊息分片集合的執行狀況。
圖1所示的各個計算單元透過分散式訊息佇列獲得計算任務。訊息佇列包含若干以佇列形式排列的訊息,為了便於進行任務分配,對許多訊息組成的訊息集合進行分片,形成訊息分片。一個訊息佇列包含若干訊息分片,因此可以視為訊息分片的集合。以下稱計算單元處理的訊息
佇列為訊息分片集合,以便於叙述。每一片稱作一個訊息分片。每個訊息分片包含的訊息個數稱為分片訊息數(SplitIoPs)。
所述計算單元處理訊息分片集合的執行狀況,特指用於衡量計算單元計算任務的負荷情況的一些指標,在本實施例中,主要包括計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目。
請參看圖3,該圖示出一個計算單元處理訊息佇列的時序圖。以下結合該圖,說明訊息處理進度,和計算單元每秒鐘處理的訊息數目兩個指標的具體含義。
如圖所示,每個被串流式計算系統處理的資料被稱作一個訊息;計算單元接收到的訊息來自遠程訊息源,這些遠程訊息源一般有多個,圖中示為“遠程訊息源x N”。每個訊息都有一個產生時刻TP,系統接收到訊息的時間為TR,訊息被處理完成的時間為TC。
訊息處理進度,即串流式計算系統中訊息被處理的時刻TH和目前正在被處理訊息的產生時刻TP之差,被稱為訊息處理進度P。如果P大於一個系統設置的進度閾值(ThresholdProcess),則稱為進度延遲(Process Delay),否則稱為進度正常(Proccess Normal)。進度閾值可以取自一個計算單元進行訊息處理的正常值範圍內的值。在計算任務較多的情況下,計算單元有可能超過該進度閾值,在計算任務較少的情況下,也有可能小於該進度閾值。
所述計算單元每秒鐘處理的訊息數目(TPS),需要考慮計算單元中包含的執行緒數目以及一個訊息的處理時間即等待時長(Latency),以下具體說明。
在串流式計算系統中,一個訊息的處理時間被稱為等待時長(Latency),具體而言,串流式計算系統中,Iatency=TC-TR,該數值的單位一般採用ms。對於一個具體的計算單元,正常工作情況下等待時長Latency有一個平均值,在下面的計算公式中,Latency即用於表示這個平均值,而不是表示某個具體訊息的實際等待時長。
即時串流式計算系統中的一個計算單元處理N個訊息分片,每個訊息分片需要一個執行緒負責讀取此訊息分片的訊息,一個計算單元中一般多個執行緒並行處理訊息分片;一個計算單元的執行緒數目記為M,稱為計算單元的並行度。N個訊息分片和M個執行緒在數量上沒有相關關係,一般N遠大於M。
所述每秒鐘處理的訊息數目,其計算要考慮該計算單元處理一個訊息的等待時長Latency,以及該計算單元的執行緒數量;其具體計算公式如下:每秒鐘處理的訊息數目的理論值(理論TPS)=1000/Latency*M;上述理論TPS是根據計算單元的相關參數獲得,並非計算單元實際的每秒鐘處理的訊息數目。
實際TPS,是實際統計出來的一個計算單元每秒鐘處理的訊息數。
本步驟獲取計算單元處理訊息分片集合的執行狀況,實際上就是獲取某個具體的計算單元的實際訊息處理進度和實際TPS。
步驟S202,根據上述獲取的計算單元處理訊息集合的執行狀況判斷是否存在工作負荷超過指定條件的計算單元;若是,則進入下一步。若否,則返回步驟S201。
在獲得某個計算單元的執行狀況後,就可以根據該執行狀況判斷是否存在工作負荷超過指定條件的計算單元。所述執行狀況包括計算單元的訊息處理進度和計算單元每秒鐘處理的訊息數目。
具體的判斷方法是判斷是否存在同時滿足以下三個條件的計算單元:A、計算單元的訊息處理進度大於預先設定的進度閾值;B、計算單元每秒鐘處理的訊息數目大於或者等於計算單元每秒鐘處理訊息數目的理論值;C、處於工作狀態的計算單元總數小於預先指定的計算單元數目的最大值。
條件A中的進度閾值,是根據計算單元的正常情況設置的衡量訊息處理進度情況的參數,若訊息處理進度大於該進度閾值,則說明出現了進度延遲,說明有可能需要增加計算資源,即進行資源擴容。
條件B說明計算單元的壓力過大,有增加計算資源的必要。
條件C則用於判斷是否還存在可以用於資源擴容的計算單元,如果處於工作狀態的計算單元總數已經等於預先制定的計算單元數目的最大值,則在目前系統下,不存在增加計算單元的可能,則即便出現了進度延遲,以及計算單元壓力過大的情況,也沒有資源進行資源擴容。
本步驟的判斷結論為否,則可以返回步驟S201,繼續監測計算單元處理訊息分片集合的執行狀況。在返回步驟S201前,也可以延遲一個時間間隔,以減小為監測執行狀況耗費的資源。
步驟S203,對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分。
在本實施例中,以一拆二為例說明進行上述計算任務拆分的過程。在實際實施中,不妨採用一拆三或者一拆四等,但一般採用一拆二的方式比較簡便並且能夠獲得擴容效果,因此是一般使用的方案。
對分散式訊息佇列傳遞的計算任務進行拆分,是以訊息分片為單位進行拆分。如圖4所示,是拆分過程示意圖。
在拆分過程中,第一步是將所述待擴容計算單元負責處理的訊息分片集合拆分成兩個訊息分片集合,圖4中所示,在該示意圖中,計算單元workerA負責處理的訊息分片集合包括SplitA~SplitD四個訊息分片,在拆分後,形成包括SplitA~SplitB的第一訊息分片集合,和包括
SplitC~SplitD的第二訊息分片集合。在上述拆分過程中,期望第一訊息分片集合和第二訊息分片集合各自包含的訊息數量盡可能均等,這樣才能夠使承擔上述兩個訊息分片集合的計算單元承擔大致相同的工作量。
步驟S204,將拆分後的計算任務指派給與拆分數目對應的計算單元處理。
前一步驟拆分完成後,將拆分後的兩個訊息分片集合分別指派給兩個計算單元Worker A1和Worker A2處理。
該指派過程具體可以分為兩個步驟,具體步驟如下:
第一步,向工作負荷超過指定條件的計算單元Worker A發送停止處理訊息分片集合的命令;以及,為負責處理拆分後的計算任務的兩個計算單元設置各自負責處理的訊息分片集合。
由調度處理單元向工作負荷超過指定條件的計算單元發送停止處理訊息分片集合的命令,使Worker A能夠停止工作;這是由其它計算單元接替其工作的前提,否則會造成計算資源的浪費。與此同時,為兩個計算單元Worker A1和Worker A2設置各自負責處理的訊息分片集合,即將SplitA~SplitB組成第一訊息分片集合併指定給Worker A1處理;將SplitC~SplitD組成的第二訊息分片集合指定給Worker A2處理。
第二步,向負責處理拆分後的計算任務的兩個計算單元分別發送啟動命令。
第一步的準備工作完成後,就可以啟動計算單元
Worker A1和Worker A2工作,使它們開始處理各自負責的訊息分片集合,該步驟需要向這兩個計算單元發送啟動命令,使它們開始處理各自負責的訊息分片集合。
透過上述步驟,即實現了將一個計算單元負責的訊息分片集合分拆到兩個計算單元處理,實現了計算資源的擴容。
這裏需要說明的是,拆分後的計算任務,既可以指派給不同於原計算單元(工作負荷超過指定條件的計算單元)的其他空閒計算單元處理,也可以指派給原計算單元和其他空閒計算單元共同處理,只要承擔計算任務的計算單元的數目與拆分數量相對應即可。
例如,上面描述了將拆分後的兩個訊息分片集合指派給兩個空閒計算單元的處理過程,也就是說由兩個空閒計算單元接替原計算單元的計算任務,即:WorkerA1和WorkerA2接替WorkerA的計算任務。在其他的實施方式中,也可以將拆分後的兩個訊息分片集合中的一個指派給一個空閒計算單元處理,而另外一個仍由拆分前的計算單元負責處理,即:WorkerA和WorkerA1負責處理原WorkerA的計算任務。上述兩種方式都能夠實現資源擴容的目的,只是具體實施方式存在差別,都不偏離本發明技術方案的核心。
在上述實施例中,其優選方案需要盡可能的保證拆分後的第一訊息分片集合和第二訊息分片集合各自包含的訊息數量盡可能均等。由於每個訊息分片包含的訊息數量並
不相等,因此,如何使拆分後形成的兩個訊息分片集合盡可能均等,需要採用能夠實現這個目標的調度方法。本實施例提供一個實現這一目的的調度方法。
對所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合進行拆分,不同的實施方式可以拆分成不同數量的訊息分片集合。考慮到在實際應用中,調度處理單元通常對系統進行即時監測,能夠即時接收來自各個計算單元上報的對訊息分片集合的處理狀況,因此可以比較及時地發現系統是否處於壓力過大的狀態,並且準確定位需要進行拆分處理的計算單元,在這種情況下,將工作負荷超過指定條件的計算單元負責的訊息分片集合拆分成兩個訊息分片集合,可有效緩解目前的計算節點的壓力。
具體的拆分過程可以採用不同的拆分策略,或者說根據不同的依據進行拆分。考慮到在即時串流式處理系統中,計算單元的基本處理單位是訊息,需要處理的訊息越多,計算單元自然就越繁忙,因此本發明的技術方案提供了一種根據訊息數量進行拆分的算法,以實現前述將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合盡可能均等的分為兩個訊息分片集合,即:兩個訊息分片集合中包含的訊息數量盡可能相同。下面對本發明所提供的拆分算法的原理進行說明。
為了將工作負荷超過指定條件的計算單元負責處理的訊息分片集合(以下簡稱源訊息分片集合)拆分成兩個集合:第一訊息分片集合A和第二訊息分片集合B,可以有
很多種拆分方式,如果窮舉所有可能的拆分方案,再從中選擇滿足要求的方案,效率自然相對比較低。為了實現盡可能均分,並且提高拆分效率,本發明的技術方案先對源訊息分片集合中的分片按照所包含訊息的數目進行從小到大的排序,並且從最小的訊息分片(即:包含訊息數目最少)開始,與第一訊息分片集合A(初始為空)的訊息數量進行累加,只要訊息數量的累加和小於源訊息分片集合的訊息總數的一半,就將目前累加的訊息分片加入第一訊息分片集合A中,然後繼續按順序進行下一個訊息分片的累加,直到所述累加和大於訊息分片集合的訊息總數的一半,那麽此時就得到了第一訊息分片集合A,用源訊息分片集合減去第一訊息分片集合A就得到第二訊息分片集合B。
採用這種方式不需要窮舉,不需要多次遍歷,只需要執行一次順序查找,即可得到滿足要求的拆分方案。而且由於採用上述算法得到的拆分方案基本上達到了均分訊息數目的目的,因此拆分過程通常可以一次成功,避免了現有技術中完全依賴人工的經驗進行拆分導致的負載不均衡、需要反復調整設置的問題。下面結合附圖5對本拆分算法的基本步驟作簡要說明。
步驟501:計算源訊息分片集合包含的訊息總數QS;步驟502:將源訊息分片集合中的訊息分片按照所包含訊息數目由小到大進行排序,排序後的集合為S,Si為
其中第i個分片,Qsi為Si分片包含的訊息的數目,SN為集合S中包含的訊息分片的總個數;步驟503:進行相關的初始化,i=0,第一訊息分片集合A和第二訊息分片集合B為空(不包含任何訊息分片),目標集合A中包含的訊息數目QA=0;步驟504:判斷Qsi+QA<QS/2是否成立,若成立,說明可以將目前累加的訊息分片Si添加到目標集合A中,轉到步驟505執行,否則轉到步驟507執行;步驟505:將訊息分片Si添加到第一訊息分片集合A中,並更新QA;步驟506:i=i+1,為下一次累加做好準備,轉到步驟504執行;步驟507:拆分過程結束,用集合S減去目標集合A即得到目標集合B。
上述拆分算法在不滿足判斷條件Qsi+QA<QS/2時即可結束,原因如下:由於集合S是根據訊息分片包含的訊息數目由小到大進行排序的,因此位於訊息分片Si之後的其他訊息分片包含的訊息數目必然大於等於Qsi,因此對於位於Si之後的訊息分片來說,也一定無法滿足Qsi+QA<QS/2的要求,在這種情況下,繼續對位於Si之後的訊息分片重複上述累加和判斷操作是沒有意義的,因此可以直接結束本算法。
在本發明技術方案提供的上述算法中,將待擴容計算單元的訊息分片集合拆分成了兩個集合,在其他實施方式
中,如果調度處理單元可以根據系統中訊息進度延遲的情況,或者計算單元上報的其他資料判斷出目前有資料流量猛增的趨勢,那麽也可以採用相應的算法將工作負荷超過指定條件的計算單元拆分成三個或者更多個訊息分片集合,並將拆分得到的訊息分片集合指派給相應數目的計算單元處理。這種實施方式與本發明技術方案提供的拆分方式,僅僅是拆分數量的不同,並不偏離本發明的核心,也在本發明的保護範圍之內。
本發明同時提供一種用於即時串流式計算的計算資源擴容裝置,請參看圖9。本實施例的一種用於即時串流式計算的計算資源擴容裝置,包括:工作負荷判斷單元901,用於判斷是否存在工作負荷超過指定條件的計算單元;計算任務拆分單元902,用於當所述工作負荷判斷單元的輸出為“是”時,對所述工作負荷超過指定條件的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行拆分;拆分任務指派單元903,用於將所述計算任務拆分單元輸出的拆分後計算任務指派給與拆分數目對應的計算單元處理。
可選的,所述計算任務拆分單元拆分的計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述工作負荷判斷單元包括:執行狀況獲取子單元,用於獲取計算單元處理訊息分片集合的執行狀況;所述計算單元處理訊息集合的執行狀
況包括:計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目,所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值;工作負荷判斷執行子單元,用於根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況判斷是否存在工作負荷超過指定條件的計算單元。
可選的,所述工作負荷判斷執行子單元具體用於,判斷是否存在同時滿足以下三個條件的計算單元:計算單元的訊息處理進度大於預先設定的進度閾值;計算單元每秒鐘處理的訊息數目大於或者等於計算單元每秒鐘處理訊息數目的理論值;處於工作狀態的計算單元總數小於預先指定的計算單元數目的最大值。
可選的,所述計算任務拆分單元具體用於,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個訊息分片集合;相應的,所述拆分任務指派單元具體用於,將拆分後的兩個訊息分片集合分別指派給兩個計算單元處理。
可選的,所述計算任務拆分單元具體用於,將所述工作負荷超過指定條件的計算單元負責處理的訊息分片集合拆分成兩個包含訊息數量盡可能均等的訊息分片集合。
可選的,所述拆分任務指派單元包括:停止命令發送子單元一,用於向工作負荷超過指定條件的計算單元發送停止處理訊息分片集合的命令;
任務設置子單元一,用於為負責處理拆分後的計算任務的兩個計算單元設置各自負責處理的訊息分片集合;啟動命令發送子單元一,用於在上述兩個子單元完成操作後,向所述負責處理拆分後的計算任務的兩個計算單元分別發送啟動命令。
與上述的用於即時串流式計算的計算資源擴容方法相對應,本發明還提供一種用於即時串流式計算的計算資源釋放方法。請參看圖6,該圖為本發明所提供的用於即時串流式計算的計算資源釋放方法的合併過程示意圖。
如圖6所示,在一個採用分散式訊息佇列傳遞計算任務的即時串流式計算系統中,本發明提供的實施例期望達成的技術效果是:當計算單元的任務過輕時,即分散式訊息佇列在流量低峰期時,能夠自動檢測到這一情況,並自動透過合併計算單元Worker A和Worker B的任務,以及將合併後的任務交給一個計算單元Worker A1執行的方法,減少計算單元數量,釋放計算資源。
本發明第二實施例提供上述用於即時串流式計算的計算資源釋放方法。
請參看圖7,該圖示出本發明提供的用於即時串流式計算的計算資源釋放方法的實施例的流程圖。
步驟S701,獲取計算單元處理訊息分片集合的執行狀況。
所述計算單元處理訊息分片集合的執行狀況,特指用於衡量計算單元計算任務的負荷情況的一些指標,在本實
施例中,主要包括計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目。上述兩個參數的含義在第一實施例中已經結合圖3進行了詳細的說明,在此不再重複。
步驟S702,根據上述獲取的計算單元處理訊息分片集合的執行狀況,判斷目前系統是否同時滿足以下兩個條件:A、訊息處理進度小於或者等於預先設定的進度閾值的計算單元的數目多於一個;B、處於工作狀態的計算單元總數大於預先指定的計算單元數目的最小值。
若是,則進入下一步驟;若否,則返回步驟S701,繼續監視目前的執行狀況。
所述條件A,是判斷整個即時串流式計算系統中,是否有若干個處理訊息分片集合的任務量偏輕的計算單元;只有在具有至少兩個計算單元(即多於一個計算單元)的任務量偏輕的情況下,才有必有進行合併。
所述進度閾值是判斷計算單元任務量偏輕的依據,本實施例所說的進度閾值,和第一實施例的進度閾值是同一個概念,但由於所起的作用不同,具體取值可以不同。如果計算單元的訊息處理進度P小於預先設定的進度閾值時,說明該計算單元的任務量偏輕。在整個串流式計算系統中,如果存在一個以上的計算單元存在這種問題,則有可能需要採取措施釋放資源。
所述條件B,用於判斷整個即時串流式計算系統中,
處於工作狀態的計算單元總數是否大於預先指定的計算單元數目的最小值。由於即時串流式計算系統通常對計算任務的波動有預估,為了避免所提供的計算能力大起大落,造成被動,需要為整個即時串流式計算系統設置最低的計算單元數量要求。條件B即用於判斷該即時串流式計算系統是否符合該要求,如果處於工作狀態的計算單元總數已經小於等於預先指定的計算單元數目的最小值,則不能進行計算單元的合併。
本步驟的判斷結論為否,則可以返回步驟S701,繼續監測計算單元處理訊息分片集合的執行狀況。在返回步驟S701前,也可以延遲一個時間間隔,以減小為監測執行狀況耗費的資源。
步驟S703,將需要合併的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併。
如第一實施例所述,所述計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
為實現該步驟,可以採用多種方式;以下提供一種較為具體的方案。
步驟S703-1,對需要合併的計算單元進行分組。
在本實施例中,對計算單元分組是以兩兩分組的方式進行的,即二合一。當然,在其它實施方式中,不排除將多個計算單元合併為一組,但二合一的方式是優選方式,因為它最易於實現、並且能夠使整個即時串流式計算系統
獲得最高的柔性。本發明當然不排除在某些情況下採用三合一或者四合一等其它數量的合併情況。
在分組中,需要根據所獲取的計算單元處理訊息分片集合的執行狀況資料,保證每個分組內的兩個計算單元的每秒鐘處理訊息數目相加,其結果小於計算單元的每秒鐘處理的訊息數目的理論值(理論TPS)。
關於理論TPS的概念,在上述第一實施例中已經說明。該條件是為了保證資源釋放之後,不至於造成計算任務的延遲。
步驟S703-2,針對每個分組,將本分組內的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併。
在本實施例中,即將一組的兩個計算單元負責處理的計算任務進行合併。合併後形成的訊息分片集合將在下述步驟S704中指派給一個計算單元處理。
步驟S704,指派一個計算單元負責處理合併後的計算任務。
該步驟中包括如下子步驟。
第一步,向本分組內的需要合併的兩個計算單元分別發送停止處理訊息分片集合的命令;以及,為負責處理合併後的計算任務的計算單元設置其負責處理的訊息分片集合。
原計算單元停止處理其原先負責的訊息分片集合,可以避免任務被重複執行,造成計算資源浪費。為負責處理
合併後的計算任務的計算單元設置其負責處理的訊息分片集合,即將原先屬□本分組的兩個計算單元負責處理的計算任務,即分別屬□兩個計算單元的訊息分片集合,組合為一個訊息分片集合。
第二步,向所述負責處理合併後的計算任務的計算單元發送啟動命令。
在前述第一步完成後,即可以向所述負責處理合併後的計算任務的計算單元發送啟動命令,正式開始處理合併後的訊息分片集合。
這裏需要說明的是,合併後的計算任務,既可以指派給不同於原計算單元(計算任務被合併的計算單元)的其他空閒計算單元處理,也可以指派給計算任務被合併的多個計算單元中的某一個計算單元處理。這兩種任務指派方式,都能夠實現釋放計算資源的目的,只是具體實施方式存在差別,都不偏離本發明技術方案的核心。
在上述實施例中,當調度處理單元檢測到系統中存在多個需要合併的計算單元時,最為簡單的方法,就是將所有需要合併的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務合併起來,然後指派給一個計算單元處理。但直接採用上述方法,雖然釋放的計算資源最多,但是負責處理合併後計算任務的計算單元却可能出現負載過大的現象,導致後續還需要進行額外的拆分操作。為解决此種問題,需要選擇合適的分組處理方法。以下介紹本實施例具體採用的分組處理辦法。
為了避免出現上述問題,本發明的技術方案提供了一種分組處理方式,即:先對需要合併的計算單元進行分組,然後再針對每個分組,將本分組內的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務(即:訊息分片集合)進行合併,從而儘量避免出現負責處理合併後計算任務的計算單元負載過大的情況。分組的劃分,不同的實施方式可以採用不同的策略,例如,根據計算單元負責處理的訊息數目、或者根據計算單元處理訊息分片集合的執行狀況進行劃分,分組的大小也可以不同,例如,將三個計算單元劃分為一組,或者將兩個計算單元劃分為一組等。
本發明技術方案綜合考慮上述各個方面,提供了如前所述的優選實施方式:將需要合併的計算單元採用兩兩組合的方式形成多個分組,並且,保證如下條件成立:根據所獲取的計算單元處理訊息分片集合的執行狀況資料,將每個分組內的兩個計算單元的每秒鐘處理訊息數目相加,其結果小於計算單元每秒鐘處理訊息數目的理論值。下面對本發明技術方案提供的合併算法的原理進行說明。
在上述優選實施方式下,將待合併的計算單元兩兩組合形成分組,仍然可以有很多種組合方式,如果窮舉所有可能的組合方案,再從中選擇滿足要求的方案,效率相對會比較低。為了滿足合併後計算任務不超出計算單元負載能力的要求,並且提高合併效率,本發明的技術方案先對所有待合併計算單元按照每秒鐘處理訊息數目(下文簡稱
RealTPS)從小到大的順序進行排序,得到一個排序後的計算單元集合。然後,從目前集合中選擇第一個計算單元,並在此基礎上與目前集合中的最後一個計算單元執行RealTPS的相加,判斷是否小於計算單元每秒鐘處理訊息數目的理論值,如果不小於則繼續與目前集合中的倒數第二個計算單元執行上述相加和判斷操作......依次類推,直到相加求和後滿足上述判斷條件,說明目前兩個計算單元可以合併,將這兩個計算單元從排序後的集合中移除,然後繼續用同樣的方法在排序後集合中的剩餘計算單元中繼續選擇可以合併的計算單元。
採用這種方式一方面可以保證合併後的計算任務不會超出計算單元的處理能力,避免出現負責處理合併後計算任務的計算單元負載過大的情況,另一方面由於總是在選定目前RealTPS最小的計算單元的基礎上,最先嘗試與RealTPS最大的計算單元進行合併,不成功再嘗試與RealTPS次大的計算單元進行合併.....從而有效避免出現合併後負載過小,浪費計算資源的情況,達到最大限度釋放計算資源的目的。由於在分組的過程中,兼顧了上述兩個方面,因此基於本發明提供的算法執行的合併過程通常可以一次成功,避免了現有技術中完全依賴人工的經驗進行合併導致的負載不均衡、需要反復調整設置的問題。下面結合附圖5對本合併算法的基本步驟作簡要說明。
在下面的描述中,MQ為計算單元每秒鐘處理訊息數目的理論值。
步驟801:對所有待合併計算單元按照RealTPS從小到大的順序進行排列,得到集合A,其中包含的計算單元的總數為AN,每個計算單元依次為A0、A1、......AAN-1,RQ[i]則代表集合A中第i個計算單元的RealTPS值;需要說明的是,隨著本算法的執行,會不斷地有計算單元從集合A中移除,AN的值會發生變化,剩餘計算單元的下標值也會做相應的調整。
步驟802:判斷AN>1是否成立,若成立,說明集合A中至少還有兩個計算單元,還可以繼續嘗試進行合併,否則,本算法結束。
步驟803:設置T為目前A中的第一個計算單元,將T從A中移除,AN=AN-1;步驟804:設置j=AN,目前集合A中的計算單元的數目;步驟805:設置j=j-1,如果是從步驟804順序執行本步驟,那麽j就代表目前集合A中最後一個計算單元的下標,如果是從步驟807跳轉到本步驟,那麽執行j=j-1的操作,就是為了獲取集合A中位於上一次計算的Aj之前的計算單元的下標;步驟806:判斷j>0是否成立,若成立,執行步驟807,繼續查找是否存在可以與T合併的計算單元,否則說明不存在能夠與T合併的計算單元,則執行步驟802,繼續為其他計算單元查找可以合併的計算單元;步驟807:判斷RQ[Aj]+RQ[T]<MQ是否成立,若
成立,說明為T找到了可以與之合併的計算單元,轉到步驟808執行,否則轉到步驟805執行;步驟808:將T和Aj作為一個分組進行合併,並將Aj從A中移除,AN=AN-1,轉到步驟802執行。
在上述的實施例中,提供了一種用於即時串流式計算的計算資源釋放方法,與之相對應的,本發明同時提供一種用於即時串流式計算的計算資源釋放裝置,請參看圖10。
本實施例的一種用於即時串流式計算的計算資源釋放裝置,包括:資源合併判斷單元1001,用於判斷是否需要進行計算單元的合併;計算任務合併單元1002,用於當所述合併判斷單元的輸出為“是”時,將需要合併的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併;合併任務指派單元1003,用於指派一個計算單元負責處理所述任務合併單元輸出的合併後的計算任務;所述計算任務是指,包含一個或者多個訊息分片的訊息分片集合;所述訊息分片包含一個或者多個訊息。
可選的,所述裝置包括:分組單元,用於對需要合併的計算單元進行分組;相應的,所述計算任務合併單元具體用於針對每個分組,將本分組內的計算單元負責處理的、透過分散式訊息佇列傳遞的計算任務進行合併。
可選的,所述資源合併判斷單元包括:執行狀況獲取子單元,用於獲取計算單元處理訊息分
片集合的執行狀況;所述計算單元處理訊息分片集合的執行狀況是指,計算單元的訊息處理進度、和計算單元每秒鐘處理的訊息數目;所述訊息處理進度是指,訊息被計算單元處理的時刻與該訊息產生時刻的差值;合併判斷執行子單元,用於根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況,判斷目前系統是否同時滿足以下兩個條件:訊息處理進度小於或者等於預先設定的進度閾值的計算單元的數目多於一個;處於工作狀態的計算單元總數大於預先指定的計算單元數目的最小值。
可選的,所述分組單元具體用於,將需要合併的計算單元採用兩兩組合的方式形成多個分組,並且,保證如下條件成立:根據所述執行狀況獲取子單元獲取的計算單元處理訊息分片集合的執行狀況資料,將每個分組內的兩個計算單元的每秒鐘處理訊息數目相加,其結果小於計算單元每秒鐘處理訊息數目的理論值。
可選的,所述合併任務指派單元包括:停止命令發送子單元二,用於向分組內的需要合併的兩個計算單元分別發送停止處理訊息分片集合的命令;任務設置子單元二,用於為負責處理合併後的計算任務的計算單元設置其負責處理的訊息分片集合;啟動命令發送子單元二,用於在上述兩個子單元完成
操作後,向所述負責處理合併後的計算任務的計算單元發送啟動命令。
本發明雖然以較佳實施例揭示如上,但其並不是用來限定本發明,任何本領域技術人員在不脫離本發明的精神和範圍內,都可以做出可能的變動和修改,因此本發明的保護範圍應當以本發明權利要求所界定的範圍為準。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。
內存可能包括電腦可讀取媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性內存等形式,如唯讀記憶體(ROM)或閃存(flash RAM)。內存是電腦可讀取媒體的示例。
1、電腦可讀取媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。
資訊可以是電腦可讀指令、資料結構、程序的模塊或其他資料。電腦的儲存媒體的例子包括,但不限於相變內存(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他內存技術、唯讀光碟唯讀記憶體(CD-ROM)、數字多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁磁盤儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,電腦可讀取媒體不包括非暫
存電腦可讀取媒體(transitory media),如調變的資料信號和載波。
2、本領域技術人員應明白,本發明的實施例可提供為方法、系統或電腦程序產品。因此,本發明可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有電腦可用程序代碼的電腦可用儲存媒體(包括但不限於磁盤記憶體、CD-ROM、光學記憶體等)上實施的電腦程序產品的形式。
Claims (11)
- 一種用於即時串流式計算的計算資源擴容方法,包括:判斷第一計算單元工作負荷是否超過指定條件;若判斷為該第一計算單元工作負荷超過指定條件,則進行以下步驟:自分散式訊息佇列獲取與計算任務相關的源訊息分片集合,其中,該源訊息分片集合包括先指派到該第一計算單元的訊息分片;將源訊息分片集合中的該等訊息分片按照所包含訊息數目由小到大進行排序;按排序的結果從該源訊息分片集合的該等訊息分片產生第一訊息分片集合和第二訊息分片集合;向該第一計算單元發送不要處理該源訊息分片集合的第一命令;及向第二計算單元發送使該第二計算單元中的執行緒讀取該第一訊息分片集合或該第二訊息分片集合的第二命令。
- 根據申請專利範圍第1項所述的用於即時串流式計算的計算資源擴容方法,其中,該計算任務是指,包含一個或者多個訊息分片的訊息分片集合,該訊息分片包含一個或者多個訊息。
- 根據申請專利範圍第1項所述的用於即時串流式計算的計算資源擴容方法,其中,該判斷該第一計算單元 工作負荷是否超過指定條件包括:獲取該第一計算單元處理訊息分片集合的執行狀況,其中,該第一計算單元處理訊息集合的執行狀況包括:該第一計算單元的訊息處理進度、和該第一計算單元每秒鐘處理的訊息數目,該訊息處理進度是指,訊息被該第一計算單元處理的時刻與該訊息產生時刻的差值;及根據上述獲取的該第一計算單元處理訊息集合的執行狀況判斷該第一計算單元工作負荷是否超過指定條件。
- 根據申請專利範圍第1項所述的用於即時串流式計算的計算資源擴容方法,其中,該指定條件包括:該第一計算單元的訊息處理進度大於預先設定的進度閾值;該第一計算單元每秒鐘處理的訊息數目大於或者等於該第一計算單元每秒鐘處理訊息數目的理論值;以及處於工作狀態的計算單元總數小於預先指定的該第一計算單元數目的最大值。
- 根據申請專利範圍第1項所述的用於即時串流式計算的計算資源擴容方法,其中,該第一訊息分片集合和該第二訊息分片集合包含訊息數量盡可能均等。
- 一種用於即時串流式計算的計算資源擴容裝置,其特徵在於,該裝置包括:工作負荷判斷單元,用於判斷工作負荷是否超過指定條件的第一計算單元;計算任務拆分單元,用於若判斷為該第一計算單元工 作負荷超過指定條件,則進行以下步驟:自分散式訊息佇列獲取與計算任務相關的源訊息分片集合,其中,該源訊息分片集合包括預先指派到該第一計算單元的訊息分片;將源訊息分片集合中的該等訊息分片按照所包含訊息數目由小到大進行排序;按排序的結果從該源訊息分片集合的該等訊息分片產生第一訊息分片集合和第二訊息分片集合;及拆分任務指派單元,用於:向該第一計算單元發送不要處理該源訊息分片集合的第一命令;以及向第二計算單元發送使該第二計算單元中的執行緒讀取該第一訊息分片集合或該第二訊息分片集合的第二命令。
- 根據申請專利範圍第6項所述的用於即時串流式計算的計算資源擴容裝置,其中,該計算任務拆分單元拆分的計算任務是指,包含一個或者多個訊息分片的訊息分片集合;該訊息分片包含一個或者多個訊息。
- 根據申請專利範圍第6項所述的用於即時串流式計算的計算資源擴容裝置,其中,該工作負荷判斷單元包括:執行狀況獲取子單元,用於獲取該第一計算單元處理訊息分片集合的執行狀況,其中,該第一計算單元處理訊息集合的執行狀況包括:該第一計算單元的訊息處理進 度、和該第一計算單元每秒鐘處理的訊息數目,該訊息處理進度是指,訊息被該第一計算單元處理的時刻與該訊息產生時刻的差值;及工作負荷判斷執行子單元,用於根據該執行狀況獲取子單元獲取的該第一計算單元處理訊息分片集合的執行狀況判斷該第一計算單元工作負荷是否超過指定條件。
- 根據申請專利範圍第6項所述的用於即時串流式計算的計算資源擴容裝置,其中,該第一訊息分片集合和該第二訊息分片集合包含訊息數量盡可能均等。
- 一種用於即時串流式計算的計算資源釋放方法,包括:判斷第一計算單元是否需要進行計算單元的合併;若判斷為該第一計算單元是否需要進行計算單元的合併,則進行以下步驟:自分散式訊息佇列獲取先指派到該第一計算單元的第一計算任務;藉由合併該第一計算單元產生第二計算任務,其中,該計算任務是指,包含一個或者多個訊息分片的訊息分片集合,該訊息分片包含一個或者多個訊息;向該第一計算單元發送使該第一計算單元停止處理該第一計算任務的第一命令;及向第二計算單元發送使該第二計算單元處理該第二計算任務的第二命令。
- 一種用於即時串流式計算的計算資源釋放裝置, 其特徵在於,包括:資源合併判斷單元,用於判斷第一計算單元是否需要進行計算單元的合併;計算任務合併單元,用於若判斷為該第一計算單元是否需要進行計算單元的合併,則進行以下步驟:自分散式訊息佇列獲取先指派到該第一計算單元的第一計算任務;藉由合併該第一計算單元產生第二計算任務;及合併任務指派單元,用於:向該第一計算單元發送使該第一計算單元停止處理該第一計算任務的第一命令;及向第二計算單元發送使該第二計算單元處理該第二計算任務的第二命令,其中,該計算任務是指,包含一個或者多個訊息分片的訊息分片集合,該訊息分片包含一個或者多個訊息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410140869.6A CN104978232A (zh) | 2014-04-09 | 2014-04-09 | 用于实时流式计算的计算资源扩容、释放方法及其装置 |
??201410140869.6 | 2014-04-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201539326A TW201539326A (zh) | 2015-10-16 |
TWI654563B true TWI654563B (zh) | 2019-03-21 |
Family
ID=53180783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103134242A TWI654563B (zh) | 2014-04-09 | 2014-10-01 | Computing resource expansion and release method and device thereof for real-time stream computing |
Country Status (7)
Country | Link |
---|---|
US (1) | US20150295970A1 (zh) |
EP (1) | EP3129880B1 (zh) |
JP (1) | JP2017510899A (zh) |
CN (1) | CN104978232A (zh) |
HK (1) | HK1213655A1 (zh) |
TW (1) | TWI654563B (zh) |
WO (1) | WO2015157068A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652295B2 (en) * | 2015-06-26 | 2017-05-16 | International Business Machines Corporation | Runtime fusion of operators based on processing element workload threshold and programming instruction compatibility |
CN107038067B (zh) * | 2016-09-07 | 2020-12-04 | 创新先进技术有限公司 | 分布式流处理中处理资源的管理方法和装置 |
WO2018046089A1 (en) * | 2016-09-09 | 2018-03-15 | Huawei Technologies Co., Ltd. | Device and method arranged to process information of a data stream |
CN107872397A (zh) * | 2016-09-27 | 2018-04-03 | 阿里巴巴集团控股有限公司 | 压测过程中的流量调度方法、调度平台和调度系统 |
US10389800B2 (en) | 2016-10-11 | 2019-08-20 | International Business Machines Corporation | Minimizing execution time of a compute workload based on adaptive complexity estimation |
CN108073445B (zh) | 2016-11-18 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 基于分布式流计算的背压处理方法和系统 |
CN106681820B (zh) * | 2016-12-30 | 2020-05-01 | 西北工业大学 | 基于消息组合的可扩展大数据计算方法 |
CN109214741B (zh) * | 2017-07-07 | 2021-11-12 | 北京京东尚科信息技术有限公司 | 一种监控指标的预警方法和预警系统 |
CN110019125B (zh) * | 2017-11-27 | 2021-12-14 | 北京京东尚科信息技术有限公司 | 数据库管理的方法和装置 |
CN108984770A (zh) * | 2018-07-23 | 2018-12-11 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
US11522810B2 (en) * | 2018-10-25 | 2022-12-06 | University Of Louisiana At Lafayette | System for request aggregation in cloud computing services |
CN109582449B (zh) * | 2018-10-26 | 2023-06-27 | 创新先进技术有限公司 | 风控业务系统中的风控任务分组方法、装置、计算机设备 |
CN110414361A (zh) * | 2019-07-02 | 2019-11-05 | 青岛海洋科学与技术国家实验室发展中心 | 分布式机器视觉数据采集分析方法和系统 |
CN111092931B (zh) * | 2019-11-15 | 2021-08-06 | 中国科学院计算技术研究所 | 电力系统在线超实时仿真的流式数据快速分发方法及系统 |
CN112019605B (zh) * | 2020-08-13 | 2023-05-09 | 上海哔哩哔哩科技有限公司 | 数据流的数据分发方法和系统 |
CN114338063B (zh) * | 2020-09-29 | 2023-11-10 | 中移物联网有限公司 | 消息队列系统、业务处理方法及计算机可读存储介质 |
CN112615742A (zh) * | 2020-12-18 | 2021-04-06 | 北京百度网讯科技有限公司 | 用于预警的方法、装置、设备以及存储介质 |
CN112835703B (zh) * | 2021-02-26 | 2024-04-26 | 大众问问(北京)信息科技有限公司 | 任务处理方法、装置、设备及存储介质 |
CN113595814A (zh) * | 2021-07-06 | 2021-11-02 | 深圳Tcl新技术有限公司 | 消息延迟检测方法、装置、电子设备及存储介质 |
US11880709B2 (en) | 2022-01-04 | 2024-01-23 | The Toronto-Dominion Bank | System and method for handling real-time transactional events |
CN115292146B (zh) * | 2022-05-30 | 2023-04-11 | 北京结慧科技有限公司 | 一种系统容量预估方法、系统、设备及存储介质 |
CN116719652B (zh) * | 2023-08-08 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 基于消息的多子作业动态分流方法、装置和系统 |
CN117539643B (zh) * | 2024-01-09 | 2024-03-29 | 上海晨钦信息科技服务有限公司 | 信用卡清分清算平台、批量任务处理方法及服务器 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139125A1 (en) * | 2001-06-05 | 2004-07-15 | Roger Strassburg | Snapshot copy of data volume during data access |
US7596618B2 (en) * | 2004-12-07 | 2009-09-29 | Hewlett-Packard Development Company, L.P. | Splitting a workload of a node |
US9015324B2 (en) * | 2005-03-16 | 2015-04-21 | Adaptive Computing Enterprises, Inc. | System and method of brokering cloud computing resources |
US20080077667A1 (en) * | 2006-09-26 | 2008-03-27 | Chong-Sun Hwang | Method for adaptive group scheduling using mobile agents in peer-to-peer grid computing environment |
US8886796B2 (en) * | 2008-10-24 | 2014-11-11 | Microsoft Corporation | Load balancing when replicating account data |
CN101753534B (zh) * | 2008-12-10 | 2014-06-25 | 徐文祥 | 基于集群服务器的分区自适应网络系统及其构建方法 |
US8539359B2 (en) * | 2009-02-11 | 2013-09-17 | Jeffrey A. Rapaport | Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic |
CN101715001A (zh) * | 2009-10-21 | 2010-05-26 | 南京邮电大学 | 一种控制网格任务执行的方法 |
US8505020B2 (en) * | 2010-08-29 | 2013-08-06 | Hewlett-Packard Development Company, L.P. | Computer workload migration using processor pooling |
US9250975B2 (en) * | 2011-01-26 | 2016-02-02 | International Business Machines Corporation | Elastic and scalable publish/subscribe service |
CN102915254B (zh) * | 2011-08-02 | 2018-04-06 | 中兴通讯股份有限公司 | 任务管理方法及装置 |
US20130086590A1 (en) * | 2011-09-30 | 2013-04-04 | John Mark Morris | Managing capacity of computing environments and systems that include a database |
US9608899B2 (en) * | 2011-11-21 | 2017-03-28 | Qualcomm Incorporated | Packet-based aggregation of data streams across disparate networking interfaces |
US20130339978A1 (en) * | 2012-06-13 | 2013-12-19 | Advanced Micro Devices, Inc. | Load balancing for heterogeneous systems |
US9442954B2 (en) * | 2012-11-12 | 2016-09-13 | Datawise Systems | Method and apparatus for achieving optimal resource allocation dynamically in a distributed computing environment |
GB2508598A (en) * | 2012-12-04 | 2014-06-11 | Ibm | Splitting the processing logic of a distributed application page between client and server |
CN103345514B (zh) * | 2013-07-09 | 2016-06-08 | 焦点科技股份有限公司 | 大数据环境下的流式数据处理方法 |
US9274918B2 (en) * | 2013-07-25 | 2016-03-01 | International Business Machines Corporation | Prediction of impact of workload migration |
CN103678000B (zh) * | 2013-09-11 | 2016-08-17 | 北京工业大学 | 基于可靠性和合作博弈的计算网格均衡任务调度方法 |
CN103530189B (zh) * | 2013-09-29 | 2018-01-19 | 中国科学院信息工程研究所 | 一种面向流式数据的自动伸缩及迁移的方法及装置 |
CN103617086B (zh) * | 2013-11-20 | 2017-02-08 | 东软集团股份有限公司 | 一种并行计算方法及系统 |
-
2014
- 2014-04-09 CN CN201410140869.6A patent/CN104978232A/zh active Pending
- 2014-10-01 TW TW103134242A patent/TWI654563B/zh active
-
2015
- 2015-04-01 US US14/676,573 patent/US20150295970A1/en not_active Abandoned
- 2015-04-01 EP EP15722791.9A patent/EP3129880B1/en active Active
- 2015-04-01 WO PCT/US2015/023937 patent/WO2015157068A1/en active Application Filing
- 2015-04-01 JP JP2016560657A patent/JP2017510899A/ja active Pending
-
2016
- 2016-02-03 HK HK16101251.4A patent/HK1213655A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
HK1213655A1 (zh) | 2016-07-08 |
JP2017510899A (ja) | 2017-04-13 |
EP3129880B1 (en) | 2019-02-13 |
US20150295970A1 (en) | 2015-10-15 |
TW201539326A (zh) | 2015-10-16 |
WO2015157068A1 (en) | 2015-10-15 |
CN104978232A (zh) | 2015-10-14 |
EP3129880A1 (en) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI654563B (zh) | Computing resource expansion and release method and device thereof for real-time stream computing | |
Meng et al. | Online deadline-aware task dispatching and scheduling in edge computing | |
Kliazovich et al. | CA-DAG: Modeling communication-aware applications for scheduling in cloud computing | |
CN103870340B (zh) | 流计算系统中的数据处理方法、控制节点及流计算系统 | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
CN105718317A (zh) | 一种任务调度方法及装置 | |
CN106095572A (zh) | 一种大数据处理的分布式调度系统及方法 | |
CN111459641B (zh) | 一种跨机房的任务调度和任务处理的方法及装置 | |
WO2012037760A1 (zh) | 提升告警处理效率的方法、服务器及系统 | |
WO2020233054A1 (zh) | 基于区块链的区块生成方法、装置、设备及存储介质 | |
WO2017008477A1 (zh) | 一种集群视频分析方法和系统 | |
CN112231098A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN106201443A (zh) | 一种基于Storm流式计算框架多并发写文件的方法及系统 | |
CN103795647A (zh) | 数据采集方法、数据采集器和系统 | |
Choi et al. | pHPA: A proactive autoscaling framework for microservice chain | |
JP2017037492A (ja) | 分散処理プログラム、分散処理方法および分散処理装置 | |
Alkaff et al. | Cross-layer scheduling in cloud systems | |
JP2023089891A (ja) | クラスタの容量拡張方法及び装置 | |
WO2017045640A1 (zh) | 一种数据中心内关联流的带宽调度方法及装置 | |
WO2017000094A1 (zh) | 一种数据存储方法、装置和系统 | |
WO2017167070A1 (zh) | 集群数据复制方法、优先级确定方法及装置 | |
WO2015196940A1 (zh) | 一种流处理方法、装置及系统 | |
CN105357060A (zh) | 一种获取网络设备性能数据的方法、装置和系统 | |
CN108259373B (zh) | 一种数据分配调度的方法及系统 | |
US10091068B1 (en) | System for modeling distributed systems |