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