一種批量任務(wù)處理系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種Iinux下的批處理命令方案,用于方便Iinux服務(wù)器集群環(huán)境下的批量任務(wù)處理。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,服務(wù)器變得越來越多,現(xiàn)在普遍都采用服務(wù)器集群的方式進(jìn)行部署。很多情況下都需要所有的服務(wù)器進(jìn)行一些命令的執(zhí)行,比如,批量下載,批量同步服務(wù)器時(shí)間等。
[0003]現(xiàn)在普遍的做法是利用ssh做多機(jī)互信,然后用python編寫腳本來實(shí)現(xiàn)ssh批量登陸并執(zhí)行命令。這種做法可以比較有效地進(jìn)行服務(wù)器的批量命令處理,但同時(shí)也有著很強(qiáng)的局限性:
比如,如果有服務(wù)器的密碼變更了,或者服務(wù)器的IP地址變更了,都需要對(duì)腳本進(jìn)行改動(dòng),靈活度不高。其次,如果用戶想動(dòng)態(tài)地獲取一些命令的處理狀態(tài),比如某些服務(wù)器的命令處理結(jié)果,該方法也很不方便。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種批量任務(wù)處理系統(tǒng)及方法,實(shí)現(xiàn)服務(wù)器集群環(huán)境下的批量任務(wù)處理,適用于處理Iinux批量命令。
[0005]為了達(dá)到上述目的,本發(fā)明的一個(gè)技術(shù)方案是提供一種批量任務(wù)處理方法,將服務(wù)器集群中的一臺(tái)服務(wù)器設(shè)為主控制服務(wù)器,將服務(wù)器集群中的其他若干臺(tái)服務(wù)器設(shè)為從服務(wù)器;
所有的從服務(wù)器將其各自的狀態(tài)上報(bào)給主控制服務(wù)器;上報(bào)的狀態(tài)包含各從服務(wù)器自身的標(biāo)識(shí)及IP地址;
所述主控制服務(wù)器根據(jù)所述標(biāo)識(shí)及IP地址,來與相應(yīng)的從服務(wù)器進(jìn)行通信,向相應(yīng)的從服務(wù)器發(fā)送請(qǐng)求或接收其反饋的信息。
[0006]優(yōu)選地,所述主控制服務(wù)器通過設(shè)置的下發(fā)命令接口,向相應(yīng)的從服務(wù)器發(fā)送第一請(qǐng)求,請(qǐng)求從服務(wù)器執(zhí)行對(duì)其分配的相應(yīng)任務(wù);
所述從服務(wù)器通過設(shè)置的增加任務(wù)接口,向所述主控制服務(wù)器發(fā)送表示該從服務(wù)器接受所述第一請(qǐng)求并確認(rèn)會(huì)執(zhí)行相應(yīng)任務(wù)的反饋信息。
[0007]優(yōu)選地,所述主控制服務(wù)器通過設(shè)置的獲取命令執(zhí)行狀態(tài)接口,向相應(yīng)的從服務(wù)器發(fā)送第二請(qǐng)求,請(qǐng)求從服務(wù)器對(duì)其執(zhí)行的在先命令的狀態(tài)進(jìn)行反饋;
收到第二請(qǐng)求的從服務(wù)器通過設(shè)置的返回命令執(zhí)行狀態(tài)接口,向所述主控制服務(wù)器發(fā)送該從服務(wù)器執(zhí)行的在先命令的狀態(tài)。
[0008]優(yōu)選地,所述從服務(wù)器執(zhí)行的在先命令的狀態(tài),是在先命令執(zhí)行過程中的輸出信息,或者是表示在先命令沒有輸出且尚未結(jié)束的狀態(tài),或者是表示在先命令沒有輸出但已結(jié)束的狀態(tài)。
[0009]優(yōu)選地,所述從服務(wù)器定時(shí)地向主控制服務(wù)器上報(bào)該從服務(wù)器的狀態(tài);
所述主控制服務(wù)器根據(jù)各從服務(wù)器定時(shí)上報(bào)的狀態(tài),來確定相應(yīng)的從服務(wù)器是否在線。
[0010]優(yōu)選地,所述主控制服務(wù)器注冊(cè)有服務(wù)端口并對(duì)其進(jìn)行監(jiān)聽,當(dāng)有從服務(wù)器通過該服務(wù)端口向主控制服務(wù)器請(qǐng)求連接時(shí),所述主控制服務(wù)器記錄下請(qǐng)求連接的從服務(wù)器的狀態(tài)。
[0011]優(yōu)選地,所述從服務(wù)器上報(bào)狀態(tài)中的標(biāo)識(shí),是該從服務(wù)器的主機(jī)名稱。
[0012]本發(fā)明的另一個(gè)技術(shù)方案是提供一種批量任務(wù)處理系統(tǒng);服務(wù)器集群中的一臺(tái)服務(wù)器為主控制服務(wù)器,服務(wù)器集群中的其他若干臺(tái)服務(wù)器為從服務(wù)器;
通過主控制服務(wù)器設(shè)置的主控服務(wù)單元,和從服務(wù)器設(shè)置的被控服務(wù)單元,所述主控制服務(wù)器向從服務(wù)器發(fā)送請(qǐng)求或接收其反饋的信息;
所有的從服務(wù)器將其各自的狀態(tài)上報(bào)給主控制服務(wù)器;上報(bào)的狀態(tài)包含各從服務(wù)器自身的標(biāo)識(shí)及IP地址;
所述主控制服務(wù)器根據(jù)所述標(biāo)識(shí)及IP地址,來與相應(yīng)的從服務(wù)器進(jìn)行通信。
[0013]優(yōu)選地,所述主控制服務(wù)器與從服務(wù)器通過相應(yīng)設(shè)置的接口進(jìn)行通信,所述接口是以下的任意一種或其組合:
所述主控制服務(wù)器設(shè)置有下發(fā)命令接口,向相應(yīng)的從服務(wù)器發(fā)送要求從服務(wù)器執(zhí)行相應(yīng)任務(wù)的第一請(qǐng)求;所述從服務(wù)器設(shè)置有增加任務(wù)接口,來向所述主控制服務(wù)器發(fā)送表示該從服務(wù)器接受所述第一請(qǐng)求并確認(rèn)會(huì)執(zhí)行相應(yīng)任務(wù)的反饋信息;
所述主控制服務(wù)器設(shè)置有獲取命令執(zhí)行狀態(tài)接口,向相應(yīng)的從服務(wù)器發(fā)送要求從服務(wù)器對(duì)所執(zhí)行的在先命令的狀態(tài)進(jìn)行反饋的第二請(qǐng)求;從服務(wù)器設(shè)置有返回命令執(zhí)行狀態(tài)接口,向所述主控制服務(wù)器發(fā)送該從服務(wù)器執(zhí)行在先命令的狀態(tài)。
[0014]優(yōu)選地,所述從服務(wù)器設(shè)置有定時(shí)器,來控制該從服務(wù)器向主控制服務(wù)器定時(shí)上報(bào)狀態(tài)的周期。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明提供了一種批量任務(wù)處理系統(tǒng)及方法,其優(yōu)點(diǎn)在于:本發(fā)明實(shí)現(xiàn)了服務(wù)器集群環(huán)境下Iinux批量任務(wù)處理的方案。
[0016]根據(jù)本發(fā)明的方案,從服務(wù)器的IP地址不需要固定;優(yōu)選通過定時(shí)地上報(bào)其主機(jī)名稱和IP地址,使從服務(wù)器可以與主控制服務(wù)器正常通信,以便接收?qǐng)?zhí)行任務(wù)或反饋執(zhí)行狀態(tài)的相應(yīng)請(qǐng)求。根據(jù)從服務(wù)器反饋的信息,本發(fā)明還可以實(shí)時(shí)動(dòng)態(tài)地查看從服務(wù)器對(duì)命令執(zhí)行的狀態(tài)。
【附圖說明】
[0017]圖1是本發(fā)明所述批量任務(wù)處理系統(tǒng)的整體架構(gòu)示意圖;
圖2是本發(fā)明所述批量任務(wù)處理方法中主控制服務(wù)器的一個(gè)示例的執(zhí)行流程圖;
圖3是本發(fā)明所述批量任務(wù)處理方法中任意一個(gè)從服務(wù)器的一個(gè)示例的執(zhí)行流程圖。
【具體實(shí)施方式】
[0018]以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施方式進(jìn)行具體闡述。
[0019]本發(fā)明提供一種批量任務(wù)處理系統(tǒng)及方法,用來實(shí)現(xiàn)服務(wù)器集群環(huán)境下的批量任務(wù)處理,適用于處理Iinux批量命令。
[0020]如圖1所示,是所述批量任務(wù)處理系統(tǒng)的整體架構(gòu)圖。所有的集群服務(wù)器中,有一臺(tái)作為主控制服務(wù)器,其它的都作為被控制的從服務(wù)器。主控制服務(wù)器裝有主控服務(wù)單元及配套程序,從服務(wù)器裝有被控服務(wù)單元及配套程序,兩者配合實(shí)現(xiàn)本發(fā)明下文描述的相應(yīng)方案:
在整個(gè)服務(wù)器集群中,所有的從服務(wù)器都會(huì)將包含該從服務(wù)器狀態(tài)的信息上報(bào)到主控制服務(wù)器。并且,各從服務(wù)器上報(bào)的狀態(tài),包含該從服務(wù)器的主機(jī)名稱和IP地址。從服務(wù)器可以設(shè)置定時(shí)器,定時(shí)地上報(bào)信息,例如將定時(shí)器的周期設(shè)為30秒。
[0021]本發(fā)明中,主控制服務(wù)器的IP地址固定,而從服務(wù)器的IP地址不需要固定。由于每臺(tái)服務(wù)器都有自己的主機(jī)名稱,這樣不管該服務(wù)器(尤其指從服務(wù)器)的IP地址如何變更,都不會(huì)影響其正常通信。在其他的示例中,除服務(wù)器的主機(jī)名稱以外,也可以使用其他一些通常不容易變更的標(biāo)識(shí),來分辨各個(gè)不同的服務(wù)器(尤其指從服務(wù)器)。
[0022]主控制服務(wù)器通過這些定時(shí)上報(bào)的信息,得知相應(yīng)的從服務(wù)器是否在線:如果不在線,主控制服務(wù)器通知系統(tǒng)管理員對(duì)該從服務(wù)器的狀態(tài)及時(shí)進(jìn)行檢查。
[0023]主控制服務(wù)器除了根據(jù)定時(shí)向其上報(bào)的信息,來檢測(cè)從服務(wù)器的狀態(tài)外,還要能對(duì)從服務(wù)器下發(fā)命令,并且能獲取從服務(wù)器反饋的執(zhí)行狀態(tài)。為此,在主控制服務(wù)器與從服務(wù)器之間實(shí)現(xiàn)兩組相應(yīng)的接口:即,在主控制服務(wù)器處實(shí)現(xiàn)下發(fā)命令的接口,和獲取命令執(zhí)行狀態(tài)的接口。
[0024]下發(fā)命令的接口定義如下:
{ “CmdType”:”AddTask”,”CmdID”:η, ”CmdContent”:”mkdir /usr/local/src/test,,}
其中,CmdType是命令類型;此處AddTask為增加任務(wù);CmdID是命令的ID號(hào),該號(hào)逐個(gè)遞增;CmdContent是命令內(nèi)容;上述mkdir /usr/local/src/test是命令的一個(gè)示例。
[0025]獲取命令執(zhí)行狀態(tài)的接口,定義如下:
{ “CmdType”: ”GetCmdStatus”,”CmdID”:n}
其中,CmdType是命令類型;此處GetCmdStatus是獲取命令的執(zhí)行狀態(tài);CmdID是指具體要獲取哪條命令的狀態(tài)。
[0026]對(duì)于從服務(wù)器而言,其主要任務(wù)是響應(yīng)主控制服務(wù)器的請(qǐng)求,就其接受下發(fā)命令而增加該從服務(wù)器所執(zhí)行任務(wù)的情況進(jìn)行反饋,即實(shí)現(xiàn)增加任務(wù)的接口來回應(yīng)主控制服務(wù)器的上述請(qǐng)求,該接口的定義如下:
{ “CmdType”:”RecvTask”,”CmdID”:n, ”CmdStatus” ,received”}
其中,CmdType是命令類型;RecVTask是指接受到命令;CmdID是接受到的命令的ID號(hào);CmdStatus是命令的狀態(tài)為received,表示已經(jīng)接受。
[0027]另外,從服務(wù)器還需要實(shí)現(xiàn)返回命令執(zhí)行狀態(tài)的接口,定義如下:
{ “CmdType”: ” RespCmdStatus ”,” CmdID”:n, ” CmdStatus” ,finished”}
其中,CmdType是命令類型,RespCmdStatus是回應(yīng)命令的執(zhí)行狀態(tài),CmdID是命令的ID號(hào),CmdStatus是命令的執(zhí)行狀態(tài),該狀態(tài)由該命令自身決定:
當(dāng)前第1頁(yè)
1 
2