[發明專利]集群定時調度任務的控制方法有效
| 申請號: | 201410037858.5 | 申請日: | 2014-01-26 |
| 公開(公告)號: | CN103761148B | 公開(公告)日: | 2017-04-05 |
| 發明(設計)人: | 張世彬 | 申請(專利權)人: | 北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/52 |
| 代理公司: | 北京德琦知識產權代理有限公司11018 | 代理人: | 王一斌,王琦 |
| 地址: | 100080 北京*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 集群 定時 調度 任務 控制 方法 | ||
技術領域
本發明涉及集群系統的任務調度技術,特別是涉及一種集群定時調度任務的控制方法。
背景技術
隨著計算機技術的發展,越來越多的服務和應用需要部署在服務器集群中,也就是說一個應用會被部署到多臺機器上或者一臺機器部署多個同樣的應用實例(又稱為節點)。而另一方面,在應用中常常需要進行定時調度處理,如銀行每天凌晨1點進行利息結算,或者電商系統每隔幾個小時對商品銷售進行統計。
以上兩個場景結合就出現這樣的問題:通常定時調度任務在一指定的調度時間只能執行一次(例如,利息結算調度任務需要在凌晨1點進行一次利息結算),但是每個應用節點如果沒有任務鎖定機制,到指定時間點都會觸發定時調度任務的執行。任務被多次執行不僅浪費性能,而且還有可能造成數據錯誤。
針對上述問題,目前在集群系統中采用下述兩種定時調度任務的控制方法,一種是通過參數配置,只在一個節點上啟動定時調度任務,另一種是采用Quartz定時調度服務自有的集群控制方案,該方案中QUARTZ為實現多節點部署下,定時調度任務的單次執行,需要將程序運行的java對象,以二進制的形式保存到數據庫,數據庫作為一個數據共享中心來供多個節點進行數據通信。QUARTZ的任務(TASK)以12張表(各表的功能具體如下表1所示)的形式實例化到數據庫中,基于數據庫引擎及High-Available的策略(集群的一種策略)自動協調每個節點的QUARTZ,當任一一節點的QUARTZ非正常關閉或出錯時,另幾個節點的QUARTZ會自動啟動。
表1
上述第一種定時調度方法只能在一個節點上啟動,該節點需要部署人員具體指定;當該單節點出現問題,沒有其它的節點可以替代執行,無法發揮集群系統的高穩定性優點。
上述第二種定時調度方法相對于第一種方法能保證集群系統的高并發與穩定性,但是該方案有以下缺點:
1、quartz的集群調度控制需要在數據庫中創建12張表,對應用嵌入較大,雖然功能強大,但是配置也相當復雜,且數據以二進制存儲,不能直接閱讀理解查看運行情況。
2、如果定時調度的任務在很短的時間即可執行完畢,則在集群的各機器的時間不同步的情況下,會導致定時調度任務被多次執行的問題。例如,如圖1所示,在子圖A1中,在凌晨零點30分,節點1鎖定定時調度任務成功,執行利息計算;在子圖A2中,凌晨零點30分30秒,節點1計算完畢,釋放鎖定;在子圖A3中,凌晨零點31分,節點2獲取鎖定成功,再次執行利息計算;在子圖A4中,凌晨零點31分30秒,節點2計算完畢,釋放鎖定。可見,由于節點1和節點2的時間不一致,而定時調度任務的執行時間很短(只有30秒),造成節點1在獲取任務鎖的時候,節點2沒有同時去競爭獲取鎖定達到互斥。當節點1執行完任務處理并釋放鎖定后,節點2也獲取到了任務鎖定,從而造成定時調度任務的二次執行。
由此可見,現有的集群定時調度任務的控制方法存在無法發揮集群系統的高穩定性優點或者應用嵌入程度高、定時調度任務的多次執行等問題。
發明內容
有鑒于此,本發明的主要目的在于提供一種集群定時調度任務的控制方法,該方法可有效避免定時調度任務的多次執行、應用嵌入程度高等問題,且能發揮集群系統的穩定性優點。
為了達到上述目的,本發明提出的技術方案為:
一種集群定時調度任務的控制方法,包括:
a、集群節點在自身內部署的定時調度任務的執行時刻到達時,向數據庫請求執行所述定時調度任務;其中,同時部署所述定時調度任務的集群節點數量大于一;
b、所述數據庫根據所述請求,判斷所述定時調度任務當前是否被鎖定,如果是,則執行步驟e,否則,執行步驟c;
c、所述數據庫判斷當前時刻與所述定時調度任務最近一次被執行的相關時刻之間的時間間隔是否小于預設的最小間隔閾值,如果是,則執行步驟e,否則執行步驟d;
d、所述數據庫鎖定所述定時調度任務,并觸發所述集群節點執行所述定時調度任務;當所述定時調度任務的執行結束時,所述集群節點觸發所述數據庫釋放所述鎖定;結束所述方法;
e、所述數據庫拒絕所述請求。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司,未經北京京東尚科信息技術有限公司;北京京東世紀貿易有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410037858.5/2.html,轉載請聲明來源鉆瓜專利網。





