應(yīng)用任務(wù)的執(zhí)行控制方法和系統(tǒng)、消息服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及業(yè)務(wù)系統(tǒng)領(lǐng)域,尤其涉及一種應(yīng)用任務(wù)的執(zhí)行控制方法和系統(tǒng)、消息服務(wù)器。
【背景技術(shù)】
[0002]企業(yè)中的業(yè)務(wù)系統(tǒng)都會(huì)部署在同一個(gè)集群環(huán)境下,有些業(yè)務(wù)系統(tǒng)涉及到一些后臺(tái)的應(yīng)用任務(wù)的執(zhí)行,應(yīng)用任務(wù)的執(zhí)行是通過(guò)開(kāi)源quartz來(lái)實(shí)現(xiàn)的,如果不加任何限制,導(dǎo)致達(dá)到任務(wù)指定的執(zhí)行時(shí)間點(diǎn)時(shí)集群中的多臺(tái)服務(wù)器都運(yùn)行任務(wù),使得該任務(wù)重復(fù)執(zhí)行多次;如果為了避免同一任務(wù)被重復(fù)執(zhí)行,可將集群中的某一臺(tái)服務(wù)器上單獨(dú)部署任務(wù),但單獨(dú)部署任務(wù)可能導(dǎo)致在開(kāi)發(fā)過(guò)程中要維護(hù)兩份程序代碼或者在發(fā)布時(shí)修改配置項(xiàng)來(lái)完成,增加系統(tǒng)發(fā)布的復(fù)雜性。
【發(fā)明內(nèi)容】
[0003]在下文中給出關(guān)于本發(fā)明的簡(jiǎn)要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理解。應(yīng)當(dāng)理解,這個(gè)概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān)鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡(jiǎn)化的形式給出某些概念,以此作為稍后論述的更詳細(xì)描述的前序。
[0004]—方面,本發(fā)明提供一種應(yīng)用任務(wù)的執(zhí)行控制方法,包括:
[0005]通過(guò)消息服務(wù)器接收同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的至少二份對(duì)應(yīng)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,根據(jù)接收到的注冊(cè)請(qǐng)求對(duì)相應(yīng)業(yè)務(wù)服務(wù)器進(jìn)行注冊(cè);
[0006]所述消息服務(wù)器接收所述同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的對(duì)應(yīng)同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,選擇接受其中一啟動(dòng)請(qǐng)求并控制選中的啟動(dòng)請(qǐng)求對(duì)應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0007]另一方面,本發(fā)明還提供一種消息服務(wù)器,包括;
[0008]注冊(cè)模塊,用于接收同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的至少二份對(duì)應(yīng)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,根據(jù)接收到的注冊(cè)請(qǐng)求對(duì)相應(yīng)業(yè)務(wù)服務(wù)器進(jìn)行注冊(cè);
[0009]啟動(dòng)控制模塊,用于接收所述同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的對(duì)應(yīng)同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,選擇接受其中一啟動(dòng)請(qǐng)求并控制選中的啟動(dòng)請(qǐng)求對(duì)應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0010]本發(fā)明還提供一種應(yīng)用任務(wù)的執(zhí)行控制系統(tǒng),包括:
[0011]上述的消息服務(wù)器、以及由多個(gè)業(yè)務(wù)服務(wù)器組成、且分別與所述消息服務(wù)器通信連接的業(yè)務(wù)服務(wù)器集群;
[0012]所述消息服務(wù)器用于接收所述業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的至少二份對(duì)應(yīng)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,根據(jù)接收到的注冊(cè)請(qǐng)求對(duì)相應(yīng)業(yè)務(wù)服務(wù)器進(jìn)行注冊(cè);接收所述業(yè)務(wù)服務(wù)器集群發(fā)送的對(duì)應(yīng)同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,選擇接受其中一啟動(dòng)請(qǐng)求并控制選中的啟動(dòng)請(qǐng)求對(duì)應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0013]本發(fā)明提供的應(yīng)用任務(wù)的執(zhí)行控制方法和系統(tǒng)、消息服務(wù)器,可保證應(yīng)用任務(wù)只在一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行,系統(tǒng)架構(gòu)簡(jiǎn)單且可靠性高。
【附圖說(shuō)明】
[0014]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0015]圖1為本發(fā)明提供的應(yīng)用任務(wù)的執(zhí)行控制方法一種實(shí)施例的流程圖。
[0016]圖2為本發(fā)明提供的應(yīng)用任務(wù)的執(zhí)行控制方法一種應(yīng)用場(chǎng)景的示意圖。
[0017]圖3為本發(fā)明提供的消息服務(wù)器一種實(shí)施例的結(jié)構(gòu)示意圖。
[0018]圖4為本發(fā)明提供的應(yīng)用任務(wù)的執(zhí)行控制系統(tǒng)一種實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。在本發(fā)明的一個(gè)附圖或一種實(shí)施方式中描述的元素和特征可以與一個(gè)或更多個(gè)其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng)當(dāng)注意,為了清楚的目的,附圖和說(shuō)明中省略了與本發(fā)明無(wú)關(guān)的、本領(lǐng)域普通技術(shù)人員已知的部件和處理的表示和描述?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有付出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0020]實(shí)施例一
[0021]參考圖1,本實(shí)施例提供一種應(yīng)用任務(wù)的執(zhí)行控制方法,包括:
[0022]步驟S101,通過(guò)消息服務(wù)器接收同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的至少二份對(duì)應(yīng)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,根據(jù)接收到的注冊(cè)請(qǐng)求對(duì)相應(yīng)業(yè)務(wù)服務(wù)器進(jìn)行注冊(cè);
[0023]步驟S102,所述消息服務(wù)器接收所述同一業(yè)務(wù)服務(wù)器集群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的對(duì)應(yīng)同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,選擇接受其中一啟動(dòng)請(qǐng)求并控制選中的啟動(dòng)請(qǐng)求對(duì)應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0024]消息服務(wù)器與業(yè)務(wù)服務(wù)器集群通信連接,業(yè)務(wù)服務(wù)器集群為一個(gè)集群環(huán)境,包括多個(gè)業(yè)務(wù)服務(wù)器,業(yè)務(wù)系統(tǒng)部署在該集群環(huán)境下。
[0025]應(yīng)用任務(wù)建立時(shí)業(yè)務(wù)服務(wù)器集群的多個(gè)業(yè)務(wù)服務(wù)器分別創(chuàng)建應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,并分別向消息服務(wù)器發(fā)送注冊(cè)請(qǐng)求以進(jìn)行注冊(cè),當(dāng)部署在對(duì)該業(yè)務(wù)服務(wù)器集群下的應(yīng)用任務(wù)需要執(zhí)行時(shí),多個(gè)業(yè)務(wù)服務(wù)器分別向消息服務(wù)器發(fā)送所述應(yīng)用任務(wù)的啟動(dòng)請(qǐng)求,消息服務(wù)器只選擇接受其中一個(gè)啟動(dòng)請(qǐng)求,并控制相應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行該應(yīng)用任務(wù),由此保證應(yīng)用任務(wù)只在一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行。
[0026]應(yīng)用任務(wù)的注冊(cè)請(qǐng)求由業(yè)務(wù)服務(wù)器集群的多個(gè)不同的業(yè)務(wù)服務(wù)器創(chuàng)建,或者,由同一業(yè)務(wù)服務(wù)器創(chuàng)建多個(gè)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,即可以在同一個(gè)業(yè)務(wù)服務(wù)器上將一個(gè)應(yīng)用任務(wù)部署多份。
[0027]具體地,每個(gè)業(yè)務(wù)服務(wù)器創(chuàng)建所述應(yīng)用任務(wù)的注冊(cè)請(qǐng)求時(shí),為相應(yīng)的應(yīng)用任務(wù)分配唯一的標(biāo)識(shí)信息,標(biāo)識(shí)信息包括業(yè)務(wù)服務(wù)器的節(jié)點(diǎn)信息以及應(yīng)用任務(wù)執(zhí)行的時(shí)間信息。
[0028]Quartz提供了以消息服務(wù)器的方式來(lái)協(xié)調(diào)應(yīng)用任務(wù)的調(diào)度,從一定程度上解決了集群下多點(diǎn)運(yùn)行的問(wèn)題,但是如果在同一個(gè)業(yè)務(wù)服務(wù)器上將同一個(gè)任務(wù)部署多份,則默認(rèn)的消息服務(wù)器無(wú)法控制此類任務(wù),因?yàn)橄⒎?wù)器以應(yīng)用任務(wù)所在節(jié)點(diǎn)的業(yè)務(wù)服務(wù)器作為名稱;如果多個(gè)不同的應(yīng)用任務(wù)在同一個(gè)業(yè)務(wù)服務(wù)器,則會(huì)被認(rèn)為是一個(gè)應(yīng)用任務(wù)被執(zhí)行了多次,因此,本實(shí)施例提供的應(yīng)用任務(wù)的執(zhí)行控制方法中,為相應(yīng)的應(yīng)用任務(wù)分配唯一的標(biāo)識(shí)信息,包括:
[0029]獲取業(yè)務(wù)服務(wù)器的節(jié)點(diǎn)名稱、所述應(yīng)用任務(wù)的執(zhí)行時(shí)間以及隨機(jī)字符串,隨機(jī)字符串以UUID的方式生成;
[0030]對(duì)節(jié)點(diǎn)名稱、執(zhí)行時(shí)間以及隨機(jī)字符串取hash值,即通過(guò)散列算法進(jìn)行計(jì)算,得出的整形數(shù)字即為標(biāo)識(shí)信息。
[0031]標(biāo)識(shí)信息以#hostname#timestamp#隨機(jī)字符串.hash的方式來(lái)唯一標(biāo)識(shí)同一個(gè)業(yè)務(wù)服務(wù)器上的一個(gè)應(yīng)用任務(wù),其中隨機(jī)字符串以通用唯一識(shí)別碼(UUID,UniversallyUnique Identifier)方式生成,對(duì)#hostname#timestamp#隨機(jī)字符串通過(guò)hash (散列)算法,可生成固定長(zhǎng)度的整形數(shù)字。
[0032]當(dāng)要使用Quartz進(jìn)行應(yīng)用任務(wù)調(diào)度時(shí),采用上述的#hostname#timestamp#隨機(jī)字符串.hash覆蓋默認(rèn)的配置。
[0033]注冊(cè)時(shí),各個(gè)業(yè)務(wù)服務(wù)器分別將注冊(cè)請(qǐng)求發(fā)送至消息服務(wù)器,該注冊(cè)請(qǐng)求包括相應(yīng)的標(biāo)識(shí)信息;當(dāng)?shù)较鄳?yīng)的應(yīng)用任務(wù)執(zhí)行時(shí)刻,各個(gè)業(yè)務(wù)服務(wù)器分別同時(shí)向消息服務(wù)器發(fā)送啟動(dòng)請(qǐng)求;消息服務(wù)器根據(jù)投票策略,隨機(jī)選擇接受其中一啟動(dòng)請(qǐng)求并控制相應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行該應(yīng)用任務(wù),保證該應(yīng)用任務(wù)只在唯一一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行。
[0034]作為一種可選的實(shí)施方式,消息服務(wù)器包括熱備份的主消息服務(wù)器和從消息服務(wù)器,當(dāng)業(yè)務(wù)服務(wù)器集群無(wú)法連接主消息服務(wù)器時(shí),自動(dòng)切換連接到從消息服務(wù)器。
[0035]正常情況下主消息服務(wù)器接收業(yè)務(wù)服務(wù)器集群發(fā)送的應(yīng)用任務(wù)的注冊(cè)請(qǐng)求和啟動(dòng)請(qǐng)求,當(dāng)業(yè)務(wù)服務(wù)器集群無(wú)法連接主消息服務(wù)器時(shí),自動(dòng)切換連接到從消息服務(wù)器,從消息服務(wù)器負(fù)責(zé)接收業(yè)務(wù)服務(wù)器集群發(fā)送的應(yīng)用任務(wù)的注冊(cè)請(qǐng)求和啟動(dòng)請(qǐng)求,主消息服務(wù)器和從消息服務(wù)器上的數(shù)據(jù)實(shí)時(shí)一致,依靠自身提供的復(fù)制機(jī)制實(shí)現(xiàn)。
[0036]作為一種可選的實(shí)施方式,當(dāng)主消息服務(wù)器從不可用狀態(tài)恢復(fù)至可用狀態(tài)時(shí),業(yè)務(wù)服務(wù)器集群自動(dòng)切換連接至主消息服務(wù)器。
[0037]通過(guò)熱備份的主消息服務(wù)器和從消息服務(wù)器,能夠有效提高消息服務(wù)器的負(fù)載和容錯(cuò)能力。
[0038]參考圖2,圖2為本實(shí)施例提供的應(yīng)用任務(wù)的執(zhí)行控制方法一種應(yīng)用場(chǎng)景的示意圖,消息服務(wù)器還可對(duì)應(yīng)用任務(wù)的調(diào)度情況進(jìn)行記錄和存儲(chǔ),并發(fā)送至目標(biāo)地址,維護(hù)人員可以直觀的看到各個(gè)應(yīng)用任務(wù)的明細(xì)。
[0039]本實(shí)施例提供的應(yīng)用任務(wù)的執(zhí)行控制方法,可保證應(yīng)用任務(wù)只在一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行,系統(tǒng)容錯(cuò)能力和負(fù)載能力較高,可靠性強(qiáng)且結(jié)構(gòu)簡(jiǎn)單。
[0040]實(shí)施例二
[0041]參考圖3,本實(shí)施例提供一種消息服務(wù)器,包括:
[0042]注冊(cè)模塊101,用于接收同一業(yè)務(wù)服務(wù)器集103群中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的至少二份對(duì)應(yīng)相同應(yīng)用任務(wù)的注冊(cè)請(qǐng)求,根據(jù)接收到的注冊(cè)請(qǐng)求對(duì)相應(yīng)業(yè)務(wù)服務(wù)器進(jìn)行注
ΠΠ
冊(cè);
[0043]啟動(dòng)控制模塊102,用于接收所述同一業(yè)務(wù)服務(wù)器集群103中至少二個(gè)業(yè)務(wù)服務(wù)器發(fā)送的對(duì)應(yīng)同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,選擇接受其中一啟動(dòng)請(qǐng)求并控制選中的啟動(dòng)請(qǐng)求對(duì)應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0044]作為一種可選的實(shí)施方式,啟動(dòng)控制模塊102還用于接收同一應(yīng)用任務(wù)的多個(gè)啟動(dòng)請(qǐng)求,根據(jù)投票策略選擇接受其中一啟動(dòng)請(qǐng)求并控制相應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行所述應(yīng)用任務(wù)。
[0045]注冊(cè)時(shí),業(yè)務(wù)服務(wù)器集群103中的各個(gè)業(yè)務(wù)服務(wù)器分別將注冊(cè)請(qǐng)求發(fā)送至注冊(cè)模塊101,該注冊(cè)請(qǐng)求包括相應(yīng)的標(biāo)識(shí)信息;當(dāng)?shù)较鄳?yīng)的應(yīng)用任務(wù)執(zhí)行時(shí)刻,各個(gè)業(yè)務(wù)服務(wù)器分別同時(shí)向啟動(dòng)控制模塊102發(fā)送啟動(dòng)請(qǐng)求;啟動(dòng)控制模塊102根據(jù)投票策略,隨機(jī)選擇接受其中一啟動(dòng)請(qǐng)求并控制相應(yīng)的業(yè)務(wù)服務(wù)器執(zhí)行該應(yīng)用任務(wù),保證該應(yīng)用任務(wù)只在唯一一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行。
[0046]本實(shí)施例提供的消息服務(wù)器,可控制應(yīng)用任務(wù)只在與之相連的一個(gè)業(yè)務(wù)服務(wù)器上執(zhí)行,可靠性強(qiáng)且結(jié)構(gòu)簡(jiǎn)單。
[0047]實(shí)施例三
[0048]參考圖4,本實(shí)施例提供一種應(yīng)用任務(wù)的執(zhí)行控制系統(tǒng),包括:
[0049]消息服務(wù)器201、以及由多個(gè)業(yè)務(wù)服務(wù)器203組成、且分別與消息服務(wù)器201通信連接的業(yè)務(wù)