TW201918878A - 任務執行的方法及裝置 - Google Patents
任務執行的方法及裝置 Download PDFInfo
- Publication number
- TW201918878A TW201918878A TW107130566A TW107130566A TW201918878A TW 201918878 A TW201918878 A TW 201918878A TW 107130566 A TW107130566 A TW 107130566A TW 107130566 A TW107130566 A TW 107130566A TW 201918878 A TW201918878 A TW 201918878A
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- node
- executed
- nodes
- execution
- Prior art date
Links
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本申請案公開了一種任務執行方法及裝置,在接收到任務請求時,可先構建初始的DAG圖,即生成DAG圖的葉子節點,之後將葉子節點作為待執行節點,執行其對應的任務並得到執行結果,在判斷所述任務請求對應的任務未執行完畢時,根據執行結果確定下游節點作為待執行節點,並繼續執行對應的任務,直至所述任務請求對應的任務執行完畢。
Description
本申請案涉及資訊技術領域,尤其涉及一種任務執行的方法及裝置。
有向非循環圖(Directed acyclic graph,DAG),是一種描述專案、系統、任務流程等的進行過程的有效方法,如圖1所示。 圖1為DAG圖的示意圖,其中可見多個節點以及連接節點的箭頭。以任務流程的DAG圖為例,圖1中的各節點對應的任務為任務流程中的不同步驟,箭頭表示在執行完上一步之後,下一步需要執行哪個步驟。其中,箭頭起始節點為上游節點,箭頭結束節點為下游節點。 在現有技術中,通過DAG圖可以將複雜的任務流程,簡化為多個子任務來執行。現有DAG圖都是任務執行前預先設置好的,也就是說任務中各步驟需要執行什麼以及如何執行是預先確定的。於是,當需要執行複雜的任務時,可通過預先確定的該任務對應的DAG圖,輔助該任務的執行(即,將複雜任務簡化為多個子任務執行)。 但是,在某些任務場景中,只有當上游節點對應的任務執行完畢之後,才可根據執行結果確定下游節點對應的任務,使得該任務的DAG圖無法預先確定。例如,假設當需要確定多個資料中數值最大的資料時,可根據執行該任務所需的資料生成該任務對應的DAG圖中的各節點。但是由於輸入資料的具體數值並不能預先確定,所以各節點對應的任務的執行結果也是不能預先確定的。這就使得無法預先確定該任務對應的DAG圖,也就無法通過DAG圖輔助執行任務的方式執行任務。 基於現有技術,本說明書提供一種新的任務執行的方法及裝置。
本說明書實施例提供一種任務執行的方法及裝置,用於解決當任務場景中,需要根據上游節點的任務執行結果生成下游節點時,難以通過DAG圖將複雜任務拆分為簡單的子任務的方式執行任務的問題。 本說明書實施例採用下述技術方案: 一種任務執行的方法,包括: 接收任務請求; 根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢; 若是,則將所述執行結果作為任務結果; 若否,則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 一種任務執行的裝置,包括: 接收模組,接收任務請求; 確定模組,根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 執行模組,將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 判斷生成模組,根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢,若是,則將所述執行結果作為任務結果,若否,則根據所述執行結果生成下游節點,並由所述執行模組將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 一種伺服器,包括一個或多個記憶體以及處理器,所述記憶體儲存程式,並且被配置成由所述一個或多個處理器執行以下步驟: 接收任務請求; 根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢; 若是,則將所述執行結果作為任務結果; 若否,則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 本說明書實施例採用的上述至少一個技術方案能夠達到以下有益效果: 通過本說明書提供的方法及裝置,在接收到任務請求時,可先構建初始的DAG圖,即生成DAG圖的葉子節點,並確定該DAG圖的節點總數。之後將葉子節點作為待執行節點,執行其對應的任務並得到執行結果,在根據節點總數以及已執行對應任務的節點數量,判斷任務請求對應的任務未執行完畢時,根據執行結果確定下游節點作為待執行節點,並繼續執行對應的任務,直至任務請求對應的任務未執行完畢。在開始執行任務時,可僅確定任務對應DAG圖的結構以及葉子節點,而隨著節點對應的任務的不斷執行,不斷根據執行結果生成下游節點,使得在任務執行完畢之前,可以一直根據DAG圖輔助將複雜任務拆分為簡單的多個子任務並執行。即,通過在任務執行過程中動態確定輔助任務執行的DAG圖,解決了在某些服務場景下,難以通過預先確定的DAG圖輔助任務執行的問題。
為使本說明書的目的、技術方案和優點更加清楚,下面將結合本說明書具體實施例及相應的附圖對本申請案技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請案一部分實施例,而不是全部的實施例。基於說明書中的實施例,本領域普通技術人員在沒有做出進步性勞動前提下所獲得的所有其他實施例,都屬於本申請案保護的範圍。 以下結合附圖,詳細說明本申請案各實施例提供的技術方案。 圖2為說明書實施例提供的一種任務執行的過程,具體可包括以下步驟: S100:接收任務請求。 在本說明書一個或多個實施例中,可由服務提供方的設備接收任務請求,並根據該任務請求執行對應的任務。其中,該服務提供的設備可以是終端或者伺服器,例如,手機、個人電腦、伺服器等等,本說明書對此不做限定。為了方便描述,後續以伺服器為該任務執行過程的執行主體為例進行說明。 另外,該任務請求中可攜帶有執行任務所需的資料,以便該伺服器後續執行任務。該伺服器可以是單獨的一台設備或者是由多台設備組成的系統,如分散式伺服器。 進一步地,在本說明書實施例中,該任務請求可為確定若干資料中的極值資料的請求。具體的,其中若干資料可為執行任務請求對應的任務所需的資料,則該極值資料可為上述所需的資料中的最大值或者最小值。 需要說明的是,在本說明書中,該極值資料可以直接是執行任務所需的資料本身(如,從若干資料中選擇對應的數值最大或者最小的資料),或者也可以通過執行任務所需的資料確定出的結果。 例如,任務請求為確定用戶A至D中借貸風險最大的用戶,則執行任務所需的資料可以包括使用者A~D的身份資訊、交易記錄等等資料,當進一步根據執行任務所需的資料,確定出的使用者A~D分別對應的借貸風險結果時,再從各借貸風險結果中確定最大值。則此時極值資料不是輸入的資料本身,而是根據輸入的資料計算得到的結果。 S102:根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖節點總數。 在本說明書中,該伺服器可根據該任務請求,先生成任務對應的DAG圖中的各葉子節點,以通過DAG圖的各葉子節點將該任務請求對應任務拆分為若干簡單的子任務,來執行該任務請求對應的任務。另外,由於該伺服器已經確定出該DAG圖的葉子節點,所以該伺服器還可根據該任務請求進一步確定該DAG圖的節點總數,以便後續通過執行任務生成下游節點時,可以確定何時該任務執行完畢(如,當生成了該DAG圖的全部節點)。 具體的,伺服器可先根據該任務請求,確定執行任務請求對應的任務需要輸入的資料,再根據確定出的資料生成所述DAG圖中的各葉子節點。或者,當該任務請求中已經攜帶了執行任務所需的資料時,伺服器也可直接根據任務請求攜帶的資料,生成DAG圖中的各葉子節點。當然,上述兩種生成葉子節點的方法可以單獨或者組合使用,本說明書不做限定。 例如,伺服器接收到任務請求為,確定用戶A在銀行a~d中哪家銀行的存款最多。而銀行a~d都有可能是使用者A存款最多的銀行,因此,伺服器可以確定執行任務需要輸入的資料為使用者A在銀行a~d中的存款。 首先,伺服器可以通過分別向銀行a~d發送查詢請求的方式,確定使用者A分別在銀行a~d中的存款,作為執行任務請求對應的任務需要輸入的資料。或者,假設該任務請求是由銀行a發送的,該任務請求中攜帶有用戶A在銀行a中的存款數值,於是伺服器可通過向銀行b~d發送查詢請求,以確定執行任務請求對應的任務需要輸入的資料。 然後,伺服器可根據使用者A在各銀行a~d的存款分別生成DAG圖的葉子節點,生成DAG圖的葉子節點。 假設,使用者A在銀行a~d中的存款如表1所示。
表1 則該伺服器可建立如圖3所示的DAG圖葉子節點。在圖3中可見,各葉子節點標識有節點標識1~4,其中,各葉子節點分別對應一個銀行的標識。並且,針對每個葉子節點,伺服器可將該用戶A在與該葉子節點對應的銀行中的存款數值作為該葉子節點對應的數值。於是,可見圖3中各葉子節點分別對應有銀行的標識以及使用者A在該銀行中的存款數值。 當然,上述例子僅為本說明書實施例提供的一種示例,本說明書並不限定該伺服器如何生成各葉子節點,以及如何確定各葉子節點對應的數值。例如,當該任務請求為,確定用戶A在各銀行中最多的單筆存款時,則生成的各葉子節點可僅對應與用戶A在各銀行中的各單筆存款的數值。又或者,當該任務請求為確定用戶瀏覽次數最多的網頁時,可以根據該使用者已經瀏覽過的各網頁分別生成葉子節點,而將該用戶瀏覽各網頁的次數作分別作為各葉子節點對應的數值,等等。 進一步地,在本說明書一個或多個實施例中,該伺服器在確定出該DAG圖的葉子節點之後,還可確定該DAG圖的節點總數,即,確定該DAG圖中應該存在多少個節點。以便後續可基於該DAG圖的節點總數,判斷任務請求對應的任務是否執行完畢。 具體的,由於DAG圖可用於將複雜的任務拆分為簡單的多個子任務,而採用何種方式確定子任務,即,如何組裝節點對應的任務可以根據需要進行設置。所以在本說明書中,該伺服器中可預先儲存有任務組裝條件。則伺服器可根據已經生成的各葉子節點的數量,以及預存的任務組裝條件,確定該DAG圖節點的總數量。 在本說明書中,當該任務請求具體為從若干資料中確定極值資料的任務時,該任務組裝條件具體可為:選擇預設數量的未執行過對應任務的節點,該預設數量可根據需要設置,例如,2個、3個等等。 繼續沿用上例,假設對於判斷數值大小的任務請求,該伺服器預先配置有任務組裝條件為:選擇未執行過任務的兩個節點,即預設數量為2。伺服器根據該任務組裝條件,可選擇兩個節點對應的數值,進行兩兩比較,將比較結果作為執行結果。因此該DAG圖的節點總數可以根據公式:確定。其中,m為節點總數,n為葉子節點數量。於是,該伺服器可確定對於4個葉子節點來說,根據該任務組裝條件可確定DAG圖節點總數為7,如圖4a所示。或者,假設該伺服器生成了7個葉子節點,則根據相同的任務組裝條件,可確定該DAG圖的節點總數為13,如圖4b所示。 圖4a以及圖4b為本說明書實施提供的確定DAG圖節點總數的示意圖,其中,葉子節點為已生成的節點,以實線表示,而DAG圖中其餘的節點尚未生成,以虛線表示,圖中的虛線箭頭表示DAG圖的走向,即節點的上下游關係。 當然,需要說明的是,上述圖4a至4b所示的虛線為示意,由於此時尚未組裝任務,所以箭頭均為虛線表示一種可能的任務組裝情況,並不表示該DAG圖後續一定會以該虛線表示的節點形式生成,該虛線僅為最終該任務對應的DAG圖在最終確定時的一種可能的形式。 S104:將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果。 在本說明書中,如在步驟S102中所述的伺服器可以根據預設的任務組裝條件,組裝並執行任務。於是,伺服器可先將各葉子節點作為待執行節點,再確定待執行接待節點對應任務。最後將滿足任務組裝條件的節點對應的任務組裝,並通過執行組裝後的任務得到執行結果。 例如,以確定用戶A在銀行a~d中哪家銀行的存款最多為例,假設DAG圖中的節點1和2對應的任務為對比資料大小,則在將節點1和2對應的任務組裝執行後,則可確定銀行b中的存款更多,則可確定執行結果為銀行b,其對應的數值為200元。而節點3和4對應的任務若被組裝並執行後,可確定執行結果為銀行c,其對應的數值為5000元。 另外,由於在現有技術中為了方便使用電腦語言根據DAG圖執行任務,通常將DAG圖轉換為鏈表形式,並依據該鏈表確定需要執行的子任務。並且,由於鏈表的資料結構中沒有資料索引,所以在每次確定下一步需要執行什麼時(如,確定後續執行哪個節點對應的任務),伺服器通常需要遍歷該鏈表,以確定需要執行哪個節點對應的任務。 但是,由於本說明書中DAG圖並不能預先確定,所以也就沒有對應的鏈表用於以輔助執行。 因此,在本說明書實施例中,伺服器在確定出DAG圖的葉子節點後,還可根據待執行節點是否滿足任務組裝條件,通過兩個輔助任務執行的佇列,將節點添加或者移出這兩個輔助任務執行的佇列,從而輔助動態的生成DAG圖中的節點,進而推動任務的執行。 具體的,伺服器可確定滿足任務組裝條件的待執行節點,添加至執行佇列,確定不滿足任務組裝條件的待執行節點,添加至準備佇列。之後,再根據任務組裝條件,組裝執行佇列中的待執行節點對應的任務並執行。並且,當該準備佇列中的節點滿足任務組裝條件後,可將滿足任務組裝條件的節點移動至該執行佇列中,以組裝任務並執行。一方面輔助了任務的執行,另一方面由於沒有採用鏈表的形式,所以避免了現有技術中伺服器需要反復遍歷鏈表導致效率較低的問題。 例如,以伺服器生成了7個葉子節點為例進行說明。繼續假設任務組裝條件為:選擇未執行過任務的兩個節點。則伺服器可從7個葉子節點中,選擇了6個葉子節點,作為滿足任務組裝條件的節點添加至執行佇列,並將剩餘的一個不滿足任務組裝條件的葉子節點添加至準備佇列,如圖5所示。 進一步地,當執行佇列中的待執行節點對應的任務被組裝並執行完畢後,伺服器還可將該已執行了對應的任務的待執行節點作為已執行節點移出所述執行佇列,以避免重複組裝節點任務。 當然,本說明書並不限定何時將滿足任務組裝條件的待執行節點移動至執行佇列,只要在得到執行結果之前移動即可。例如,該伺服器在確定準備佇列中的存在滿足任務組裝條件的待執行節點時,也可先組裝以及執行滿足任務組裝條件的待執行節點對應的任務,再將該滿足任務組裝條件的待執行節點移動至執行佇列。 S106:根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢,若是,則執行步驟S108,若否則執行步驟S110。 在本說明書提供的一種或多種實施例中,在每次組裝並執行了任務之後,伺服器可判斷任務請求對應的任務是否執行完畢,並根據判斷結果分別執行不同的後續操作。 具體的,由於步驟S102中該伺服器已經確定出了該DAG圖的節點總數,所以該伺服器可以根據已執行了對應的任務的節點數量(即,已經生成的節點數量),確定該DAG圖中已生成且已經執行了對應任務的節點數量,是否與該節點總數一致,若是,說明對於該任務請求對應的任務,伺服器根據DAG圖的輔助將其拆分出的各子任務均已執行完畢,則執行步驟S108,若否則執行步驟S110。 另外,由於通常在任務的執行過程中,伺服器難以確定已經執行了對應任務的節點數量的,所以在本說明書中,伺服器可以根據已經生成的節點數量與節點總數是否一致,以及上述步驟S104中所述的執行佇列和準備佇列是否均為空,來判斷任務請求對應的任務是否執行完畢。 具體的,由於在步驟S102中,伺服器已經確定出DAG圖的節點總數,所以當生成的節點數量等於該節點總數時,可以確定所有節點均以生成。如以圖4a為例,當生成最下方的節點時,可以確定該DAG圖全部節點均已經生成。 進一步地,為了確定已生成的節點對應的任務是否已經執行完畢,伺服器還可根據在執行佇列中以及在準備佇列中是否還有節點來確定。由於,對於待執行節點來說,當其對應的任務執行完畢時,伺服器可將該待執行節點作為已執行節點移出執行佇列,所以當執行佇列為空時,可以確定滿足任務組裝條件的節點均已執行完任務。而若此時準備佇列中還存在待執行節點,則說明尚有未執行對應任務的節點存在,所以可以確定任務請求對應的任務尚未執行完畢。而當準備佇列與執行佇列中均為空時,可確定生成的節點均已執行過任務。 因此當伺服器判斷已生成的節點數量是否等於節點總數,以及判斷準備佇列以及執行佇列是否均為空時,若判斷結果均為是,則確定任務請求對應的任務執行完畢,並執行步驟S108,若有任一判斷結果為否,則確定任務請求對應的任務未執行完畢,並執行步驟S110。 需要說明的是,繼續以圖4a為例,最後生成的節點只有一個,該節點對應的任務為“將執行結果返回”。該節點對應的任務與DAG圖中其他節點對應的任務不同,該節點對應的任務無需與其他節點組裝。因此在本說明書中,已執行了對應的任務的節點可視為,根據任務組裝條件與其他節點組裝並執行任務的節點,以及執行“將執行結果返回”的任務的節點。 S108:則將所述執行結果作為任務結果。 在本說明書實施例中,當確定任務請求對應的任務執行完畢後,伺服器便可將該執行結果作為任務結果。 並且,需要說明的是,此時該任務結果已經返回。已執行了對應的任務的節點,均為伺服器已經生成的節點,而下游節點為根據執行結果生成的,因此針對每個節點,伺服器可以確定該節點的與其他節點的上下游關係。則當確定出任務結果時,該任務對應的DAG圖也已經生成完畢,即動態的生成了DAG圖的所有節點。 S110:則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 在本說明書提供的一個或多個實施例中,在確定任務請求對應的任務未執行完畢時,該伺服器還可以根據所述執行結果生成下游節點,以便繼續將下游節點作為待執行節點,執行待執行節點對應的任務,直到任務請求對應的任務未執行完畢為止。 具體的,當確定出下游節點後,可將該下游節點作為待執行節點添加至準備佇列中,並重複步驟S104以及步驟S106。 例如,假設伺服器確定出了7個葉子節點,並且任務組裝條件仍為:選擇未執行過任務的兩個節點。進一步假設,節點3和節點4對應的任務已經執行完畢,則此時根據執行結果確定生成下游節點:節點8,並且作為節點3和節點4的下游節點,如圖6a所示。之後,伺服器可將執行佇列中的節點3和節點4移出,並將節點8添加到準備佇列中,如圖6b所示。則此時準備佇列中可存在節點7以及節點8,伺服器可確定節點7以及8滿足任務組裝條件,並將節點7以及節點8移動至執行佇列中,並組裝節點7以及節點8對應的任務,並執行,如圖6c所示。 通過圖2所示的任務執行過程,可見在無法預先確定DAG圖來輔助任務執行時,可以先生成DAG圖的葉子節點,並在任務執行過程中,通過逐步完善DAG圖繼續輔助任務的執行,從而避免了在現有技術中對於某系服務場景,無法預先生成DAG圖時,難以採用DAG圖輔助任務執行的方式執行任務的缺陷。 需要說明的是,本申請案實施例所提供方法的各步驟的執行主體均可以是同一設備,或者,該方法也由不同設備作為執行主體。比如,步驟S100的執行主體可以為設備1,步驟S102的執行主體可以為設備2。上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和並行處理也是可以的或者可能是有利的。 在本說明書中,該伺服器可以為分散式伺服器,該分散式伺服器中包含有多個管理方以及多個執行方。由各管理方共同執行該任務請求對應的任務,以及維護該任務對應的DAG圖。由執行方接收待執行節點對應的任務並執行,並將確定執行結果並返回任一管理方,如圖7所示。 圖7為本說明書實施例提供的一種執行圖2所示的任務執行方法的任務執行系統的示意圖。其中可見該系統分為管理方以及執行方,並且均存在多個,虛線框中表示各管理方共同維護的任務執行過程。 任一管理方在接收任務請求後,可執行步驟S102對應的操作以及步驟S104中的確定待執行節點對應的任務的部分。之後,便可將該任務發送至任一執行方,由接收任務的執行方執行任務,並向任一管理方返回執行結果。再由接收到執行結果的管理方執行步驟S106的判斷操作,當確定執行行步驟S110時,則重複上述過程,直至確定執行完畢時,執行步驟S106。 可見由於任務請求對應的任務由多個管理方維護,所以無論執行方將執行結果返回哪個管理方,任務流程都可繼續執行下去。並且,管理方在分配任務時,可以是非同步執行的。即,當確定出多個待執行節點對應的任務時,可以分別將確地出的任務發送給不同的執行方。於是,針對每個執行方,當該執行方確定出執行結果後,便可將該執行結果返回任一一個管理方,使該管理方繼續後續步驟的操作。 當然,對於管理方設備如何保持資料同步本說明書不做限定,具體可採用與現有技術中分散式系統中相同的方法。 基於圖1所示的資料存證方法,本說明書實施例還提供一種任務執行裝置,如圖8所示。 圖8為本說明書實施例提供的一種資料存證裝置的結構示意圖,包括: 接收模組200,接收任務請求; 確定模組202,根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 執行模組204,將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 判斷生成模組206,根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢,若是,則將所述執行結果作為任務結果,若否,則根據所述執行結果生成下游節點,並由所述執行模組204將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 所述確定模組202,根據所述任務請求,確定執行所述任務請求對應的任務需要輸入的資料,根據確定出的資料生成所述DAG圖中的各葉子節點。 所述確定模組202,根據預設的任務組裝條件以及所述葉子節點的數量,確定所述DAG圖的節點總數。 所述執行模組204,確定滿足所述任務組裝條件的待執行節點,添加至執行佇列,確定不滿足所述任務組裝條件的待執行節點,添加至準備佇列,根據所述任務組裝條件,組裝所述執行佇列中的待執行節點對應的任務並執行。 所述執行模組204,得到執行結果之後,將所述待執行節點作為已執行節點移出所述執行佇列。 所述執行模組204,將所述下游節點作為待執行節點添加至所述準備佇列,判斷所述準備佇列中是否存在滿足所述任務組裝條件的待執行節點,若是,則將滿足所述任務組裝條件的待執行節點移動至所述執行佇列,以根據所述任務組裝條件,組裝所述執行佇列中的待執行節點對應的任務並執行,若否,則等待其他待執行節點添加至所述準備佇列。 判斷生成模組206,判斷已生成的節點數量是否等於所述節點總數,判斷所述準備佇列以及所述執行佇列是否均為空,若判斷結果均是,則確定所述任務請求對應的任務執行完畢,若任一判斷結果為否,則確定所述任務請求對應的任務未執行完畢。 所述任務請求為:從若干資料中確定極值資料的請求。 所述執行模組204,確定所述待執行節點對應的任務,並將所述待執行任務發送至執行方,以使所述執行方執行所述任務,並將執行結果返回。 基於圖1所示的任務執行方法,本說明書對應提供一種伺服器,如圖9所示,包括:一個或多個處理器及記憶體,記憶體儲存有程式,並且被配置成由一個或多個處理器執行以下步驟: 接收任務請求; 根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢; 若是,則將所述執行結果作為任務結果; 若否,則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。 需要說明的是,本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於本申請案實施例提供的移動終端以及伺服器而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。 在20世紀90年代,對於一個技術的改進可以很明顯地區分是硬體上的改進(例如,對二極體、電晶體、開關等電路結構的改進)還是軟體上的改進(對於方法流程的改進)。然而,隨著技術的發展,當今的很多方法流程的改進已經可以視為硬體電路結構的直接改進。設計人員幾乎都通過將改進的方法流程程式設計到硬體電路中來得到相應的硬體電路結構。因此,不能說一個方法流程的改進就不能用硬體實體模組來實現。例如,可程式設計邏輯裝置(Programmable Logic Device, PLD)(例如現場可程式設計閘陣列(Field Programmable Gate Array,FPGA))就是這樣一種積體電路,其邏輯功能由使用者對裝置程式設計來確定。由設計人員自行程式設計來把一個數位系統“集成”在一片PLD上,而不需要請晶片製造廠商來設計和製作專用的積體電路晶片。而且,如今,取代手工地製作積體電路晶片,這種程式設計也多半改用“邏輯編譯器(logic compiler)”軟體來實現,它與程式開發撰寫時所用的軟體編譯器相類似,而要編譯之前的原始代碼也得用特定的程式設計語言來撰寫,此稱之為硬體描述語言(Hardware Description Language,HDL),而HDL也並非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬體描述語言稍作邏輯程式設計並程式設計到積體電路中,就可以很容易得到實現該邏輯方法流程的硬體電路。 控制器可以按任何適當的方式實現,例如,控制器可以採取例如微處理器或處理器以及儲存可由該(微)處理器執行的電腦可讀程式碼(例如軟體或固件)的電腦可讀媒體、邏輯閘、開關、專用積體電路(Application Specific Integrated Circuit,ASIC)、可程式設計邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限於以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,記憶體控制器還可以被實現為記憶體的控制邏輯的一部分。本領域技術人員也知道,除了以純電腦可讀程式碼方式實現控制器以外,完全可以通過將方法步驟進行邏輯程式設計來使得控制器以邏輯閘、開關、專用積體電路、可程式設計邏輯控制器和嵌入微控制器等的形式來實現相同功能。因此這種控制器可以被認為是一種硬體部件,而對其內包括的用於實現各種功能的裝置也可以視為硬體部件內的結構。或者甚至,可以將用於實現各種功能的裝置視為既可以是實現方法的軟體模組又可以是硬體部件內的結構。 上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦。具體的,電腦例如可以為個人電腦、膝上型電腦、蜂窩電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任何設備的組合。 為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請案時可以把各單元的功能在同一個或多個軟體和/或硬體中實現。 本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或電腦程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。 本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方塊圖來描述的。應理解可由電腦程式指令實現流程圖和/或方塊圖中的每一流程和/或方塊、以及流程圖和/或方塊圖中的流程和/或方塊的結合。可提供這些電腦程式指令到通用電腦、專用電腦、嵌入式處理機或其他可程式設計資料處理設備的處理器以產生一個機器,使得通過電腦或其他可程式設計資料處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的裝置。 這些電腦程式指令也可儲存在能引導電腦或其他可程式設計資料處理設備以特定方式工作的電腦可讀記憶體中,使得儲存在該電腦可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能。 這些電腦程式指令也可裝載到電腦或其他可程式設計資料處理設備上,使得在電腦或其他可程式設計設備上執行一系列操作步驟以產生電腦實現的處理,從而在電腦或其他可程式設計設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方塊圖一個方塊或多個方塊中指定的功能的步驟。 在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和記憶體。 記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是電腦可讀媒體的示例。 電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式設計唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁片儲存或其他磁性存放裝置或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。 還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。 本領域技術人員應明白,本申請案的實施例可提供為方法、系統或電腦程式產品。因此,本申請案可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本申請案可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。 本申請案可以在由電腦執行的電腦可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的常式、程式、物件、組件、資料結構等等。也可以在分散式運算環境中實踐本申請案,在這些分散式運算環境中,由通過通信網路而被連接的遠端處理設備來執行任務。在分散式運算環境中,程式模組可以位於包括存放裝置在內的本地和遠端電腦儲存媒體中。 本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。 以上所述僅為本申請案的實施例而已,並不用於限制本申請案。對於本領域技術人員來說,本申請案可以有各種更改和變化。凡在本申請案的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請案的申請專利範圍之內。
200‧‧‧接收模組
202‧‧‧確定模組
204‧‧‧執行模組
206‧‧‧判斷生成模組
此處所說明的附圖用來提供對本申請案的進一步理解,構成本申請案的一部分,本申請案的示意性實施例及其說明用於解釋本申請案,並不構成對本申請案的不當限定。在附圖中: 圖1為現有技術中DAG圖的示意圖; 圖2為本說明書實施例提供的一種任務執行的過程; 圖3為本說明書實施例提供的DAG圖葉子節點示意圖; 圖4a以及圖4b為本說明書實施提供的確定DAG圖節點總數的示意圖; 圖5為本說明書實施例提供的執行佇列以及準備佇列的示意圖; 圖6a至圖6c為本說明書實施例提供的任務執行過程中執行佇列以及準備佇列的示意圖; 圖7為本說明書實施例提供的一種對應任務執行方法的任務執行系統的示意圖; 圖8為本說明書實施例提供的一種任務執行裝置的結構示意圖; 圖9為本說明書實施例提供的一種伺服器的結構示意圖。
Claims (11)
- 一種任務執行的方法,包括: 接收任務請求; 根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢; 若是,則將所述執行結果作為任務結果; 若否,則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。
- 如申請專利範圍第1項所述的方法,其中所述根據所述任務請求生成有向非循環圖DAG的葉子節點包括: 根據所述任務請求,確定執行所述任務請求對應的任務需要輸入的資料; 根據確定出的資料生成所述DAG圖中的各葉子節點。
- 如申請專利範圍第1項所述的方法,其中所述確定所述DAG圖的節點總數包括: 根據預設的任務組裝條件以及所述葉子節點的數量,確定所述DAG圖的節點總數。
- 如申請專利範圍第3項所述的方法,其中所述將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行包括: 確定滿足所述任務組裝條件的待執行節點,添加至執行佇列,確定不滿足所述任務組裝條件的待執行節點,添加至準備佇列; 根據所述任務組裝條件,組裝所述執行佇列中的待執行節點對應的任務並執行。
- 如申請專利範圍第4項所述的方法,其中所述確定所述待執行節點對應的任務並執行,得到執行結果之後,所述方法還包括: 將所述待執行節點作為已執行節點移出所述執行佇列。
- 如申請專利範圍第4項所述的方法,其中所述將所述下游節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,包括: 將所述下游節點作為待執行節點添加至所述準備佇列; 判斷所述準備佇列中是否存在滿足所述任務組裝條件的待執行節點; 若是,則將滿足所述任務組裝條件的待執行節點移動至所述執行佇列,以根據所述任務組裝條件,組裝所述執行佇列中的待執行節點對應的任務並執行; 若否,則等待其他待執行節點添加至所述準備佇列。
- 如申請專利範圍第4項所述的方法,其中所述根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢,包括: 判斷已生成的節點數量是否等於所述節點總數,判斷所述準備佇列以及所述執行佇列是否均為空; 若判斷結果均是,則確定所述任務請求對應的任務執行完畢; 若任一判斷結果為否,則確定所述任務請求對應的任務未執行完畢。
- 如申請專利範圍第1項所述的方法,其中所述任務請求為:從若干資料中確定極值資料的請求。
- 如申請專利範圍第1項所述的方法,其中確定所述待執行節點對應的任務並執行,得到執行結果,包括: 確定所述待執行節點對應的任務,並將所述待執行任務發送至執行方,以使所述執行方執行所述任務,並將執行結果返回。
- 一種任務執行的裝置,包括: 接收模組,接收任務請求; 確定模組,根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 執行模組,將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 判斷生成模組,根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢,若是,則將所述執行結果作為任務結果,若否,則根據所述執行結果生成下游節點,並由所述執行模組將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。
- 一種伺服器,包括:一個或多個記憶體以及處理器,所述記憶體儲存程式,並且被配置成由所述一個或多個處理器執行以下步驟: 接收任務請求; 根據所述任務請求生成有向非循環圖DAG的葉子節點,以及確定所述DAG圖的節點總數; 將所述葉子節點作為待執行節點,以及確定所述待執行節點對應的任務並執行,得到執行結果; 根據已執行了對應的任務的節點數量以及所述節點總數,判斷所述任務請求對應的任務是否執行完畢; 若是,則將所述執行結果作為任務結果; 若否,則根據所述執行結果生成下游節點,並將所述下游節點作為待執行節點,繼續執行待執行節點對應的任務,直至確定所述任務請求對應的任務執行完畢為止。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711049658.1 | 2017-10-31 | ||
??201711049658.1 | 2017-10-31 | ||
CN201711049658.1A CN109725989B (zh) | 2017-10-31 | 2017-10-31 | 一种任务执行的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201918878A true TW201918878A (zh) | 2019-05-16 |
TWI679581B TWI679581B (zh) | 2019-12-11 |
Family
ID=66294248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107130566A TWI679581B (zh) | 2017-10-31 | 2018-08-31 | 任務執行的方法及裝置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN109725989B (zh) |
TW (1) | TWI679581B (zh) |
WO (1) | WO2019085601A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214289A (zh) * | 2019-07-11 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 一种任务调度方法、装置及服务器、存储介质 |
CN112799797B (zh) * | 2019-11-14 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种任务管理的方法和装置 |
CN111581449B (zh) * | 2020-05-18 | 2023-04-28 | 网易(杭州)网络有限公司 | 一种任务节点的执行方法、装置、计算机设备和介质 |
CN112131297A (zh) * | 2020-09-28 | 2020-12-25 | 广州亚信技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112346842B (zh) * | 2020-11-19 | 2024-03-26 | 广州嘉为科技有限公司 | 一种基于有向无环图的工作流任务调度方法 |
CN114035968B (zh) * | 2022-01-10 | 2022-03-18 | 北京一流科技有限公司 | 用于多流并行的冲突处理系统及其方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI313437B (en) * | 2006-09-20 | 2009-08-11 | Nat Chiao Tung Universit | Matching method for interdependent scheduling |
US8301755B2 (en) * | 2007-12-14 | 2012-10-30 | Bmc Software, Inc. | Impact propagation in a directed acyclic graph |
TW201211509A (en) * | 2010-09-15 | 2012-03-16 | Tomtom Int Bv | Navigation devices |
US9170843B2 (en) * | 2011-09-24 | 2015-10-27 | Elwha Llc | Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement |
CN102945295B (zh) * | 2012-10-15 | 2015-09-02 | 浪潮(北京)电子信息产业有限公司 | 一种格子玻尔兹曼方法的并行加速方法及系统 |
CN103336723B (zh) * | 2013-07-21 | 2017-03-29 | 哈尔滨理工大学 | 基于关键路径的适应处理器内核紧缺调度方法 |
CN107077492B (zh) * | 2014-09-10 | 2020-09-08 | 亚马逊科技公司 | 可扩展的基于日志的事务管理 |
TWI537817B (zh) * | 2014-09-18 | 2016-06-11 | 國立清華大學 | 找小値方法以及找小値器 |
CN104536814B (zh) * | 2015-01-16 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
US10235337B2 (en) * | 2015-06-24 | 2019-03-19 | EMC IP Holding Company LLC | Distributed work flow using database replication |
CN106339252B (zh) * | 2015-07-08 | 2020-06-23 | 阿里巴巴集团控股有限公司 | 分布式dag系统的自适应优化方法和装置 |
CN107239468B (zh) * | 2016-03-29 | 2020-11-10 | 创新先进技术有限公司 | 任务节点管理方法及装置 |
CN106155791B (zh) * | 2016-06-30 | 2019-05-07 | 电子科技大学 | 一种分布式环境下的工作流任务调度方法 |
-
2017
- 2017-10-31 CN CN201711049658.1A patent/CN109725989B/zh active Active
-
2018
- 2018-08-21 WO PCT/CN2018/101567 patent/WO2019085601A1/zh active Application Filing
- 2018-08-31 TW TW107130566A patent/TWI679581B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI679581B (zh) | 2019-12-11 |
CN109725989A (zh) | 2019-05-07 |
WO2019085601A1 (zh) | 2019-05-09 |
CN109725989B (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI679581B (zh) | 任務執行的方法及裝置 | |
TWI679547B (zh) | 區塊鏈業務受理及業務共識方法及裝置 | |
TWI696083B (zh) | 一種基於區塊鏈的共識方法及裝置 | |
TWI752118B (zh) | 一種區塊鏈共識方法及裝置 | |
TWI697227B (zh) | 資料處理的方法及裝置 | |
TWI694339B (zh) | 一種區塊鏈共識方法、設備及系統 | |
TWI718375B (zh) | 基於區塊鏈的資料處理方法及設備 | |
CA3048739C (en) | Blockchain-based data processing method and equipment | |
TW201944314A (zh) | 配置支付流程、執行支付流程的方法、裝置及設備 | |
TWI694700B (zh) | 資料處理方法和裝置、用戶端 | |
WO2023231345A1 (zh) | 对多个交易进行分组的方法和区块链节点 | |
TWI697223B (zh) | 資料處理方法 | |
WO2023231336A1 (zh) | 执行交易的方法和区块链节点 | |
WO2023160085A1 (zh) | 执行交易的方法、区块链、主节点和从节点 | |
WO2023160083A1 (zh) | 执行交易的方法、区块链、主节点和从节点 | |
WO2020168901A1 (zh) | 一种数据计算方法及引擎 | |
CN111459573B (zh) | 一种智能合约执行环境的启动方法以及装置 | |
WO2024001025A1 (zh) | 一种预执行缓存数据清理方法和区块链节点 | |
WO2023231342A1 (zh) | 基于变量状态自动执行合约的方法和装置 | |
WO2024001032A1 (zh) | 在区块链系统中执行交易的方法、区块链系统和节点 | |
WO2023207079A1 (zh) | 一种区块链中的区块状态同步方法及第一节点 | |
CN116910082A (zh) | Sql语句处理方法、装置、服务器及介质 | |
CN116881361A (zh) | 交易的执行方法、节点和区块链系统 |