亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種任務處理方法、裝置及系統(tǒng)與流程

文檔序號:12664859閱讀:196來源:國知局
一種任務處理方法、裝置及系統(tǒng)與流程

本申請涉及數(shù)據(jù)處理技術領域,具體涉及一種任務處理方法、裝置及電子設備。本申請同時涉及一種任務分割方法、裝置及電子設備,以及一種任務處理系統(tǒng)。



背景技術:

倉庫管理系統(tǒng)是通過入庫業(yè)務、出庫業(yè)務、倉庫調撥、庫存調撥和虛倉管理等功能,綜合批次管理、物料對應、庫存盤點、質檢管理、虛倉管理和即時庫存管理等功能綜合運用的管理系統(tǒng),有效控制并跟蹤倉庫業(yè)務的物流和成本管理全過程,實現(xiàn)完善的企業(yè)倉儲信息管理。該系統(tǒng)可以獨立執(zhí)行庫存操作,與其他系統(tǒng)的單據(jù)和憑證等結合使用,可提供更為完整全面的企業(yè)業(yè)務流程和財務管理信息。

倉庫管理系統(tǒng)在接收到上游ERP(Enterprise Resource Planning,企業(yè)資源計劃)系統(tǒng)下發(fā)的訂單以后,首先將訂單保存到數(shù)據(jù)庫中,然后需要經(jīng)過的處理環(huán)節(jié)包括:預處理、波次匯總、單據(jù)打印、揀選及出庫等環(huán)節(jié)。其中,預處理環(huán)節(jié)是指,通過異步方式定時掃描處于初始化狀態(tài)的訂單,批量對處于初始化狀態(tài)的訂單執(zhí)行預處理任務。訂單預處理任務主要包括以下操作:校驗訂單基礎數(shù)據(jù)、訂單揀選類型分類、訂單占用庫存及訂單拆分包裹等大量業(yè)務操作。對于一個大型的倉庫管理系統(tǒng),每天處理的訂單數(shù)目可能在幾十萬到幾百萬、甚至千萬級別。訂單預處理任務作為倉庫管理系統(tǒng)訂單履行流程中的第一環(huán),如果處理速度跟不上倉庫后續(xù)流程的作業(yè)速度,就會阻塞現(xiàn)場作業(yè)。

普通的倉庫管理系統(tǒng)采用C/S(客戶端/服務器)架構,一般都是單倉庫部署,每個倉庫的數(shù)據(jù)和代碼都是分開的,一般一臺機器只用處理一個倉庫的預處理任務。新型的倉庫管理系統(tǒng)采用B/S架構,通過分布式技術實現(xiàn)了多個倉庫使用一份代碼,數(shù)據(jù)統(tǒng)一存儲,這樣就會面臨多個倉庫大量訂單的預處理任務落到一臺機器上的可能。在系統(tǒng)訂單量比較大的時候,如果多個倉庫的大量訂單預處理任務同時落到一臺機器上,會導致這臺機器的內存持續(xù)飆高、響應時間變慢,最后可能宕機。更進一步地,會對后續(xù)環(huán)節(jié)產生連鎖反應,導致服 務器集群響應時間升高,影響倉庫現(xiàn)場作業(yè)效率。

目前,當單臺機器上的待預處理訂單數(shù)量超出該機器的處理能力時,常用的解決方法是:首先對待預處理訂單進行排序,然后從排序后的訂單中截取前若干條訂單開多線程進行處理,或者優(yōu)化業(yè)務。然而,單臺機器的處理能力有限,上述處理方式并不能高效率的完成大量訂單的預處理任務,而且也不容易通過擴展機器的方式來解決這樣的問題。

綜上所述,現(xiàn)有技術存在無法避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題。



技術實現(xiàn)要素:

本申請?zhí)峁┮环N任務處理方法、裝置及電子設備,以解決現(xiàn)有技術存在無法避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題。本申請另外提供一種任務分割方法、裝置及電子設備,以及一種任務處理系統(tǒng)。

本申請?zhí)峁┮环N任務處理方法,用于分布式任務調度系統(tǒng),在啟動待執(zhí)行任務之后,包括:

將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;

接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

可選的,所述待執(zhí)行任務包括定時任務,所述方法還包括:

當系統(tǒng)時間達到所述定時任務的執(zhí)行時間時,觸發(fā)所述定時任務。

可選的,在啟動待執(zhí)行任務之前,還包括:

將所述待執(zhí)行任務集中到任務調度服務器集群。

可選的,所述分布式任務調度系統(tǒng)是特定應用系統(tǒng)的組成部分;所述將所述待執(zhí)行任務集中到任務調度服務器集群,采用如下方式:

向所述特定應用系統(tǒng)增加所述待執(zhí)行任務時,通過分布式任務調度框架提供的任務映射方法,將所述特定應用系統(tǒng)中的所述待執(zhí)行任務映射到所述任務調度服務器集群。

可選的,在所述獲取所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務 進行分割后生成的至少一個待執(zhí)行子任務之后,還包括:

存儲所述至少一個待執(zhí)行子任務。

可選的,所述存儲所述至少一個待執(zhí)行子任務,采用如下方式:

將所述至少一個待執(zhí)行子任務存儲到預設的子任務存儲隊列中。

可選的,還包括:

根據(jù)所述任務執(zhí)行服務器集群中第二任務執(zhí)行服務器發(fā)送的獲取子任務請求,向所述任務執(zhí)行服務器第二任務執(zhí)行服務器發(fā)送所述待執(zhí)行子任務,由所述第二任務執(zhí)行服務器執(zhí)行所述待執(zhí)行子任務。

可選的,所述任務執(zhí)行服務器集群中的各個任務執(zhí)行服務器通過定時輪詢方式發(fā)送所述獲取子任務請求。

可選的,所述待執(zhí)行任務包括訂單預處理任務;所述訂單預處理任務包括的待處理對象為訂單。

可選的,所述訂單預處理任務與特定倉庫相對應;所述訂單是指所述特定倉庫中的訂單。

相應的,本申請還提供一種任務處理裝置,用于分布式任務調度系統(tǒng),包括:

分配單元,用于將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;

接收單元,用于接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

可選的,所述待執(zhí)行任務包括定時任務,所述裝置還包括:

觸發(fā)單元,用于當系統(tǒng)時間達到所述定時任務的執(zhí)行時間時,觸發(fā)所述定時任務。

可選的,還包括:

生成任務單元,用于將所述待執(zhí)行任務集中到任務調度服務器集群。

可選的,還包括:

存儲單元,用于存儲所述至少一個待執(zhí)行子任務。

可選的,還包括:

發(fā)送單元,用于根據(jù)所述任務執(zhí)行服務器集群中第二任務執(zhí)行服務器發(fā)送的獲取子任務請求,向所述任務執(zhí)行服務器第二任務執(zhí)行服務器發(fā)送所述待執(zhí)行子任務,由所述第二任務執(zhí)行服務器執(zhí)行所述待執(zhí)行子任務。

相應的,本申請還提供一種電子設備,包括:

顯示器;

處理器;以及

存儲器,所述存儲器被配置成存儲任務處理裝置,所述任務處理裝置被所述處理器執(zhí)行時,包括如下步驟:將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

此外,本申請還提供一種任務分割方法,用于分布式任務調度系統(tǒng),包括:

接收任務調度服務器分配的待執(zhí)行任務;

根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務;

將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

可選的,所述預設的分割規(guī)則包括:所述待執(zhí)行子任務包括的待處理對象數(shù)量小于等于預設的對象量閾值。

可選的,在所述將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務之前,還包括:

根據(jù)預設的篩選條件,從所述待執(zhí)行任務包括的多個待處理對象中選取符合所述篩選條件的待處理對象。

可選的,在所述將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器之前,還包括:

對所述待執(zhí)行子任務包括的待處理對象做序列化處理,生成序列化的待處理對象;

相應的,所述將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器,采用如下方式:

將包括所述序列化的待處理對象的所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

可選的,還包括:

獲取所述待執(zhí)行子任務;

執(zhí)行所述待執(zhí)行子任務。

可選的,所述獲取所述待執(zhí)行子任務,采用如下方式:

通過定時輪詢方式,從所述任務調度服務器所屬的任務調度服務器集群中請求獲取所述待執(zhí)行子任務。

可選的,不同的所述待執(zhí)行子任務包括同一待處理對象;所述執(zhí)行所述待執(zhí)行子任務,包括:

對所述待處理對象進行處理時,獲取所述待處理對象的同步鎖。

可選的,所述待執(zhí)行任務包括訂單預處理任務;所述訂單預處理任務包括的待處理對象包括訂單。

可選的,所述訂單預處理任務與特定倉庫相對應;所述訂單是指所述特定倉庫中的訂單。

可選的,在將所述訂單預處理任務分割為至少一個子任務之前,還包括:

根據(jù)預設的篩選條件,從所述訂單預處理任務包括的多個訂單中選取符合所述篩選條件的訂單;

所述預設的篩選條件包括:所述訂單的狀態(tài)為初始化狀態(tài);所述從所述訂單預處理任務包括的多個訂單中選取符合所述篩選條件的訂單,包括:

根據(jù)預先存儲的任務屬性表,獲取所述訂單預處理任務對應的所述特定倉庫;

根據(jù)預先存儲的所述特定倉庫的訂單表,獲取所述特定倉庫包括的訂單集合;

根據(jù)所述訂單的狀態(tài)屬性,從所述訂單集合中選取處于所述初始化狀態(tài)的訂單,作為符合所述篩選條件的訂單。

相應的,本申請還提供一種任務分割裝置,用于分布式任務調度系統(tǒng),包括:

接收單元,用于接收任務調度服務器分配的待執(zhí)行任務;

分割單元,用于根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務;

回送單元,用于將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

可選的,還包括:

篩選單元,用于根據(jù)預設的篩選條件,從所述待執(zhí)行任務包括的多個待處理對象中選取符合所述篩選條件的待處理對象。

可選的,還包括:

序列化單元,用于對所述待執(zhí)行子任務包括的待處理對象做序列化處理,生成序列化的待處理對象;

相應的,所述將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器,采用如下方式:

將包括所述序列化的待處理對象的所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

可選的,還包括:

獲取單元,用于獲取所述待執(zhí)行子任務;

執(zhí)行單元,用于執(zhí)行所述待執(zhí)行子任務。

可選的,不同的所述待執(zhí)行子任務包括同一待處理對象;所述執(zhí)行單元還包括:

獲取子單元,用于對所述待處理對象進行處理時,獲取所述待處理對象的同步鎖。

相應的,本申請還提供一種電子設備,包括:

顯示器;

處理器;以及

存儲器,所述存儲器被配置成存儲任務分割裝置,所述任務分割裝置被所述處理器執(zhí)行時,包括如下步驟:接收任務調度服務器分配的待執(zhí)行任務;根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務;將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

此外,本申請還提供一種任務處理系統(tǒng),包括:任務調度服務器集群和任務執(zhí)行服務器集群;其中,所述任務調度服務器包括根據(jù)上述任一項所述的任 務處理裝置;所述任務執(zhí)行服務器包括根據(jù)上述任一項所述的任務分割裝置。

與現(xiàn)有技術相比,本申請具有以下優(yōu)點:

本申請?zhí)峁┑娜蝿仗幚矸椒ā⒀b置及系統(tǒng),用于分布式任務調度系統(tǒng),當分布式任務調度系統(tǒng)啟動待執(zhí)行任務之后,通過將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務,即:在處理待執(zhí)行任務時首先將其分割為多個子任務,然后由任務執(zhí)行服務器集群直接處理各個子任務,因而能夠避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題,從而達到提高任務執(zhí)行效率和成功率的效果。

附圖說明

圖1是本申請的任務處理方法實施例的流程圖;

圖2是本申請的任務處理裝置實施例的示意圖;

圖3是本申請的電子設備實施例的示意圖;

圖4是本申請的任務分割方法實施例的流程圖;

圖5是本申請的任務分割方法實施例的具體流程圖;

圖6是本申請的任務分割裝置實施例的示意圖;

圖7是本申請的任務分割裝置實施例的具體示意圖;

圖8是本申請的又一電子設備實施例的示意圖;

圖9是本申請的任務處理系統(tǒng)實施例的示意圖;

圖10是本申請的任務處理系統(tǒng)實施例的具體示意圖。

具體實施方式

在下面的描述中闡述了很多具體細節(jié)以便于充分理解本申請。但是本申請能夠以很多不同于在此描述的其它方式來實施,本領域技術人員可以在不違背本申請內涵的情況下做類似推廣,因此本申請不受下面公開的具體實施的限制。

在本申請中,提供了一種任務處理方法、裝置及電子設備,一種任務分割方法、裝置及電子設備,以及一種任務處理系統(tǒng)。在下面的實施例中逐一進行詳細說明。

本申請實施例提供的任務處理方法,其核心的基本思想是:在處理待執(zhí)行任務時首先將其分割為多個子任務,然后由任務執(zhí)行服務器集群直接處理各個子任務。由于采用了任務拆分策略,因而能夠避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題,從而達到提高任務執(zhí)行效率的效果。

請參考圖1,其為本申請的任務處理方法實施例的流程圖。所述任務處理方法用于分布式任務調度系統(tǒng),當分布式任務調度系統(tǒng)啟動待執(zhí)行任務之后,包括如下步驟:

步驟S101:將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理。

本申請實施例所述的待執(zhí)行任務是指,對多個待處理對象進行批處理的特定任務,待執(zhí)行任務對應多個待處理對象。在本實施例中,待執(zhí)行任務為定時任務,即:在特定時間執(zhí)行并能在可預期時間內完成的程序或腳本。當系統(tǒng)時間達到定時任務的執(zhí)行時間時,觸發(fā)該定時任務,然后執(zhí)行本申請實施例提供的任務處理方法。定時任務通常包括如下信息:任務名稱、執(zhí)行頻率、開始執(zhí)行時間、結束執(zhí)行時間等。例如,定時任務為對特定倉庫的訂單進行訂單預處理操作,該任務包括的待處理對象為特定倉庫的訂單;或者,定時任務為日志下載任務,待處理對象為日志文件等。

需要說明的是,本申請實施例提供的任務處理方法,待執(zhí)行任務不僅僅局限于定時任務,還可以是實時任務。實時任務同樣存在一個任務包括的待處理對象可能過多的問題,為避免實時任務包括的待處理對象過多,也可以采用本申請實施例提供的任務處理方法,將實時任務拆分為多個子任務。上述不同的任務類型,都只是具體實施方式的變更,都不偏離本申請的核心,因此都在本申請的保護范圍之內。

本申請實施例提供的任務處理方法用于分布式任務調度系統(tǒng)。分布式任務調度系統(tǒng)涉及三種角色:任務提交方、任務調度方及任務執(zhí)行方。其中,任務提交方主要負責提交任務和接收任務執(zhí)行反饋結果;任務調度方負責接收和分配任務;任務執(zhí)行方負責執(zhí)行任務,并在執(zhí)行完后反饋給任務調度方。分布式任務調度系統(tǒng)中的各種角色均可部署多個節(jié)點,部署在任務調度方的各個節(jié)點組成任務調度服務器集群,部署在任務執(zhí)行方的各個節(jié)點組成任務執(zhí)行服務器集群。一個集群內的各個節(jié)點都是無狀態(tài)的,通過分布式任務調度系統(tǒng)能夠將 各個任務分配到不同的任務執(zhí)行服務器進行處理,實現(xiàn)自動負載均衡,從而達到提高負載量及容錯能力的效果。

在本實施例中,采用Zookeeper分布式應用程序協(xié)調服務進行各個集群的master節(jié)點的選取,如果master節(jié)點發(fā)生宕機現(xiàn)象,Zookeeper會自動選舉出新的master節(jié)點。任務調度服務器集群的調度器(即:master節(jié)點)實時收集任務及各個任務執(zhí)行服務器的信息,獲取到的任務(事件)會在任務隊列中排隊,等待與任務調度服務器集群之間具有心跳連接關系的任務執(zhí)行服務器處理。任務執(zhí)行服務器集群負責將分配獲取的任務分割為多個子任務,然后再執(zhí)行各個子任務。

本申請實施例提供的任務處理方法,任務調度服務器和任務執(zhí)行服務器之間存在四種通信連接:1)待執(zhí)行任務的連接,任務調度服務器通過此連接把任務發(fā)送到任務執(zhí)行服務器進行任務分割;2)待執(zhí)行子任務的連接,任務調度服務器通過此連接把子任務發(fā)送到任務執(zhí)行服務器進行子任務的執(zhí)行處理;3)心跳連接,任務調度服務器和任務執(zhí)行服務器之間保持心跳連接,根據(jù)心跳連接的情況判斷對方的健康狀況;4)消息上報,任務執(zhí)行服務器把相關任務執(zhí)行情況匯給任務調度服務器,任務調度服務器接收任務執(zhí)行服務器上報的任務執(zhí)行情況,并作處理,必要時生成通告。

本申請實施例提供的任務處理方法的執(zhí)行者為分布式任務調度系統(tǒng)的任務調度方。各個定時任務被部署在任務調度服務器集群中,當系統(tǒng)時間達到定時任務的觸發(fā)執(zhí)行時間時,定時任務被觸發(fā)執(zhí)行。通過任務調度方,將定時任務按特定規(guī)則(負載均衡,地域原則等)分配到某一臺任務執(zhí)行服務器執(zhí)行。

在實際應用中,任務的創(chuàng)建者可能并非直接將任務提交給任務調度方,而是在應用系統(tǒng)中創(chuàng)建任務。為了使得任務調度方能夠獲取任務,在啟動待執(zhí)行任務之前,還包括:將所述待執(zhí)行任務集中到任務調度服務器集群,以供任務調度方分配任務用。

在本實施例中,分布式任務調度系統(tǒng)是特定應用系統(tǒng)的組成部分,負責特定應用系統(tǒng)中全部任務的分配與調度工作。將所述待執(zhí)行任務集中到任務調度服務器集群,采用如下方式:向所述特定應用系統(tǒng)增加所述待執(zhí)行任務時,通過分布式任務調度框架提供的任務映射方法,將所述特定應用系統(tǒng)中的所述待執(zhí)行任務映射到所述任務調度服務器集群。

分布式任務調度框架能夠提供客戶端SDK軟件包,該軟件包提供對定時任務進行增加、修改、刪除及查詢的功能。開發(fā)人員通過對該軟件包提供的方法進行封裝,并構建任務管理頁面,客戶端通過任務管理頁面能夠對定時任務進行管理。在本實施例中,任務的創(chuàng)建者通過特定應用系統(tǒng)提供的任務管理頁面構建定時任務,將任務添加到特定應用系統(tǒng)中。從分布式任務調度系統(tǒng)的角度,運行特定應用系統(tǒng)的應用服務器也稱為任務執(zhí)行服務器。

在本實施例中,開發(fā)人員在應用服務器本地預先建立一張定時任務表,定時任務的基本信息包括:任務類型、開始執(zhí)行時間、結束執(zhí)行時間、執(zhí)行頻率、有效期時間段、創(chuàng)建人等屬性??蛻舳送ㄟ^任務管理頁面向位于應用服務器本地的定時任務表添加定時任務,例如,有關商品訂單方面的定時任務可以為:JOB[任務類型=訂單預處理后臺任務,倉庫ID=上海倉、開始執(zhí)行時間=6:00,結束執(zhí)行時間=21:00,執(zhí)行頻率=20分鐘,有效時間段=(2015-10-10TO2025-10-10),創(chuàng)建人=小紅]。然后,通過分布式任務調度框架提供的SDK軟件包的接口,將應用服務器本地的任務映射為分布式任務調度平臺端(任務調度方)的定時任務。在本實施例中,映射到分布式任務調度平臺端的任務屬性包括:應用程序執(zhí)行任務的接口名、觸發(fā)器執(zhí)行時間和頻率等。

要實施本申請?zhí)峁┑娜蝿仗幚矸椒?,在啟動待?zhí)行任務之后,任務調度方首先需要為該任務分配一臺任務執(zhí)行服務器,并指示該任務執(zhí)行服務器對該任務進行任務分割處理。任務調用方會優(yōu)先分配給比較空閑的任務執(zhí)行服務器,以達到負載均衡。任務執(zhí)行服務器接收到待執(zhí)行任務后,會根據(jù)指示將該任務拆分為多個子任務,并將這些子任務返回給任務調度服務器。

步驟S103:接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

本申請實施例所述的待執(zhí)行子任務是指,根據(jù)預設的分割規(guī)則對待執(zhí)行任務進行拆分后形成的子任務。任務執(zhí)行服務器生成待執(zhí)行子任務后,將待執(zhí)行子任務回流到任務調度服務器。當任務調度服務器接收到任務執(zhí)行服務器返回的分割后的至少一個待執(zhí)行子任務之后,將所述至少一個待執(zhí)行子任務存儲在任務調度方的待執(zhí)行子任務隊列中,以供任務執(zhí)行服務器集群執(zhí)行處理。

在實際應用中,待執(zhí)行任務一般都是業(yè)務信息很少的定時任務,可以用數(shù) 據(jù)庫等各種不同的存儲方式實現(xiàn)。待執(zhí)行任務的核心字段包括:應用系統(tǒng)執(zhí)行任務的接口名、觸發(fā)器執(zhí)行時間和頻率等。待執(zhí)行子任務會包含一定量的業(yè)務信息,可以用數(shù)據(jù)庫或hbase等文件存儲系統(tǒng)實現(xiàn)。待執(zhí)行子任務的核心字段包括:應用系統(tǒng)執(zhí)行任務的接口名、消息內容體、消費次數(shù)和是否需要重試等。本申請實施例所述的消息內容體包括待執(zhí)行子任務的處理對象,例如,在訂單預處理任務的子任務的消息內容體中包括該子任務需要處理的訂單號。為了能夠達到先進先出的處理效果,本申請實施例將待執(zhí)行子任務存儲在預設的子任務存儲隊列中。

在實際應用中,任務調度服務器獲取到待執(zhí)行子任務之后,還需要根據(jù)任務執(zhí)行服務器發(fā)送的獲取子任務請求,把一定量的待執(zhí)行子任務發(fā)送到任務執(zhí)行服務器,通過任務執(zhí)行服務器對待執(zhí)行子任務進行執(zhí)行處理。

任務調度服務器可以通過任務調度服務器和任務執(zhí)行服務器之間的所述待執(zhí)行子任務的連接,將所述待執(zhí)行子任務發(fā)送給任務執(zhí)行服務器,由任務執(zhí)行服務器執(zhí)行處理待執(zhí)行子任務。在本實施例中,各個任務執(zhí)行服務器通過定時輪詢方式發(fā)送所述獲取子任務請求。

需要說明的是,本申請實施例所述的待執(zhí)行任務作為一級定時任務主要是通過設置的定時任務觸發(fā)器觸發(fā)執(zhí)行的;而分割后形成的子任務的處理方式主要為:任務執(zhí)行服務器集群的每臺機器在后臺啟動一個線程定時輪詢一定量的子任務到本地消費。待執(zhí)行任務拆分為多個子任務后,表示待執(zhí)行任務本次執(zhí)行完畢,當該任務的下一次觸發(fā)時間到達時再執(zhí)行。

在上述的實施例中,提供了一種任務處理方法,與之相對應的,本申請還提供一種任務處理裝置。該裝置是與上述方法的實施例相對應。

請參看圖2,其為本申請的任務處理裝置實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。

本實施例的一種任務處理裝置,包括:

分配單元101,用于將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;

接收單元103,用于接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任 務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

可選的,所述待執(zhí)行任務包括定時任務,所述裝置還包括:

觸發(fā)單元,用于當系統(tǒng)時間達到所述定時任務的執(zhí)行時間時,觸發(fā)所述定時任務。

可選的,還包括:

生成任務單元,用于將所述待執(zhí)行任務集中到任務調度服務器集群。

可選的,還包括:

存儲單元,用于存儲所述至少一個待執(zhí)行子任務。

可選的,還包括:

發(fā)送單元,用于根據(jù)所述任務執(zhí)行服務器集群中第二任務執(zhí)行服務器發(fā)送的獲取子任務請求,向所述任務執(zhí)行服務器第二任務執(zhí)行服務器發(fā)送所述待執(zhí)行子任務,由所述第二任務執(zhí)行服務器執(zhí)行所述待執(zhí)行子任務。

請參考圖3,其為本申請的電子設備實施例的示意圖。由于設備實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的設備實施例僅僅是示意性的。

本實施例的一種電子設備,該電子設備包括:顯示器301;處理器302;以及存儲器303,所述存儲器303被配置成存儲任務處理裝置,所述任務處理裝置被所述處理器302執(zhí)行時,包括如下步驟:將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所述待執(zhí)行任務進行任務分割處理;接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務。

與上述的任務處理方法相對應,本申請還提供一種任務分割方法。請參考圖4,其為本申請?zhí)峁┑囊环N任務分割方法的實施例的流程示意圖,本實施例與第一實施例內容相同的部分不再贅述,請參見實施例一中的相應部分。本申請?zhí)峁┑囊环N任務分割方法用于分布式任務調度系統(tǒng),包括如下步驟:

步驟S401:接收任務調度服務器分配的待執(zhí)行任務。

本申請實施例提供的任務分割方法的執(zhí)行者為任務執(zhí)行服務器,所述的待 執(zhí)行任務與上述實施例一所述的待執(zhí)行任務為同一對象。本申請實施例所述的待執(zhí)行任務通過任務調度服務器分配獲取。任務執(zhí)行服務器接收到待執(zhí)行任務之后,就可以進入到步驟S403對該任務進行拆分處理。

步驟S403:根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務。

本申請實施例所述的預設的分割規(guī)則,包括但不限于:所述待執(zhí)行子任務包括的待處理對象數(shù)量小于預設的對象量閾值。在實際應用中,可以根據(jù)具體應用需求設置一個或多個分割規(guī)則。在本實施例中,應用所述待執(zhí)行子任務包括的待處理對象數(shù)量小于預設的對象量閾值這個分割規(guī)則,可以限制拆分后的待執(zhí)行子任務所包括的待處理對象數(shù)量,以避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題。

例如,待執(zhí)行任務為對特定倉庫的訂單進行訂單預處理操作,該任務一次可能查詢到該特定倉庫處于初始狀態(tài)的訂單有二十萬個,此時,可以先把這二十萬個訂單的訂單標識放到內存中,在內存中按訂單標識從小到大排序,20個為一個子任務,這樣待執(zhí)行任務就拆分出了一萬個子任務,任務執(zhí)行服務器集群可以直接消費的子任務。

請參考圖5,其為本申請?zhí)峁┑囊环N任務分割方法的實施例的具體流程圖。在本實施例中,在步驟S403之前,還包括:

步驟S501:根據(jù)預設的篩選條件,從所述待執(zhí)行任務包括的多個待處理對象中選取符合所述篩選條件的待處理對象。

在實際應用中,待執(zhí)行任務包括的部分待處理對象可能并不符合實際業(yè)務需求。為了提高任務的執(zhí)行效率,可以預先設置一些對待處理對象的篩選條件,以篩選出符合實際業(yè)務需求的待處理對象。

例如,待執(zhí)行任務為對某個倉庫的訂單進行訂單預處理的定時任務,因此,該任務的待處理對象包括該倉庫中的所有訂單;然而,訂單預處理操作的處理對象應該為處于初始化狀態(tài)的訂單,因此,將預設的篩選條件設置為訂單狀態(tài)為初始化狀態(tài),在將訂單預處理任務分割為至少一個子任務之前,首先需要從該倉庫中篩選出處于初始狀態(tài)的訂單。

在本實施例中,從所述訂單預處理任務包括的多個訂單中選取符合所述篩選條件的訂單,包括以下步驟:1)根據(jù)預先存儲的任務屬性表,獲取所述訂單 預處理任務對應的所述特定倉庫;2)根據(jù)預先存儲的所述特定倉庫的訂單表,獲取所述特定倉庫包括的訂單集合;3)根據(jù)所述訂單的狀態(tài)屬性,從所述訂單集合中選取處于所述初始化狀態(tài)的訂單,作為符合所述篩選條件的訂單。

需要注意的是,在實際應用中,由于一個倉庫中的訂單量通常較大,因此,為了能夠快速獲取到該倉庫的訂單,本申請實施例將不同倉庫的訂單分別存儲在不同的數(shù)據(jù)文件中。在實際應用中,具體的數(shù)據(jù)存儲規(guī)則可以根據(jù)實際業(yè)務確定。

步驟S405:將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

通過步驟S403,將所述待執(zhí)行任務分割為至少一個子任務之后,就可以將所述至少一個待執(zhí)行子任務回流到任務調度方。然后,任務執(zhí)行服務器集群就可以多個機器一起開啟后臺線程拉取子任務到本地消費。

本申請實施例提供的任務分割方法,任務調度服務器和任務執(zhí)行服務器之間采用RPC(Remote Procedure Call Protocol,遠程過程調用協(xié)議)接口通信方式進行數(shù)據(jù)交互。因此,在步驟S405之前,還包括:

步驟S503:對所述待執(zhí)行子任務包括的待處理對象做序列化處理,生成序列化的待處理對象。

RPC在TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)的基礎上傳輸數(shù)據(jù),因此,首先需要將待傳遞數(shù)據(jù)序列化成字節(jié)碼,然后再通過TCP協(xié)議傳遞給其它機器。當其它機器需要讀取該序列化后的數(shù)據(jù)時,需要用反序列化的方式解析收到的字節(jié)碼。在本實施例中,將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器,采用如下方式:將包括所述序列化的待處理對象的待執(zhí)行子任務回送至所述任務調度服務器。任務調度服務器接收到至少一個待執(zhí)行子任務后,將子任務包括的所述序列化的待處理對象作為子任務的一個屬性存儲在子任務隊列中,例如,上述實施例一所述的消息內容體中即存儲了序列化的待處理對象。

本申請實施例提供的任務分割方法,還包括:

步驟S505:獲取所述待執(zhí)行子任務。

在本實施例中,任務執(zhí)行服務器通過預先開啟的定時線程池,采用定時輪詢方式,從任務調度服務器集群中請求獲取一定量的待執(zhí)行子任務。

步驟S507:執(zhí)行所述待執(zhí)行子任務。

本申請實施例提供的任務分割方法,當任務執(zhí)行服務器獲取到待執(zhí)行子任務之后,將待執(zhí)行子任務放到本地內存,并在本地內存中另外開啟多線程進行消費,逐個處理子任務包括的待處理對象。在本實施例中,獲取到的待執(zhí)行子任務所包括的待處理對象是序列化的待處理對象,因此,在處理待處理對象之前,還需要對序列化的待處理對象進行反序列化的處理。

需要注意的是,在實際應用中,不同的待執(zhí)行子任務可能包括同一待處理對象;因此,在處理待處理對象時,首先需要獲取待處理對象的同步鎖,以避免不同子任務同時對同一待處理對象進行處理。

在上述的實施例中,提供了一種任務分割方法,與之相對應的,本申請還提供一種任務分割裝置。該裝置是與上述方法的實施例相對應。

請參看圖6,其為本申請的任務分割裝置實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。

本實施例的一種任務分割裝置,用于分布式任務調度系統(tǒng),包括:

接收單元601,用于接收任務調度服務器分配的待執(zhí)行任務;

分割單元603,用于根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務;

回送單元605,用于將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

請參看圖7,其為本申請的任務分割裝置實施例的具體示意圖??蛇x的,還包括:

篩選單元701,用于根據(jù)預設的篩選條件,從所述待執(zhí)行任務包括的多個待處理對象中選取符合所述篩選條件的待處理對象。

可選的,還包括:

序列化單元703,用于對所述待執(zhí)行子任務包括的待處理對象做序列化處理,生成序列化的待處理對象;

相應的,所述將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器,采用如下方式:

將包括所述序列化的待處理對象的所述至少一個待執(zhí)行子任務回送至所述 任務調度服務器。

可選的,還包括:

獲取單元705,用于獲取并執(zhí)行所述待執(zhí)行子任務;

執(zhí)行單元707,用于執(zhí)行所述待執(zhí)行子任務。

可選的,不同的所述待執(zhí)行子任務包括同一待處理對象;所述執(zhí)行單元707還包括:

獲取子單元,用于對所述待處理對象進行處理時,獲取所述待處理對象的同步鎖。

請參考圖8,其為本申請的又一電子設備實施例的示意圖。由于設備實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的設備實施例僅僅是示意性的。

本實施例的又一種電子設備,該電子設備包括:顯示器801;處理器802;以及存儲器803,所述存儲器803被配置成存儲任務分割裝置,所述任務分割裝置被所述處理器802執(zhí)行時,包括如下步驟:接收任務調度服務器分配的待執(zhí)行任務;根據(jù)預設的分割規(guī)則,將所述待執(zhí)行任務分割為至少一個待執(zhí)行子任務;將所述至少一個待執(zhí)行子任務回送至所述任務調度服務器。

本申請實施例還提供了一種任務處理系統(tǒng),如圖9所示,該系統(tǒng)包括任務調度服務器集群901和任務執(zhí)行服務器集群902;其中,所述任務調度服務器包括上述實施例所述的任務處理裝置;所述任務執(zhí)行服務器包括上述實施例所述的任務分割裝置。包括所述任務處理裝置的任務調度服務器,能夠在啟動待執(zhí)行任務之后,將待執(zhí)行任務分配給任務執(zhí)行服務器集群中的某一臺任務執(zhí)行服務器,指示該任務執(zhí)行服務器對待執(zhí)行任務進行任務分割處理;相應的,包括所述任務分割裝置的任務執(zhí)行服務器,在接收到任務調度服務器分配的待執(zhí)行任務后,能夠根據(jù)預設的分割規(guī)則,將待執(zhí)行任務分割為至少一個待執(zhí)行子任務,并將至少一個待執(zhí)行子任務回送至任務調度服務器。任務調度服務器接收到任務執(zhí)行服務器回流的至少一個待執(zhí)行子任務后,將待執(zhí)行子任務存儲到待子任務隊列中,等待任務執(zhí)行服務器處理。任務執(zhí)行服務器將至少一個待執(zhí)行子任務回送至任務調度服務器后,通過定時輪詢方式,從任務調度服務器集群中請求獲取待執(zhí)行子任務,并逐個處理待執(zhí)行子任務包括的各個待處理對象。

請參考圖10,其為本申請的任務處理系統(tǒng)實施例的具體示意圖。本實施例 的應用場景為倉庫管理系統(tǒng),任務處理系統(tǒng)作為倉庫管理系統(tǒng)的組成部分,負責對訂單預處理任務進行分發(fā)處理,以防止應用服務器負載過高的現(xiàn)象發(fā)生。本實施例的任務處理系統(tǒng)實現(xiàn)了一種訂單預處理任務的分發(fā)策略,把不同倉庫的大批量訂單預處理任務拆分成很多小的二級任務(即:子任務)分發(fā)到任務調度服務器集群(即:DTS服務器集群),任務調度服務器集群再把子任務平均分配給應用服務器集群(即:任務執(zhí)行服務器集群)。圖10種的DTS是一款實際可用的分布式任務調度產品,為用戶提供分布式環(huán)境下的任務調度和任務分發(fā)功能,DTS服務器集群作為倉庫管理系統(tǒng)的二級任務(即:子任務)存儲的中心節(jié)點。該任務處理系統(tǒng)首先通過頁面功能,將各個倉庫的訂單預處理定時任務維護到DTS集群中,當其中某一個訂單預處理定時任務被觸發(fā)時,對該任務的具體處理流程如下所述:

1)DTS服務端選擇應用服務端的某一臺機器來執(zhí)行該任務;

2)被選擇的應用服務端機器從相關訂單表中篩選出該任務包括的大量訂單;

3)應用服務器按照任務分割規(guī)則把這批訂單拆分為多個小的二級任務(即:子任務),并把拆分好的二級任務回流到DTS服務端中;

4)DTS服務端實現(xiàn)了一個存儲隊列,用于保存回流回來的二級任務;

5)針對DTS服務端存儲的二級任務,所有應用服務端機器都可以定時輪詢消費DTS服務端的二級任務。

通過上述方式對訂單預處理任務進行分發(fā)處理時,如果預處理任務對應的訂單量過多,可以增加任務調度服務器集群的機器數(shù)量,以提升任務執(zhí)行效率。

需要注意的是,由于二級任務的分發(fā)依賴于掃描數(shù)據(jù)表計算出來的數(shù)據(jù),因此,不同二級任務的訂單列表可能包含相同的訂單。為避免同一訂單被不同任務并發(fā)處理,需要對單個訂單的預處理任務做一個同步鎖,偽SQL如下:Update order set version=1 where version=0;如果該SQL語句的返回結果為1,則表示獲取到這條訂單預處理的同步鎖,返回結果為0,則代表該訂單被其它任務占用,本任務將放棄該訂單。

本申請?zhí)峁┑娜蝿仗幚矸椒?、裝置及系統(tǒng),用于分布式任務調度系統(tǒng),當分布式任務調度系統(tǒng)啟動待執(zhí)行任務之后,通過將所述待執(zhí)行任務分配給任務執(zhí)行服務器集群中的第一任務執(zhí)行服務器,指示所述第一任務執(zhí)行服務器對所 述待執(zhí)行任務進行任務分割處理;接收所述第一任務執(zhí)行服務器回送的、對所述待執(zhí)行任務進行分割后生成的至少一個待執(zhí)行子任務,將所述至少一個待執(zhí)行子任務作為所述任務執(zhí)行服務器集群需要執(zhí)行的任務,即:在處理待執(zhí)行任務時首先將其分割為多個子任務,然后由任務執(zhí)行服務器集群直接處理各個子任務,因而能夠避免單臺任務執(zhí)行服務器所處理的任務包括過多待處理對象的問題,從而達到提高任務執(zhí)行效率和成功率的效果。

本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領域技術人員在不脫離本申請的精神和范圍內,都可以做出可能的變動和修改,因此本申請的保護范圍應當以本申請權利要求所界定的范圍為準。

在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內存。

內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。

1、計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitory media),如調制的數(shù)據(jù)信號和載波。

2、本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1