本發(fā)明涉及計算機及通信領(lǐng)域,尤其涉及一種基于云系統(tǒng)的作業(yè)調(diào)度方法和系統(tǒng)。
背景技術(shù):
云系統(tǒng)是采用國際首創(chuàng)的HFP及HDRDP技術(shù)在局域網(wǎng)架構(gòu)下實現(xiàn)云計算使用效果的新一代通用計算機系統(tǒng)產(chǎn)品。云系統(tǒng),又稱云計算中心操作系統(tǒng)、云OS,是云計算后臺數(shù)據(jù)中心的整體管理運營系統(tǒng)。在云系統(tǒng)中進(jìn)行作業(yè)調(diào)度時,往往都以集群為單位處理。crontab命令常見于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行,crontab文件包含送交cron守護進(jìn)程的一系列作業(yè)和指令。但是,系統(tǒng)自帶的crontab調(diào)度只能在單一節(jié)點上執(zhí)行,且不具備伸縮、擴展、高可用能力,給系統(tǒng)業(yè)務(wù)和運維帶來一定的困難,因此,亟需一種新的技術(shù)手段,能夠解決上述技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種基于云系統(tǒng)的作業(yè)調(diào)度方法和系統(tǒng),以解決上述技術(shù)問題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
一種基于云系統(tǒng)的作業(yè)調(diào)度方法,包括:
a.調(diào)度模塊通過在Zookeeper服務(wù)器上進(jìn)行注冊,確認(rèn)作業(yè)調(diào)度是否啟用,所述Zookeeper服務(wù)器的Zookeeper服務(wù)為集群部署;
b.注冊成功后,獲取令牌,并查詢所述令牌對應(yīng)的作業(yè)調(diào)度配置表;
c.通過作業(yè)調(diào)度配置表獲取該待調(diào)度作業(yè)的處理作業(yè)列表;
d.執(zhí)行待調(diào)度作業(yè),調(diào)度完成后將調(diào)度結(jié)果反饋給調(diào)度模塊。
進(jìn)一步,步驟c中還包括根據(jù)并發(fā)處理字段對處理作業(yè)列表進(jìn)行多線程處理,并對各線程中的處理作業(yè)列表進(jìn)行優(yōu)先級排序,各線程循環(huán)處理作業(yè)列表。
通過多線程處理,并利用分布式內(nèi)存數(shù)據(jù)庫共享特性承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果數(shù)據(jù),通過將返回結(jié)果存放分布式內(nèi)存數(shù)據(jù)庫中的結(jié)果集供云運維平臺使用,提高了處理速度。
進(jìn)一步,所述調(diào)度模塊為多個,用于對調(diào)度作業(yè)均衡負(fù)載,調(diào)度模塊對作業(yè)調(diào)度配置表中的作業(yè)配置信息進(jìn)行校驗,判斷配置信息中各字段是否滿足格式要求。
通過校驗,排除不符合格式要求的作業(yè)配置信息,減少無用信息處理,提升系統(tǒng)速度。
進(jìn)一步,對所述作業(yè)配置信息進(jìn)行解析,獲取處理時間周期,并根據(jù)預(yù)設(shè)的時間周期閾值判斷處理時間周期是否有效;
若判斷結(jié)果為無效,則處理下一條作業(yè);
若判斷結(jié)果為有效,則讀取結(jié)果集表,判斷是否存在本周期未處理完的數(shù)據(jù),若存在,則結(jié)束本次處理,處理下一條作業(yè)。
便于進(jìn)行作業(yè)任務(wù)集群化管理與調(diào)度。
進(jìn)一步,當(dāng)作業(yè)配置信息符合要求且處理時間周期有效時,如果不存在本周期未處理完的數(shù)據(jù),則將結(jié)果記錄插入到結(jié)果集表,記錄包含本作業(yè)的處理周期,并將處理狀態(tài)置為初始狀態(tài),鎖定該作業(yè)。
避免進(jìn)行重復(fù)調(diào)度處理,浪費系統(tǒng)資源。
進(jìn)一步,調(diào)度模塊獲取到反饋結(jié)果后,對作業(yè)調(diào)度結(jié)果集表進(jìn)行更新,并將作業(yè)調(diào)度結(jié)果集表和作業(yè)配置信息分別存儲于分布式內(nèi)存數(shù)據(jù)庫。
利用分布式內(nèi)存數(shù)據(jù)庫共享特性承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果數(shù)據(jù),使調(diào)度監(jiān)控服務(wù)更加可靠。進(jìn)一步,所述Zookeeper服務(wù)器包括主用服務(wù)器和備用服務(wù)器,所述備用服務(wù)器用于當(dāng)支撐集群中節(jié)點異常后,接管主用服務(wù)器進(jìn)行工作,業(yè)務(wù)配置數(shù)據(jù)和結(jié)果集表分別承載于分布式內(nèi)存數(shù)據(jù)庫。
提高系統(tǒng)的容災(zāi)能力。
本發(fā)明還提供一種基于云系統(tǒng)的作業(yè)調(diào)度系統(tǒng),包括:
Zookeeper服務(wù)器,用于提供注冊服務(wù),確認(rèn)調(diào)度作業(yè)是否啟用,所述Zookeeper服務(wù)器的Zookeeper服務(wù)為集群部署;
調(diào)度模塊,用于通過作業(yè)調(diào)度配置表獲取該待調(diào)度作業(yè)的處理作業(yè)列表,對待調(diào)度作業(yè)進(jìn)行調(diào)度,所述調(diào)度模塊為多個;
反饋模塊,用于調(diào)度完成后將調(diào)度結(jié)果反饋給調(diào)度模塊。
進(jìn)一步,還包括:
校驗?zāi)K,用于對作業(yè)調(diào)度配置表中的作業(yè)配置信息進(jìn)行校驗;
解析模塊,用于對所述作業(yè)配置信息進(jìn)行解析,獲取處理時間周期,并根據(jù)預(yù)設(shè)的時間周期閾值判斷處理時間周期是否有效;
若判斷結(jié)果為無效,則處理下一條作業(yè);
若判斷結(jié)果為有效,則讀取結(jié)果集表,判斷是否存在本周期未處理完的數(shù)據(jù),若存在,則結(jié)束本次處理,處理下一條作業(yè)。
進(jìn)一步,所述Zookeeper服務(wù)器包括主用服務(wù)器和備用服務(wù)器,所述備用服務(wù)器用于當(dāng)支撐集群中節(jié)點異常后,接管主用服務(wù)器進(jìn)行工作,所述Zookeeper服務(wù)器設(shè)置有用于承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果集表的分布式內(nèi)存數(shù)據(jù)庫。
本發(fā)明的有益效果是:本發(fā)明中的基于云系統(tǒng)的作業(yè)調(diào)度方法和系統(tǒng),解決了云系統(tǒng)中的分布式任務(wù)調(diào)度問題,支持實時任務(wù)、定時任務(wù)和crontab任務(wù),有較好的伸縮性,擴展性,健壯穩(wěn)定性,可以對云系統(tǒng)的作業(yè)任務(wù)實現(xiàn)集群化管理與調(diào)度,有效的預(yù)防單點故障,實現(xiàn)調(diào)度管理高度可用,也實現(xiàn)了全面的作業(yè)監(jiān)控,提高了執(zhí)行效率,使運營維護直觀高效。
附圖說明
圖1為本發(fā)明實施例的基于云系統(tǒng)的作業(yè)調(diào)度方法的流程示意圖。
圖2為本發(fā)明實施例的基于云系統(tǒng)的作業(yè)調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,本實施例中的基于云系統(tǒng)的作業(yè)調(diào)度方法,包括:
a.調(diào)度模塊通過在Zookeeper服務(wù)器上進(jìn)行注冊,確認(rèn)作業(yè)調(diào)度是否啟用,所述Zookeeper服務(wù)器為集群部署;
b.注冊成功后,獲取令牌,并查詢所述令牌對應(yīng)的作業(yè)調(diào)度配置表;
c.通過作業(yè)調(diào)度配置表獲取該待調(diào)度作業(yè)的處理作業(yè)列表;
d.執(zhí)行待調(diào)度作業(yè),調(diào)度完成后將調(diào)度結(jié)果反饋給調(diào)度模塊。
在本實施例中,利用Zookeeper實現(xiàn)調(diào)度監(jiān)控服務(wù)的高可用,啟動調(diào)度任務(wù)后,先在集群部署的Zookeeper服務(wù)上進(jìn)行注冊,如果注冊失敗,直接退出進(jìn)程,注冊成功后,獲取令牌,查詢該令牌對應(yīng)作業(yè)調(diào)度配置表,獲取該進(jìn)程處理作業(yè)列表,根據(jù)處理作業(yè)列表開始調(diào)度作業(yè)執(zhí)行,作業(yè)完成后返回約定結(jié)果給調(diào)度模塊。本實施例可以在系統(tǒng)集群內(nèi)集中實現(xiàn)按業(yè)務(wù)邏輯處理作業(yè),支持指定周期性的執(zhí)行某些作業(yè),實現(xiàn)類crontab調(diào)度管理功能,有效的防單點故障,實現(xiàn)調(diào)度管理高可用,并且能夠?qū)崿F(xiàn)全面的作業(yè)監(jiān)控,含作業(yè)運行情況,執(zhí)行效率,并能集中輸出作業(yè)執(zhí)行情況告警和錯誤反饋。
在本實施例中,步驟c中還包括根據(jù)并發(fā)處理字段對處理作業(yè)列表進(jìn)行多線程處理,并對各線程中的處理作業(yè)列表進(jìn)行優(yōu)先級排序,各線程循環(huán)處理作業(yè)列表。依據(jù)并發(fā)處理字段歸整多線程處理,各線程任務(wù)列表按處理優(yōu)先級排序,各線程循環(huán)處理作業(yè)列表。在本實施例中,通過多線程處理,并利用分布式內(nèi)存數(shù)據(jù)庫共享特性承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果數(shù)據(jù),通過將返回結(jié)果存放分布式內(nèi)存數(shù)據(jù)庫中的結(jié)果集供云運維平臺使用,處理作業(yè)列表的優(yōu)先級按照原任務(wù)的優(yōu)先級進(jìn)行排序,依次執(zhí)行。
在本實施例中,調(diào)度模塊為多個,用于對調(diào)度作業(yè)均衡負(fù)載,調(diào)度模塊對作業(yè)調(diào)度配置表中的作業(yè)配置信息進(jìn)行校驗,判斷配置信息中各字段是否滿足格式要求,當(dāng)然用戶也可以根據(jù)需要,自定義調(diào)度模塊所負(fù)責(zé)調(diào)度作業(yè)的數(shù)量,也可以采用同一個調(diào)度作業(yè),采用多個調(diào)度模塊共同負(fù)責(zé)的方式。本實施例中配置信息的字段包括時間和頻率等信息,可以通過如下方法判斷是否符合要求,例如:
分:0-59(60分鐘制)
時:0-23(24小時制)
日:1-31(一個月最多31天)
月:1-12(一年12個月)
周:0-7(星期,0或7時代表星期天)
“*”:星號,代表任何時刻都接受;
“,”:逗號,代表分割時段的意思;
“-”:減號,表示一段時間范圍;
“/n”:斜杠n,n代表數(shù)字,即每隔多少分鐘執(zhí)行一次。
判斷配置信息中的時間及頻率信息是否滿足格式要求,符合要求則進(jìn)行下一步,否則不執(zhí)行,例如當(dāng)時間分鐘數(shù)沒有處于0-59,即認(rèn)為配置信息不滿足格式要求。
在本實施例中,對所述作業(yè)配置信息進(jìn)行解析,獲取處理時間周期,并根據(jù)預(yù)設(shè)的時間周期閾值判斷處理時間周期是否有效;
若判斷結(jié)果為無效,則處理下一條作業(yè);
若判斷結(jié)果為有效,則讀取結(jié)果集表,判斷是否存在本周期未處理完的數(shù)據(jù),若存在,則結(jié)束本次處理,處理下一條作業(yè)。
當(dāng)作業(yè)配置信息符合要求且處理時間周期有效時,如果不存在本周期未處理完的數(shù)據(jù),則將結(jié)果記錄插入到結(jié)果集表,記錄包含本作業(yè)的處理周期,并將處理狀態(tài)置為初始狀態(tài),鎖定該作業(yè)。并通過將返回結(jié)果存放分布式內(nèi)存數(shù)據(jù)庫中的結(jié)果集供云運維平臺使用。結(jié)果存放后,開始調(diào)度作業(yè)執(zhí)行,直到作業(yè)完成后返回約定結(jié)果給調(diào)度模塊,調(diào)度模塊獲取到對應(yīng)的反饋結(jié)果后,更新結(jié)果集表中對應(yīng)的記錄狀態(tài)字段,到此本次作業(yè)調(diào)度結(jié)束,處理下一條作業(yè)。
在本實施例中,Zookeeper服務(wù)包括主用服務(wù)和備用服務(wù),所述備用服務(wù)用于當(dāng)支撐集群中節(jié)點異常后,接管主用服務(wù)進(jìn)行工作,作業(yè)配置信息和結(jié)果集表分別承載于分布式內(nèi)存數(shù)據(jù)庫。本實施例通過主備模式支撐集群中節(jié)點異常后動態(tài)接管;利用分布式內(nèi)存數(shù)據(jù)庫共享特性承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果數(shù)據(jù);各作業(yè)在集群中各節(jié)點按全集方式存放,提供統(tǒng)一發(fā)布工具;作業(yè)完成后依據(jù)約定的標(biāo)準(zhǔn)返回接口給作業(yè)調(diào)度系統(tǒng),作業(yè)調(diào)度系統(tǒng)依據(jù)返回結(jié)果存放分布式內(nèi)存數(shù)據(jù)庫中的結(jié)果集供云運維平臺使用;云運維平臺為系統(tǒng)告警、日常運維提供數(shù)據(jù)接口。
相應(yīng)地,本實施例還提供一種基于云系統(tǒng)的作業(yè)調(diào)度系統(tǒng),如圖2所示,包括:
Zookeeper服務(wù)器,用于提供注冊服務(wù),確認(rèn)調(diào)度作業(yè)是否啟用,所述Zookeeper服務(wù)器為集群部署;
調(diào)度模塊,用于通過作業(yè)調(diào)度配置表獲取該待調(diào)度作業(yè)的處理作業(yè)列表,對待調(diào)度作業(yè)進(jìn)行調(diào)度;調(diào)度模塊為多個。
反饋模塊,用于調(diào)度完成后將調(diào)度結(jié)果反饋給調(diào)度模塊;
校驗?zāi)K,用于對作業(yè)調(diào)度配置表中的作業(yè)配置信息進(jìn)行校驗;
解析模塊,用于對所述作業(yè)配置信息進(jìn)行解析,獲取處理時間周期,并根據(jù)預(yù)設(shè)的時間周期閾值判斷處理時間周期是否有效;
若判斷結(jié)果為無效,則處理下一條作業(yè);
若判斷結(jié)果為有效,則讀取結(jié)果集表,判斷是否存在本周期未處理完的數(shù)據(jù),若存在,則結(jié)束本次處理,處理下一條作業(yè)。
本實施例中的Zookeeper服務(wù)器包括主用服務(wù)器和備用服務(wù)器,所述備用服務(wù)器用于當(dāng)支撐集群中節(jié)點異常后,接管主用服務(wù)器進(jìn)行工作,所述Zookeeper服務(wù)器設(shè)置有用于承載業(yè)務(wù)配置數(shù)據(jù)和結(jié)果集表的分布式內(nèi)存數(shù)據(jù)庫。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。