• / 12
  • 下載費用:30 金幣  

一種任務調度處理方法及系統.pdf

關 鍵 詞:
一種 任務 調度 處理 方法 系統
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201310738706.3

申請日:

2013.12.26

公開號:

CN103679392A

公開日:

2014.03.26

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||著錄事項變更IPC(主分類):G06Q 10/06變更事項:申請人變更前:拉卡拉支付有限公司變更后:拉卡拉支付股份有限公司變更事項:地址變更前:100080 北京市海淀區丹棱街6號1幢7層808變更后:100080 北京市海淀區丹棱街6號1幢6層706|||實質審查的生效IPC(主分類):G06Q 10/06申請日:20131226|||公開
IPC分類號: G06Q10/06(2012.01)I; G06F9/48 主分類號: G06Q10/06
申請人: 拉卡拉支付有限公司
發明人: 周雪松; 項毅
地址: 100080 北京市海淀區丹棱街6號1幢7層808
優先權:
專利代理機構: 北京新知遠方知識產權代理事務所(普通合伙) 11397 代理人: 馬軍芳
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201310738706.3

授權公告號:

|||||||||

法律狀態公告日:

2018.01.09|||2017.02.22|||2014.04.23|||2014.03.26

法律狀態類型:

授權|||著錄事項變更|||實質審查的生效|||公開

摘要

本發明提供了一種任務調度處理方法,包括:從消息中間件接收申請任務消息,所述申請任務消息包括主題名稱;當判斷所述申請任務消息滿足預置的過濾條件時,在數據庫中查詢該任務的執行狀態,如果當前沒有應用程序正在處理該任務,則指定目標應用程序執行本次任務,發布以所述主題名稱為主題的任務執行消息到所述消息中間件。本發明還提供了一種任務調度處理系統。采用本發明的技術方案可避免在集群系統并發操作時產生數據重復的問題。

權利要求書

權利要求書
1.  一種任務調度處理方法,其特征在于,包括以下步驟:
從消息中間件接收申請任務消息,所述申請任務消息包括主題名稱;
當判斷所述申請任務消息滿足預置的過濾條件時,在數據庫中查詢所述任務的執行狀態;如果當前沒有應用程序正在執行所述任務,則指定目標應用程序執行所述任務,發布以所述主題名稱為主題的任務執行消息到所述消息中間件。

2.  如權利要求1所述的任務調度處理方法,其特征在于,所述目標應用程序從所述消息中間件接收所述任務執行消息,當滿足預置的過濾條件時執行所述任務,并在執行完成后向所述數據庫記錄執行結果。

3.  如權利要求1所述的任務調度處理方法,其特征在于,所述數據庫中包括任務規則,所述任務是通過對所述數據庫中的任務規則解析得到,在系統初始化階段發布任務消息到所述消息中間件上。

4.  如權利要求1所述的任務調度處理方法,其特征在于,所述在數據庫中查詢所述任務的執行狀態,如果當前存在應用程序正在執行所述任務,則等待所述應用程序執行結束。

5.  如權利要求1所述的任務調度處理方法,其特征在于,所述目標應用程序為預先設置或者隨機指定。

6.  一種任務調度處理方法,其特征在于,包括以下步驟:
對數據庫中的定時任務的任務規則進行解析,得到所述定時任務,所述定時任務包括主題名稱、執行時間和執行對象;
當到達所述執行時間時,從所述執行對象中指定應用程序作為目標應用程序,向消息中間件發布任務執行消息,所述任務執行消息包括所述主題名稱和所述目標應用程序。

7.  如權利要求6所述的任務調度處理方法,其特征在于,所述目標應用程序從所述消息中間件接收所述任務執行消息,當滿足預置的過濾條件時執行所 述任務,并在執行完成后向數據庫記錄執行結果。

8.  一種任務調度處理系統,其特征在于,包括:
消息接收器,用于從消息中間件接收申請任務消息,所述申請任務消息包括主題名稱;
消息過濾器,用于根據預置的過濾條件過濾所述申請任務消息;
運算器,用于當所述申請任務消息通過所述消息過濾器時,在數據庫中查詢該任務的執行狀態,如果當前沒有應用程序正在執行所述任務,則指定目標應用程序執行所述任務;
消息發布器,用于發布以所述主題名稱為主題的任務執行消息到所述消息中間件上。

9.  如權利要求8所述的任務調度處理系統,其特征在于,所述目標應用程序的消息接收器用于接收所述任務執行消息,當所述任務執行消息通過所述目標應用程序的消息過濾器后所述目標應用程序執行所述任務,并在執行完成后向所述數據庫記錄執行結果。

10.  如權利要求8所述的任務調度處理系統,其特征在于,還包括:規則解析器,用于對所述數據庫中的任務規則進行解析得到所述任務;所述消息發布器還用于在系統初始化階段將任務消息發布到所述消息中間件上。

11.  如權利要求8所述的任務調度處理系統,其特征在于,所述運算器還用于如果當前存在應用程序正在執行所述任務,則等待所述應用程序執行結束。

12.  如權利要求8所述的任務調度處理系統,其特征在于,所述運算器具體用于指定預先設置的目標應用程序執行所述任務,或者隨機指定應用程序作為目標應用程序執行所述任務。

13.  一種任務調度處理系統,其特征在于,包括:
規則解析器,用于對數據庫中的定時任務的任務規則進行解析,得到所述定時任務,所述定時任務包括主題名稱、執行時間和執行對象;
運算器,用于當到達所述執行時間時,從所述執行對象中指定應用程序 作為目標應用程序;
消息發布器,用于向消息中間件發布任務執行消息,所述任務執行消息包括所述主題名稱以及所述目標應用程序。

14.  如權利要求13所述的任務調度處理系統,其特征在于,所述目標應用程序的消息接收器用于接收所述任務執行消息,當所述任務執行消息通過所述目標應用程序的消息過濾器后所述目標應用程序執行所述任務,并在執行完成后向數據庫記錄執行結果。

說明書

說明書一種任務調度處理方法及系統
技術領域
本發明涉及集群業務處理技術領域,尤其涉及一種任務調度處理方法及系統。
背景技術
隨著企業級管理系統用戶數量的不斷增大,為滿足管理系統的并發量,一般各個公司會采用硬件或軟件集群的方式來部署系統。然而集群并不是線程安全的,集群系統并發時會產生諸如系統定時任務處理、關鍵數據重復等問題。雖然目前部分問題可通過各種“鎖”的機制解決,但這種機制并不能完全解決上述問題。
對于收單業務系統來說,收單業務中包含各種各樣的單據號信息,比如交易流水號、商戶號、終端號以及其他各類流程數據單號。這些單號都有嚴格的編碼規則,并且在各自的領域中是唯一標識,一旦出現重復情況將對收單業務管理系統產生巨大的影響。
發明內容
本發明為解決上述問題,提出了一種任務調度處理方法及系統,通過將傳統的任務執行過程拆分成兩部分,解決系統集群部署產生的并發問題。
在一個方面,本發明提供了一種任務調度處理方法,包括以下步驟:
從消息中間件接收申請任務消息,申請任務消息包括主題名稱;
當判斷申請任務消息滿足預置的過濾條件時,在數據庫中查詢該任務的執 行狀態;如果當前沒有應用程序正在執行該任務,則指定目標應用程序執行該任務,發布以該主題名稱為主題的任務執行消息到消息中間件。
在一個方面,本發明還提供了一種任務調度處理方法,包括以下步驟:
對數據庫中的定時任務的任務規則進行解析,得到該定時任務,該定時任務包括主題名稱、執行時間和執行對象;
當到達該執行時間時,從執行對象中指定應用程序作為目標應用程序,向消息中間件發布任務執行消息,該任務執行消息包括主題名稱和目標應用程序。
在另一個方面,本發明提供了一種任務調度處理系統,包括:
消息接收器,用于從消息中間件接收申請任務消息,申請任務消息包括主題名稱;
消息過濾器,用于根據預置的過濾條件過濾申請任務消息;
運算器,用于當申請任務消息通過消息過濾器時,在數據庫中查詢該任務的執行狀態,如果當前沒有應用程序正在執行該任務,則指定目標應用程序執行該任務;
消息發布器,用于發布以該主題名稱為主題的任務執行消息到消息中間件上。
在另一方面,本發明還提供了一種任務調度處理系統,包括:
規則解析器,用于對數據庫中的定時任務的任務規則進行解析,得到定時任務,該定時任務包括主題名稱、執行時間和執行對象;
運算器,用于當到達執行時間時,從執行對象中指定應用程序作為目標應用程序;
消息發布器,用于向消息中間件發布任務執行消息,該任務執行消息包括所述主題名稱以及所述目標應用程序。
本發明采用JMS機制的發布者/訂閱者模式,通過將各個單號任務生成與單號任務實際執行兩個步驟分開處理,經任務調度以后再確定實際執行任務的 應用程序。采用本發明的技術方案可以避免在集群系統并發操作時產生數據重復的問題。
附圖說明
下面將參照附圖描述本發明的具體實施例,其中:
圖1示出了本發明實施例的任務調度處理方法的方法流程圖;
圖2示出了本發明另一實施例的任務調度處理方法的方法流程圖;
圖3示出了本發明實施例的任務調度處理系統的結構示意圖;
圖4示出了本發明另一實施例的任務調度處理系統的結構示意圖;
圖5示出了傳統商戶號生成任務的處理流程;
圖6示出了本發明實施例商戶號生成任務的處理流程。
具體實施方式
為了使本發明的技術方案及優點更加清楚明白,以下結合附圖對本發明的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本發明的一部分實施例,而不是所有實施例的窮舉。
為了解決系統集群部署時產生的并發問題,本發明實施例提出了一種任務分配調度處理方法及系統,是基于Java消息服務(JMS,Java Message Service)機制進行任務調度的處理。
其中,Java消息服務(JMS,Java Message Service)是一個Java平臺中關于面向消息中間件的應用程序編程接口(API,Application Programming Interface),它使得分布式系統的信息通信松散連接,發送信息的客戶端只需要負責發送信息,接收信息的客戶端只需要接收信息,兩個客戶端之間沒有必要同時可用。
JMS支持兩種消息模式:一種是點對點模式,另一種是發布者/訂閱者模式(publish/subscriber Messaging)。本發明實施例是基于發布者/訂閱者模式提 出的技術方案。發布者/訂閱者模式用于多接收客戶端方式,可能存在多個接收客戶端并且接收客戶端與發送客戶端存在時間上的依賴,一個接收端只能接收自身創建以后發送客戶端發送的信息。
由于在實際應用中,任務發起可以由各個應用程序向任務調度處理系統發起,也可以由任務調度處理系統自行發起,由任務調度處理系統自行發起的一般為定時任務,解析得到該任務后到達預定時間自行發起任務。因此,針對不同的任務發起者本發明提出了一種任務調度處理方法及系統。
對于各應用程序向任務調度處理系統申請任務的情況,本發明實施例提供了一種任務調度處理方法,圖1示出了該任務調度處理方法的流程圖,具體包括以下步驟:
S101、從消息中間件接收申請任務消息,該申請任務消息中包括有主題名稱。
該任務是在系統初始化階段對數據庫中的任務規則進行解析得到的,解析后得到的任務可能包括:主題名稱、消息方式、執行對象、執行時間等等。該數據庫中包括有各個任務的任務規則以及各任務的執行狀態,在任務規則方面定義了各個任務的指標參數信息,包括執行周期、實行時間和作業目標等等。
在解析得到該任務后,向消息中間件注冊這個任務消息。其他應用程序可以從消息中間件上訂閱該任務消息,并將自身的唯一標識名稱一同發布到消息中間件上。本發明實施例接收訂閱任務的消息,從而在初始化階段任務調度處理系統與各應用程序的任務連接關系,也即哪個應用程序訂閱了哪個任務。
當應用程序向消息中間件發起申請該任務消息時,消息中間件對該申請任務消息進行廣播,本發明實施例從消息中間件接收該申請任務消息。
S102、根據預先設置的過濾條件判斷該申請任務消息是否滿足過濾條件,如果不滿足則終止;如果滿足則執行下一步驟。
本發明實施例過濾原理是根據Java的反射機制來判斷傳入的參數對象,參數對應的是字符串String類型,表達式為正則表達式。本發明實施例還可提供 一個MessageSelector接口,用于滿足用戶復雜的需要編程的過濾條件。
本發明實施例根據預設的過濾條件,判斷該申請任務消息是否為本應用程序關注的內容,如果不是則終止;如果是本應用程序關注的內容則進行下一步驟。
S103、在數據庫中查詢該任務的執行狀態,判斷是否有應用程序正在處理該任務,也即該任務的任務狀態為執行中。如果有則等待上一個任務處理結束,如果沒有,則執行下一步驟。
S104、指定一個目標應用程序去執行本次任務,發起一個以該任務主題名稱為主題的任務執行消息,下發任務執行消息(也可稱為作業指令)到消息中間件上。該目標應用程序可以是預先設置的,也可以是隨機指定該任務的執行對象的其中一個應用程序,本發明對此不作限制。
目標應用程序接收到該任務執行消息后,判斷是否滿足自身的過濾條件,如果不滿足則說明不是自己關注的消息,直接丟棄該消息;如果滿足則執行該任務,執行完成后向數據庫中記錄執行結果。本發明實施例中是通過調用數據庫接口從而實現向該數據庫中記錄執行結果,也即目標應用程序向任務調度處理系統通過數據庫接口發送一條指令,由任務調度處理系統在數據庫中記錄執行結果。
基于同一發明構思,對于任務調度處理系統自行發起任務的情況,本發明實施例提供了一種任務調度處理方法,如圖2所示,具體包括以下步驟:
S201、對數據庫中的定時任務的任務規則進行解析,得到該定時任務的具體內容,該定時任務包括有任務的主題名稱、任務類型、執行時間以及執行對象(或稱執行目標)等信息。
S202、當到達該任務的執行時間時,從該任務的執行對象中指定一個應用程序作為目標應用程序,向消息中間件發布任務執行消息。該任務執行消息中包括該任務的主題名稱以及目標應用程序等信息。
S203、消息中間件對該任務執行消息進行廣播,目標應用程序的消息接收 器接收到該任務執行消息后,判斷該任務執行消息是否滿足自身預置的過濾條件,當滿足過濾條件時執行該任務,執行完成后向數據庫記錄執行結果;當不滿足過濾條件時則丟棄該任務執行消息。
具體舉例如下:
假設在數據庫中有一條主題名稱為“終端文件同步”的任務規則。通過規則解析器對該任務規則進行解析,得出這個任務是每天(任務類型:固定頻率)、凌晨1:10(cron表達式:0101**?)、開始執行前一天(java的jexlFuntion類方法為Date:addDays(-1))的增量終端數據同步。調度任務的執行目標是一組“bmcp-app”集群應用程序中隨機一個(也可以指定具體執行目標),包含了任務失敗重做10次的錯誤處理機制。這樣,當到達預定時間時,就會通過消息發布器發起一個主題名稱為“TRIGGER_SCHEDULE_EVENT_CODE”、內容為“POSP_TERM_FILE_EXPORT”的消息,并且隨機指定“bmcp-app”集群應用中某一應用程序去執行這個任務。
對于系統的定時任務,現有技術中所有應用程序都申請數據同步任務時會產生數據操作上的沖突。而采用本發明實施例所提供的任務調度處理方法,由任務調度處理系統統一生成任務,定時發起任務指定某一應用程序去執行任務,可以解決現有技術的數據處理沖突。
除此之外,任務調度處理系統生成任務時還設置了錯誤處理機制,當一個目標應用程序執行任務失敗時,任務調度處理系統根據錯誤處理機制指定另一目標應用程序再次執行該任務,確保任務的正常執行。
基于同一發明構思,本發明實施例還提供了一種任務調度處理系統。圖3示出了該任務分配調度處理系統的結構示意圖,具體包括:
消息發布器,用于向消息中間件(可以是ActiveMQ)發布主題名稱以及消息。消息發布器定義了connectionFactory和topicName兩個參數,connectionFactory是JMS的連接工廠,配置了消息中間件所在的服務器地址端口等信息,topicName是消息的主題名稱,向消息中間件申明要接收哪些主題 名稱的消息。
其中,ActiveMQ是Apache出品的開源消息總線,它是一個完全支持JMS和J2EE規范的JMS Provider實現。
消息接收器,用于從消息中間件接收消息。
消息過濾器,用于過濾各個應用程序需要接收的消息。消息過濾器從應用程序上下文容器context中獲取消息,根據預置的過濾條件判斷是否為本應用程序關注的消息,如果不是則終止;否則將消息傳遞給具體的任務調度程序。
運算器,作為具體的任務調度程序,用于接收過濾器傳送過來的消息,根據數據庫匹配具體的任務,制定作業調度執行計劃(包括執行時間、執行目標和執行內容等),指定目標應用程序執行該任務,發布以該任務的主題名稱為主題的任務執行消息到消息中間件上。
目標應用程序的消息接收器接收到該任務執行消息以后,首先由消息過濾器對該任務執行消息進行判斷,如果滿足該目標應用程序自身的過濾條件,則執行該任務,執行完成后向數據庫中記錄執行結果;如果不滿足自身過濾條件則直接丟棄該任務執行消息。目標應用程序可以調用任務調度處理系統的運算器來執行該任務,也可以利用自身的業務執行器執行該業務,本發明對此不作限制。
本發明實施例所提供的任務調度處理系統還包括:規則解析器,用于對預置數據庫中的任務規則進行解析,為消息過濾器提供過濾條件,而且還定義了各個任務的指標參數信息,比如執行周期、實行時間、作業目標等等。規則解析器是通過數據庫將需要執行的任務規則加載到緩存中,并根據實際的消息操作來刷新緩存內容。其中,本發明實施例的數據庫中存儲任務規則以及日常消息調度運行狀態。
基于同一發明構思,本發明還提供了一種任務調度處理系統,如圖4所示,包括:
規則解析器,用于對數據庫中的定時任務的任務規則進行解析,得到該定 時任務,該定時任務包括有主題名稱、執行時間以及執行對象(或稱執行目標)等信息。
運算器,用于當到達該任務的執行時間時,從執行對象中指定應用程序作為目標應用程序。
消息發布器,用于向消息中間件發布任務執行消息,任務執行消息包括該任務的主題名稱以及目標應用程序。
消息中間件對該任務執行消息進行廣播,目標應用程序的消息接收器用于接收該任務執行消息,當任務執行消息通過目標應用程序的消息過濾器后目標應用程序執行該任務,并在執行完成后向數據庫記錄執行結果。
本發明所提供的任務調度處理方法及系統,利用JMS機制的發布者/訂閱者模式,避免了在集群系統并發操作時產生的數據重復問題。
為了更好的說明本發明實施例的工作原理,下面以收單業務中的商戶號分配為例進行說明:
傳統單應用程序模式下商戶號生成流程如圖5所示,可以看出,單應用程序情況下商戶號依據預設規則順序增長。然而,如果存在一個應用程序正在處理申請商戶號并記錄結果到數據庫,而另一個應用程序也在處理申請商戶號并記錄結果到數據庫時,就可能出現不同應用程序獲得的商戶號重復的問題。
而采用本發明實施例所提供的技術方案,將申請商戶號和計算商戶號兩個原本上下連接的步驟進行了拆分,圖6示出了本發明實施例通過任務調度實現商戶號生成處理的流程(在此僅以應用程序向任務調度處理系統申請任務的過程進行舉例說明)。
首先,在系統初始化階段,任務調度處理系統對數據庫中的“商戶號生成”任務的規則進行解析,解析內容如下:
主題名稱:商戶號生成
消息方式:發布者/訂閱者
執行對象:APP1、APP2…APPn
執行時間:立即執行
異常重復次數:3次

解析完成后發布一個消息,向JMS消息中間件注冊該任務;其他應用程序訂閱該任務,并將自身的唯一標識名稱(假設該應用程序為APP1)告知JMS中間件。
由此,在初始化階段完成任務調度處理系統與各個應用程序的任務連接關系。
當應用程序向JMS消息中間件發送以“商戶號生成”為主題名稱、“申請商戶號生成任務”為內容的申請任務消息時,JMS消息中間件廣播該消息。任務調度處理系統接收該申請任務消息并判斷是否滿足過濾條件,不是自己關注的消息則丟棄;如果是自己關注的消息則進行后續任務調度處理。
查詢數據庫中“商戶號生成”任務的執行狀態,如果有APP正在處理商戶號生成任務,則等待上一個任務執行結束;如果沒有APP正在處理該任務,則發起一個以“商戶號生成”為主題名稱、以APP2為目標應用程序的消息到JMS消息中間件,也即指定APP2執行這個任務。當然,目標應用程序可以是隨機指定的,也可以預先配置,本發明對此不作限制。
JMS消息中間件對該消息進行廣播,當APP2接收到該消息后判斷是否滿足過濾條件,也即判斷是否為發送給自己的消息,如果是發送給其他應用程序的消息則不進行任何處理操作,如果是發送給自己的消息則執行該任務,生成商戶號以后,調用數據庫接口向數據庫中記錄執行結果。
本發明所提供的任務調度處理方法及系統,采用JMS機制的發布者/訂閱者模式,通過將各個單號生成任務的申請與單號實際生成兩個步驟分開處理,經任務調度以后再確定實際執行任務的應用程序。采用本發明的技術方案可以避免在集群系統并發操作時產生數據重復的問題。
以上實施例僅用以說明本發明的技術方案,而非對其進行限制。因此,在 不背離本發明的精神及其實質的情況下,本領域技術人員可作出各種改變、替換和變型。很顯然,但這些改變、替換和變型都應涵蓋于本發明權利要求的保護范圍之內。

關于本文
本文標題:一種任務調度處理方法及系統.pdf
鏈接地址:http://www.pqsozv.live/p-6180653.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
钻石光影