分布式定時任務(wù)調(diào)度系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種分布式定時任務(wù)調(diào)度方法,包括如下步驟:a)任務(wù)分發(fā)者系統(tǒng)啟動,監(jiān)聽任務(wù)提交者系統(tǒng)的提交任務(wù)和任務(wù)執(zhí)行者系統(tǒng)中的任務(wù)執(zhí)行者的注冊;b)所述任務(wù)執(zhí)行者系統(tǒng)啟動,自動向所述任務(wù)分發(fā)者系統(tǒng)注冊;c)所述任務(wù)提交者系統(tǒng)向所述任務(wù)分發(fā)者系統(tǒng)提交任務(wù);d)所述任務(wù)分發(fā)者系統(tǒng)收到任務(wù)后,通知所述任務(wù)執(zhí)行者系統(tǒng)中的已注冊的與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者來取走所述任務(wù);e)所述與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者取走所述任務(wù)并執(zhí)行所述任務(wù)。利用本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)具有管理簡單、操作方便等特點,能夠解決程序數(shù)目較多,且管理混亂等問題。
【專利說明】分布式定時任務(wù)調(diào)度系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及客戶端/服務(wù)器系統(tǒng)的任務(wù)管理,特別涉及一種基于客戶端/服務(wù)器系統(tǒng)分布式定時任務(wù)調(diào)度系統(tǒng)。
【背景技術(shù)】
[0002]客戶端/服務(wù)器結(jié)構(gòu)(即Client/Server結(jié)構(gòu),簡稱C/S結(jié)構(gòu))是計算機領(lǐng)域中熟知的一種客戶機和服務(wù)器結(jié)構(gòu)。這是一種軟件系統(tǒng)體系結(jié)構(gòu),可以充分利用客戶機和服務(wù)器兩端的硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到客戶機(Client)端和服務(wù)器(Server)端來實現(xiàn),從而降低了系統(tǒng)的通訊開銷。服務(wù)器端通常采用高性能的PC、工作站或小型機,并采用大型數(shù)據(jù)庫系統(tǒng),如ORACLE、SYBASE、InfORMix或SQL Server??蛻舳诵枰惭b專用的客戶端軟件。C/S結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。而且,數(shù)據(jù)的儲存管理功能較為透明。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu)。
[0003]在客戶端/服務(wù)器結(jié)構(gòu)的系統(tǒng)中,經(jīng)常會有許多需要重復(fù)執(zhí)行的任務(wù)或程序。如:生成周報的程序需要每周執(zhí)行一次、發(fā)送郵件的程序需要每天凌晨3點執(zhí)行一次、分析日志的程序需要每天凌晨I點執(zhí)行一次、信息采集的程序需要每兩小時執(zhí)行一次等等。還有一些程序需要在特定的情況下手動觸發(fā)執(zhí)行。
[0004]這些以周期性重復(fù)執(zhí)行的任務(wù)或程序具有如下一些相同點:需要重復(fù)執(zhí)行、需要定時執(zhí)行、編寫程序時需要考慮定時邏輯等。如果在客戶端/服務(wù)器結(jié)構(gòu)的系統(tǒng)中這樣的任務(wù)或程序數(shù)目較多,就會使得客戶端/服務(wù)器結(jié)構(gòu)的系統(tǒng)的管理十分復(fù)雜混亂,容易出錯,造成系統(tǒng)不穩(wěn)定等問題。
[0005]在現(xiàn)有技術(shù)中,為了解決這類重復(fù)執(zhí)行的任務(wù)或程序的分配和管理問題,可以將這些需要定時重復(fù)執(zhí)行的任務(wù)部署在一臺服務(wù)器上,那么這個定時任務(wù)就是整個系統(tǒng)的單點。然而,在單點模式下如果這臺服務(wù)器出現(xiàn)故障的話會影響整個服務(wù)。對于可以冗余的任務(wù)(重復(fù)運行不影響服務(wù)),也可以部署在多臺服務(wù)器上,讓它們同時執(zhí)行,這樣就可以很簡單的避免單點。但是如果任務(wù)不允許冗余,最多只能有一臺服務(wù)器執(zhí)行任務(wù),會產(chǎn)生互斥任務(wù)的單點問題。
[0006]因此,需要一種能夠解決定時重復(fù)執(zhí)行的任務(wù)的管理問題,以達到管理簡單,操作方便的目的分布式定時任務(wù)調(diào)度方法和系統(tǒng)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的是提供一種分布式定時任務(wù)調(diào)度方法,包括如下步驟:a)任務(wù)分發(fā)者系統(tǒng)啟動,監(jiān)聽任務(wù)提交者系統(tǒng)的提交任務(wù)和任務(wù)執(zhí)行者系統(tǒng)中的任務(wù)執(zhí)行者的注冊;b)所述任務(wù)執(zhí)行者系統(tǒng)啟動,自動向所述任務(wù)分發(fā)者系統(tǒng)注冊;c)所述任務(wù)提交者系統(tǒng)向所述任務(wù)分發(fā)者系統(tǒng)提交任務(wù);d)所述任務(wù)分發(fā)者系統(tǒng)收到任務(wù)后,通知所述任務(wù)執(zhí)行者系統(tǒng)中的已注冊的與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者來取走所述任務(wù);e)所述與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者取走所述任務(wù)并執(zhí)行所述任務(wù)。
[0008]優(yōu)選地,還包括關(guān)閉所述任務(wù)分發(fā)者系統(tǒng)的步驟如下:h)所述任務(wù)提交者系統(tǒng)向任務(wù)分發(fā)者系統(tǒng)發(fā)送表示關(guān)閉任務(wù)分發(fā)者系統(tǒng)的命令;i)所述任務(wù)分發(fā)者系統(tǒng)停止接受任務(wù);j)所述任務(wù)分發(fā)者系統(tǒng)向所述任務(wù)執(zhí)行者系統(tǒng)發(fā)送任務(wù)集群命令;k)所述任務(wù)執(zhí)行者系統(tǒng)將現(xiàn)有任務(wù)轉(zhuǎn)入集群;1)所述任務(wù)執(zhí)行者系統(tǒng)將包括現(xiàn)有任務(wù)的集群返回所述任務(wù)分發(fā)者;m)所述任務(wù)分發(fā)者系統(tǒng)關(guān)機。
[0009]優(yōu)選地,在步驟b中,所述任務(wù)提交者系統(tǒng)向所述任務(wù)分發(fā)者系統(tǒng)注冊的信息包括:每個所述任務(wù)執(zhí)行者的功能信息、唯一標(biāo)示、最大負載、及輸入輸出參數(shù)。
[0010]優(yōu)選地,在步驟C中,所述任務(wù)提交者系統(tǒng)定時提交任務(wù)。
[0011]優(yōu)選地,在步驟e之后,向所述任務(wù)分發(fā)者系統(tǒng)返回包括表示任務(wù)執(zhí)行成功或任務(wù)異常的信息。
[0012]優(yōu)選地,從步驟a至步驟m都采用Gearman傳輸協(xié)議,請求和響應(yīng)被封裝成二進制數(shù)據(jù)包,所述二進制數(shù)據(jù)包包含一個文件頭以及數(shù)據(jù)內(nèi)容。
[0013]優(yōu)選地,所述二進制數(shù)據(jù)包僅包含數(shù)據(jù)內(nèi)容。
[0014]優(yōu)選地,所述文件頭的格式如下:所述文件頭為12個Byte,由4byte的MagicCode、4byte的消息類型和4byte的數(shù)據(jù)大小信息組成。
[0015]優(yōu)選地,所述任務(wù)提交者系統(tǒng)包括2個任務(wù)提交者,所述任務(wù)分發(fā)者系統(tǒng)包括2個任務(wù)分發(fā)者。
[0016]優(yōu)選地,所述任務(wù)提交者系統(tǒng)具有用戶界面接口。
[0017]利用本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)具有管理簡單、操作方便等特點,能夠解決程序數(shù)目較多,且管理混亂等問題。
【專利附圖】
【附圖說明】
[0018]參考隨附的附圖,本發(fā)明更多的目的、功能和優(yōu)點將通過本發(fā)明實施方式的如下描述得以闡明,其中:
[0019]圖1示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的系統(tǒng)框圖;
[0020]圖2示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的方法流程圖。
[0021]圖3示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的關(guān)閉服務(wù)器的方法流程圖。
【具體實施方式】
[0022]通過參考示范性實施例,本發(fā)明的目的和功能以及用于實現(xiàn)這些目的和功能的方法將得以闡明。然而,本發(fā)明并不受限于以下所公開的示范性實施例;可以通過不同形式來對其加以實現(xiàn)。說明書的實質(zhì)僅僅是幫助相關(guān)領(lǐng)域技術(shù)人員綜合理解本發(fā)明的具體細節(jié)。
[0023]在下文中,將參考附圖描述本發(fā)明的實施例。在附圖中,相同的附圖標(biāo)記代表相同或類似的部件,或者相同或類似的步驟。
[0024]圖1示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的系統(tǒng)框圖。本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)100包括3個子系統(tǒng):任務(wù)提交者系統(tǒng)110、任務(wù)分發(fā)者系統(tǒng)120和任務(wù)執(zhí)行者系統(tǒng)130。各子系統(tǒng)之間基于自定義協(xié)議(基于TCP/IP網(wǎng)絡(luò)通信協(xié)議)通信。[0025]下面關(guān)于自定義協(xié)議進行解釋。本系統(tǒng)的自定義協(xié)議的通信規(guī)則步驟為:
[0026]步驟1,任務(wù)分發(fā)者系統(tǒng)120啟動,監(jiān)聽任務(wù)提交者系統(tǒng)110的提交任務(wù)和任務(wù)執(zhí)行者系統(tǒng)130中的任務(wù)執(zhí)行者的注冊;
[0027]步驟2,任務(wù)執(zhí)行者系統(tǒng)130啟動,自動向任務(wù)分發(fā)者系統(tǒng)120注冊,告知自己能做的哪些任務(wù)和自己的編號;
[0028]步驟3,任務(wù)提交者系統(tǒng)110向任務(wù)分發(fā)者系統(tǒng)120提交任務(wù);
[0029]步驟4,任務(wù)分發(fā)者系統(tǒng)120收到后,通知任務(wù)執(zhí)行者系統(tǒng)130中的已注冊的能做該任務(wù)的任務(wù)執(zhí)行者來取走任務(wù);
[0030]步驟5,其中一個任務(wù)執(zhí)行者取走任務(wù),執(zhí)行,并告知任務(wù)分發(fā)者系統(tǒng)120完成或異常。
[0031]以上五個步驟每個步驟都采用的Gearman傳輸協(xié)議,請求和響應(yīng)被封裝成二進制數(shù)據(jù)包,該二進制數(shù)據(jù)包包含一個文件頭以及數(shù)據(jù)內(nèi)容。文件頭格式如下:文件頭為12個Byte,分別有4byte的Magic Code、4byte的消息類型和4byte的數(shù)據(jù)大小信息組成。優(yōu)選地,該二進制數(shù)據(jù)包也可以僅包含數(shù)據(jù)內(nèi)容。
[0032]例如:MagicCode 分別為,〃\0REQ〃 或 〃\0RES〃,〃\0REQ〃 代表請求,〃\0RES〃 代表響應(yīng)。
[0033]優(yōu)選地,本系統(tǒng)將三個子系統(tǒng),即任務(wù)提交者系統(tǒng)110、任務(wù)分發(fā)者系統(tǒng)120,以及任務(wù)執(zhí)行者系統(tǒng)130完全解耦。從而方便系統(tǒng)的擴展與升級,避免單點故障,提高工作效率。
[0034]該自定義協(xié)議優(yōu)選設(shè)置為,通信內(nèi)容以命令+數(shù)據(jù)的方式在各子系統(tǒng)間傳送。例如,在任務(wù)執(zhí)行者系統(tǒng)130啟動時,會向任務(wù)分發(fā)者系統(tǒng)120注冊,使用SET_CLIENT_ID命令,并加上自己的ID號發(fā)送給任務(wù)分發(fā)者端。此處的向任務(wù)分發(fā)者系統(tǒng)120注冊的含義為,將任務(wù)執(zhí)行者系統(tǒng)130中的各任務(wù)執(zhí)行者能夠處理的任務(wù)以及各任務(wù)執(zhí)行者的編號告知任務(wù)分發(fā)者。
[0035]任務(wù)提交者系統(tǒng)110具有用戶界面接口,例如以web方式呈現(xiàn)的交互式頁面。用戶或管理員可以通過任務(wù)提交者系統(tǒng)110發(fā)起添加新任務(wù),任務(wù)提交者系統(tǒng)110會將任務(wù)數(shù)據(jù)存入數(shù)據(jù)庫113。當(dāng)需要提取任務(wù)數(shù)據(jù)時,任務(wù)提交者系統(tǒng)110會從數(shù)據(jù)庫113取出任務(wù)數(shù)據(jù),并按時將任務(wù)數(shù)據(jù)提交至任務(wù)分發(fā)者系統(tǒng)120。
[0036]優(yōu)選地,在任務(wù)即將執(zhí)行之前,任務(wù)提交者系統(tǒng)110提前一定時間地將任務(wù)數(shù)據(jù)加載到內(nèi)存,以實現(xiàn)準(zhǔn)時投遞。例如,若某任務(wù)需要在10:00執(zhí)行,則任務(wù)提交者系統(tǒng)110在9:50將需要執(zhí)行的任務(wù)數(shù)據(jù)從硬盤加載至內(nèi)存,并將該任務(wù)數(shù)據(jù)加入延時隊列,在10:00時,任務(wù)數(shù)據(jù)會從延遲隊列被提取至任務(wù)提交者系統(tǒng)110,從而能夠在10:00準(zhǔn)時地向任務(wù)分發(fā)者系統(tǒng)120提交任務(wù)數(shù)據(jù)。延時隊列是一種具有定時器和觸發(fā)器的隊列,從而能夠按時傳送數(shù)據(jù)。
[0037]作為具有用戶界面接口的任務(wù)提交者系統(tǒng)110,在需要的情況下,能夠顯示從任務(wù)分發(fā)者系統(tǒng)120返回的包含表示任務(wù)執(zhí)行成功與否的信息。例如,當(dāng)任務(wù)分發(fā)者系統(tǒng)120接收到從任務(wù)執(zhí)行者系統(tǒng)130傳來的任務(wù)失敗的信息時,任務(wù)分發(fā)者系統(tǒng)120會向任務(wù)提交者系統(tǒng)110發(fā)送顯示任務(wù)失敗的提示信息以及報警命令。此時,任務(wù)提交者系統(tǒng)110將會通過用戶界面接口,將任務(wù)失敗的提示信息顯示出來。又例如,在進行任務(wù)分發(fā)者系統(tǒng)120的關(guān)閉操作時,任務(wù)提交者系統(tǒng)110接收從任務(wù)分發(fā)者系統(tǒng)返回的執(zhí)行結(jié)果,并將該執(zhí)行結(jié)果通過用戶界面接口顯示出來。
[0038]任務(wù)分發(fā)者系統(tǒng)120接收從任務(wù)提交者系統(tǒng)110提交的任務(wù)數(shù)據(jù),并將任務(wù)數(shù)據(jù)分發(fā)至任務(wù)執(zhí)行者系統(tǒng)130。在任務(wù)分發(fā)者系統(tǒng)120中的任務(wù)分發(fā)者都具有任務(wù)調(diào)度的功能。當(dāng)任務(wù)執(zhí)行者系統(tǒng)130啟動后會向任務(wù)分發(fā)者系統(tǒng)120注冊自己的信息,比如任務(wù)執(zhí)行者的唯一標(biāo)示,最大負載,輸入輸出參數(shù)等。任務(wù)分發(fā)者在接受到任務(wù)提交者提交上來的任務(wù)后,會根據(jù)任務(wù)的唯一標(biāo)示找到可以接受該任務(wù)的任務(wù)執(zhí)行者。
[0039]根據(jù)本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)100優(yōu)選各具有至少兩個任務(wù)提交者和任務(wù)分發(fā)者,這樣可以防止單點故障。例如由某個機器宕機而引起系統(tǒng)服務(wù)中斷就屬于單點故障。如圖1所示,任務(wù)提交者系統(tǒng)Iio至少包括第一任務(wù)提交者111和第二任務(wù)提交者112。任務(wù)分發(fā)者系統(tǒng)120至少包括第一任務(wù)分發(fā)者121和第二任務(wù)分發(fā)者122。
[0040]當(dāng)有某任務(wù)需要提交時,在正常的工作狀態(tài)下,該任務(wù)可以由任務(wù)提交者系統(tǒng)110中的任意一個任務(wù)提交者(例如任務(wù)提交者111)隨機地向任務(wù)分發(fā)者系統(tǒng)120中的任意一個任務(wù)分發(fā)者(例如任務(wù)分發(fā)者121)提交;若有任務(wù)提交者(例如任務(wù)提交者111)宕機,則該任務(wù)會由任務(wù)提交者112隨機地向任務(wù)分發(fā)者系統(tǒng)120中的任意一個任務(wù)分發(fā)者(例如任務(wù)分發(fā)者121)提交;若有任務(wù)分發(fā)者(例如任務(wù)分發(fā)者121)宕機,則任務(wù)提交者系統(tǒng)110將該任務(wù)向任務(wù)分發(fā)者系統(tǒng)120中的任務(wù)分發(fā)者122提交。另外,任務(wù)提交者系統(tǒng)110中的任務(wù)提交者以及任務(wù)分發(fā)者系統(tǒng)120中的任務(wù)分發(fā)者的個數(shù)可以大于兩個,但考慮到成本及效果的平衡,2個任務(wù)提交者及任務(wù)分發(fā)者是最合適的。
[0041]當(dāng)任務(wù)執(zhí)行者發(fā)生單點故障時,例如任務(wù)執(zhí)行者系統(tǒng)130的某臺機器宕機時,任務(wù)分發(fā)者系統(tǒng)120會檢測到該宕機的機器的心跳停止,因此不會把任務(wù)發(fā)送給該機器的任務(wù)執(zhí)行者來執(zhí)行任務(wù)。
[0042]任務(wù)執(zhí)行者系統(tǒng)130處理從任務(wù)分發(fā)者系統(tǒng)120接收到的任務(wù)數(shù)據(jù)。在任務(wù)執(zhí)行者系統(tǒng)中可以至少包含一個任務(wù)執(zhí)行者,圖1中僅示意性地示出了第一任務(wù)執(zhí)行者131、第二任務(wù)執(zhí)行者132和第n任務(wù)執(zhí)行者139。為了保證系統(tǒng)效率,相同任務(wù)的任務(wù)執(zhí)行者可以有多個。如果提交的任務(wù)較多,則任務(wù)分發(fā)者系統(tǒng)120默認將任務(wù)平均隨機分配給任務(wù)執(zhí)行者系統(tǒng)130中的多個任務(wù)執(zhí)行者來執(zhí)行。
[0043]在各子系統(tǒng)之間,使用自定義的序列化實現(xiàn)數(shù)據(jù)在傳輸上的編碼的與解碼。每個任務(wù)有自己所需的參數(shù),這些參數(shù)在任務(wù)提交者端序列化為字節(jié),發(fā)送到任務(wù)分發(fā)者端,再分發(fā)到任務(wù)執(zhí)行者端,任務(wù)執(zhí)行者解析,并使用。
[0044]下面舉2個自定義的序列化的例子,任務(wù)執(zhí)行者系統(tǒng)130中的某個任務(wù)執(zhí)行者若準(zhǔn)備好執(zhí)行任務(wù)時,則向任務(wù)分發(fā)者系統(tǒng)120發(fā)送一個協(xié)議包,表示隨時可以接受任務(wù),該協(xié)議包如下:
[0045]Magic: REQ
[0046]Type: CAN—DO
[0047]任務(wù)執(zhí)行者系統(tǒng)130中的某個任務(wù)執(zhí)行者若不能接受新任務(wù)時,則向任務(wù)分發(fā)者系統(tǒng)120發(fā)送一個協(xié)議包,該協(xié)議包如下:
[0048]Magic: REQ
[0049]Type: CANT—DO[0050]圖2示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的方法流程圖。如圖2所示,首先,任務(wù)分發(fā)者系統(tǒng)120啟動,接收來自任務(wù)執(zhí)行者系統(tǒng)130的注冊,從而任務(wù)分發(fā)者系統(tǒng)120得到任務(wù)執(zhí)行者系統(tǒng)130中每個任務(wù)執(zhí)行者能夠處理的任務(wù)以及其編號(205)。若接收到任務(wù)提交者系統(tǒng)110提交的任務(wù)(210),任務(wù)分發(fā)者系統(tǒng)120將會根據(jù)任務(wù)的類型找到能夠處理該任務(wù)的相應(yīng)的任務(wù)執(zhí)行者(215)。然后將該任務(wù)分發(fā)給任務(wù)執(zhí)行者系統(tǒng)110中能夠處理該任務(wù)的任務(wù)執(zhí)行者(220)。在接收到任務(wù)之后,被分配任務(wù)的任務(wù)執(zhí)行者處理該任務(wù)(225)。
[0051]優(yōu)選地,在步驟225之后存在以下步驟,任務(wù)執(zhí)行者將包含表示執(zhí)行成功與否的結(jié)果返回給任務(wù)分發(fā)者(226),任務(wù)分發(fā)者判斷該執(zhí)行是否成功(227),若成功則將包含表示執(zhí)行成功與否的結(jié)果經(jīng)由任務(wù)分發(fā)者系統(tǒng)120及任務(wù)提交者系統(tǒng)110返回至數(shù)據(jù)庫
(228),若不成功則通知任務(wù)發(fā)布者進行消息報警,并通知任務(wù)提交者系統(tǒng)重新提交任務(wù)
(229)。
[0052]優(yōu)選地,當(dāng)需要關(guān)閉任務(wù)分發(fā)者系統(tǒng)時(例如任務(wù)分發(fā)者重啟或升級時),通過使用自定義命令實現(xiàn)任務(wù)分發(fā)者系統(tǒng)關(guān)機前的剩余任務(wù)處理,從而防止現(xiàn)有任務(wù)的丟失。
[0053]圖3示意性地示出了本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)的關(guān)閉服務(wù)器的方法流程圖。如圖3所不:
[0054]當(dāng)需要關(guān)閉任務(wù)分發(fā)者系統(tǒng)120時,通過任務(wù)提交者系統(tǒng)110向任務(wù)分發(fā)者系統(tǒng)120發(fā)送KILL_SERVER命令,該命令為使任務(wù)分發(fā)者系統(tǒng)120關(guān)機的命令(305),收到命令的任務(wù)分發(fā)者系統(tǒng)120首先停止接受新任務(wù)(310),并向任務(wù)執(zhí)行者系統(tǒng)130發(fā)送現(xiàn)有任務(wù)的集群命令。集群命令的目的是通知任務(wù)執(zhí)行者系統(tǒng)130收集現(xiàn)有任務(wù)并將其反饋給任務(wù)分發(fā)者系統(tǒng)120,當(dāng)任務(wù)分發(fā)者系統(tǒng)120再次開機時就可以重新分發(fā)本次集群收集到的現(xiàn)有任務(wù),從而避免因任務(wù)分發(fā)者系統(tǒng)120關(guān)機導(dǎo)致現(xiàn)有任務(wù)的丟失?,F(xiàn)有任務(wù)是指任務(wù)分發(fā)者系統(tǒng)120正在向任務(wù)執(zhí)行者系統(tǒng)130分發(fā)的任務(wù),以及任務(wù)執(zhí)行者系統(tǒng)130正在處理的任務(wù)(315)。收到命令的任務(wù)執(zhí)行者系統(tǒng)130將現(xiàn)有任務(wù)轉(zhuǎn)入集群(320),并將集群返回任務(wù)分發(fā)者系統(tǒng)120(325),然后任務(wù)分發(fā)者系統(tǒng)120關(guān)機(330)。
[0055]當(dāng)需要關(guān)閉任務(wù)分發(fā)者系統(tǒng)120時,例如,可以由管理員通過任務(wù)提交者系統(tǒng)110向任務(wù)分發(fā)者系統(tǒng)120發(fā)送KILL_SERVER命令。但是不限于,例如也可以通過在向任務(wù)提交者系統(tǒng)110設(shè)置定時指令來向任務(wù)分發(fā)者系統(tǒng)120發(fā)送KILL_SERVER命令。
[0056]優(yōu)選地,在步驟255之后存在將關(guān)閉任務(wù)分發(fā)者系統(tǒng)的執(zhí)行結(jié)果,例如是否成功關(guān)閉,發(fā)送至任務(wù)提交者。
[0057]利用本發(fā)明的分布式定時任務(wù)調(diào)度系統(tǒng)具有管理簡單、操作方便等特點,能夠解決程序數(shù)目較多,且管理混亂等問題。
[0058]結(jié)合這里披露的本發(fā)明的說明和實踐,本發(fā)明的其他實施例對于本領(lǐng)域技術(shù)人員都是易于想到和理解的。說明和實施例僅被認為是示例性的,本發(fā)明的真正范圍和主旨均由權(quán)利要求所限定。
【權(quán)利要求】
1.一種分布式定時任務(wù)調(diào)度方法,其特征在于,包括如下步驟: a)任務(wù)分發(fā)者系統(tǒng)啟動,監(jiān)聽任務(wù)提交者系統(tǒng)的提交任務(wù)和任務(wù)執(zhí)行者系統(tǒng)中的任務(wù)執(zhí)行者的注冊; b)所述任務(wù)執(zhí)行者系統(tǒng)啟動,自動向所述任務(wù)分發(fā)者系統(tǒng)注冊; c)所述任務(wù)提交者系統(tǒng)向所述任務(wù)分發(fā)者系統(tǒng)提交任務(wù); d)所述任務(wù)分發(fā)者系統(tǒng)收到任務(wù)后,通知所述任務(wù)執(zhí)行者系統(tǒng)中的已注冊的與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者來取走所述任務(wù); e)所述與所述任務(wù)對應(yīng)的任務(wù)執(zhí)行者取走所述任務(wù)并執(zhí)行所述任務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括關(guān)閉所述任務(wù)分發(fā)者系統(tǒng)的步驟如下: h)所述任務(wù)提交者系統(tǒng)向任務(wù)分發(fā)者系統(tǒng)發(fā)送表示關(guān)閉任務(wù)分發(fā)者系統(tǒng)的命令; i)所述任務(wù)分發(fā)者系統(tǒng)停止接受任務(wù); j)所述任務(wù)分發(fā)者系統(tǒng)向所述任務(wù)執(zhí)行者系統(tǒng)發(fā)送任務(wù)集群命令; k)所述任務(wù)執(zhí)行者系統(tǒng)將現(xiàn)有任務(wù)轉(zhuǎn)入集群; I)所述任務(wù)執(zhí)行者系統(tǒng)將包括現(xiàn)有任務(wù)的集群返回所述任務(wù)分發(fā)者; m)所述任務(wù)分發(fā)者系統(tǒng)關(guān)機。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟b中,所述任務(wù)提交者系統(tǒng)向所述任務(wù)分發(fā)者系統(tǒng)注冊的信息包括:每個所述任務(wù)執(zhí)行者的功能信息、唯一標(biāo)示、最大負載、及輸入輸出參數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟c中,所述任務(wù)提交者系統(tǒng)定時提交任務(wù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟e之后,向所述任務(wù)分發(fā)者系統(tǒng)返回包括表示任務(wù)執(zhí)行成功或任務(wù)異常的信息。
6.根據(jù)權(quán)利要求1和2所述的方法,其特征在于,從步驟a至步驟m都采用Gearman傳輸協(xié)議,請求和響應(yīng)被封裝成二進制數(shù)據(jù)包,所述二進制數(shù)據(jù)包包含一個文件頭以及數(shù)據(jù)內(nèi)容。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述二進制數(shù)據(jù)包僅包含數(shù)據(jù)內(nèi)容。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述文件頭的格式如下:所述文件頭為12個Byte,由4byte的Magic Code、4byte的消息類型和4byte的數(shù)據(jù)大小信息組成。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述任務(wù)提交者系統(tǒng)包括2個任務(wù)提交者,所述任務(wù)分發(fā)者系統(tǒng)包括2個任務(wù)分發(fā)者。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述任務(wù)提交者系統(tǒng)具有用戶界面接□。
【文檔編號】G06F9/46GK103577256SQ201310593626
【公開日】2014年2月12日 申請日期:2013年11月21日 優(yōu)先權(quán)日:2013年11月21日
【發(fā)明者】廖祿平, 朱廷發(fā), 蔡敏, 何正軍 申請人:五八同城信息技術(shù)有限公司