本發(fā)明涉及服務(wù)器技術(shù)領(lǐng)域,更具體地說,涉及一種服務(wù)器集群事件處理方法。
背景技術(shù):
隨著服務(wù)器處理數(shù)據(jù)的增多,以及對(duì)服務(wù)器處理性能要求的提高,單服務(wù)器已經(jīng)無法滿足用戶需求。服務(wù)器集群具有高性價(jià)比、高可用性、高擴(kuò)展型的特點(diǎn),在性能上可以滿足大量數(shù)據(jù)快速處理的需求。
在服務(wù)器集群工作過程中,不斷有服務(wù)器加入、退出等操作?,F(xiàn)有的事件分配機(jī)制是,源節(jié)點(diǎn)對(duì)目標(biāo)節(jié)點(diǎn)直接發(fā)送。無法利用新加入的服務(wù)器繼續(xù)合理分配,以及在服務(wù)器退出集群后,容易造成數(shù)據(jù)丟失。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提出一種服務(wù)器集群事件處理方法,欲實(shí)現(xiàn)有效進(jìn)行事件分配,提高集群性能的目的。
為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種服務(wù)器集群事件處理方法,包括:
在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
優(yōu)選的,所述每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理,具體包括:
每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序判斷是否需要自身執(zhí)行,如果需要,則執(zhí)行事件對(duì)應(yīng)的動(dòng)作。
優(yōu)選的,所述主服務(wù)器為第一個(gè)加入所述服務(wù)器集群的服務(wù)器。
優(yōu)選的,所述服務(wù)器集群中的所述主服務(wù)器以及每個(gè)從服務(wù)器均保存一個(gè)在線服務(wù)器列表,所述在線服務(wù)器列表包含所述服務(wù)器集群中的所有在線服務(wù)器的標(biāo)識(shí)。
優(yōu)選的,上述一種服務(wù)器集群事件處理方法還包括:
當(dāng)新服務(wù)器加入服務(wù)器集群時(shí),所述新服務(wù)器向所述主服務(wù)器發(fā)送加入消息;
所述主服務(wù)器接收到所述新服務(wù)器的加入消息后,將所述新服務(wù)器的標(biāo)識(shí)加入所述主服務(wù)器保存的在線服務(wù)器列表,并將所述新服務(wù)器的加入消息發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
每個(gè)從服務(wù)器根據(jù)接收的所述新服務(wù)器的加入消息,將所述新服務(wù)器的標(biāo)識(shí)加入各自保存的在線服務(wù)器列表。
優(yōu)選的,上述一種服務(wù)器集群事件處理方法還包括:
當(dāng)?shù)谝粡姆?wù)器退出所述服務(wù)器集群時(shí),所述第一從服務(wù)器向所述主服務(wù)器發(fā)送退出消息;
所述主服務(wù)器接收到所述第一從服務(wù)器的退出消息后,將所述第一服務(wù)器的標(biāo)識(shí)從所述主服務(wù)器保存的在線服務(wù)器列表中刪除,并將所述第一從服務(wù)器的退出消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
每個(gè)從服務(wù)器根據(jù)接收的所述第一從服務(wù)器的退出消息,將所述第一從服務(wù)器的標(biāo)識(shí)從各自保存的在線服務(wù)器列表中刪除。
優(yōu)選的,上述一種服務(wù)器集群事件處理方法還包括:
當(dāng)所述主服務(wù)器經(jīng)過預(yù)設(shè)時(shí)間未收到所述服務(wù)器集群內(nèi)第二從服務(wù)器的消息時(shí),則認(rèn)為所述第二從服務(wù)器退出所述服務(wù)器集群,將所述第二從服務(wù)器的標(biāo)識(shí)從所述主服務(wù)器保存的在線服務(wù)器列表中刪除,并將所述第二從服務(wù)器的退出消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
每個(gè)從服務(wù)器根據(jù)接收的所述第二從服務(wù)器的退出消息,將所述第二從服務(wù)器的標(biāo)識(shí)從各自保存的在線服務(wù)器列表中刪除。
優(yōu)選的,上述一種服務(wù)器集群事件處理方法還包括:
若所述第二從服務(wù)器接收到所述主服務(wù)器的發(fā)送的所述第二從服務(wù)器的退出消息后,向所述主服務(wù)器發(fā)送加入服務(wù)器集群消息;
所述主服務(wù)器接收到所述第二從服務(wù)器的加入消息后,將所述第二從服務(wù)器的標(biāo)識(shí)加入到所述主服務(wù)器保存的在線服務(wù)器列表,并將所述第二從服務(wù)器的加入消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
每個(gè)從服務(wù)器根據(jù)接收的所述第二從服務(wù)器的加入消息,將所述第二從服務(wù)器的標(biāo)識(shí)加入各自保存的在線服務(wù)器列表中。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有以下優(yōu)點(diǎn):
上述技術(shù)方案提供一種服務(wù)器集群事件處理方法,包括:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。通過主服務(wù)器實(shí)現(xiàn)事件的廣播發(fā)送,對(duì)事件統(tǒng)一分配,有效進(jìn)行了事件分配,提高集群性能的目的。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種服務(wù)器集群事件處理方法的流程圖;
圖2為本發(fā)明實(shí)施例提供的另一種服務(wù)器集群事件處理方法的流程圖;
圖3為本發(fā)明實(shí)施例提供的另一種服務(wù)器集群事件處理方法的流程圖;
圖4為本發(fā)明實(shí)施例提供的另一種服務(wù)器集群事件處理方法的流程圖;
圖5為本發(fā)明實(shí)施例提供的另一種服務(wù)器集群事件處理方法的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本實(shí)施例提供一種服務(wù)器集群事件處理方法,參見圖1,該方法可以包括:
步驟s11:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
指定服務(wù)器集群中一個(gè)服務(wù)器為主服務(wù)器,其它服務(wù)器為從服務(wù)器。當(dāng)某個(gè)從服務(wù)器有數(shù)據(jù)輸入或硬件環(huán)境發(fā)生變化時(shí),該從服務(wù)器生成相應(yīng)事件,并將該事件上傳至主服務(wù)器。例如,在從服務(wù)器上執(zhí)行修改自身名稱的命令,從服務(wù)器將這部分?jǐn)?shù)據(jù)輸入生成事件,并將該事件上傳至主服務(wù)器;在某個(gè)從服務(wù)器掛上一塊硬盤,該從服務(wù)器檢測(cè)到硬件環(huán)境變化,生成事件,將該事件上傳至主服務(wù)器。
步驟s12:所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
主服務(wù)器可以按照接收時(shí)間對(duì)接收的到事件進(jìn)行編號(hào)。并將事件分配給相應(yīng)從服務(wù)器進(jìn)行執(zhí)行。具體的進(jìn)行分配處理后的事件包含nodeindex編號(hào)。
步驟s13:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
每個(gè)從服務(wù)器接收到事件后,將接收到的事件包含的nodeindex編號(hào),與自身保存的nodeindex編號(hào)比較,相同則執(zhí)行事件對(duì)應(yīng)的動(dòng)作,不相同則不進(jìn)行相應(yīng)動(dòng)作。
本實(shí)施例提供的一種服務(wù)器集群事件處理方法,通過主服務(wù)器實(shí)現(xiàn)事件的廣播發(fā)送,對(duì)事件統(tǒng)一分配,有效進(jìn)行了事件分配,提高集群性能的目的。
每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理,具體可以包括:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序判斷是否需要自身執(zhí)行,如果需要,則執(zhí)行事件對(duì)應(yīng)的動(dòng)作。
優(yōu)選的,可以指定第一個(gè)加入服務(wù)器集群的服務(wù)器為主服務(wù)器。
為實(shí)現(xiàn)集群內(nèi)服務(wù)器的管理,服務(wù)器集群中的主服務(wù)器以及每個(gè)從服務(wù)器均保存一個(gè)在線服務(wù)器列表,在線服務(wù)器列表包含服務(wù)器集群中的所有在線服務(wù)器的標(biāo)識(shí)。
本實(shí)施例提供了另一種服務(wù)器集群事件處理方法,參見圖2,該方法可以包括:
步驟s21:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
步驟s22:所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
步驟s23:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
步驟s24:當(dāng)新服務(wù)器加入服務(wù)器集群時(shí),所述新服務(wù)器向所述主服務(wù)器發(fā)送加入消息;
第一個(gè)加入服務(wù)器集群的為主服務(wù)器,再有新的服務(wù)器加入服務(wù)器集群時(shí),該新服務(wù)器需要向主服務(wù)器發(fā)送加入消息。
步驟s25:所述主服務(wù)器接收到所述新服務(wù)器的加入消息后,將所述新服務(wù)器的標(biāo)識(shí)加入所述主服務(wù)器保存的在線服務(wù)器列表,并將所述新服務(wù)器的加入消息發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
主服務(wù)器更新自己保存的在線服務(wù)器列表。并且主服務(wù)器通過廣播發(fā)送,將新服務(wù)器加入服務(wù)器集群的消息,告知服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器。主服務(wù)器維護(hù)服務(wù)器集群內(nèi)的在線服務(wù)器列表,可以有效實(shí)現(xiàn)服務(wù)器集群內(nèi)服務(wù)器的管理,有利于維護(hù)服務(wù)器集群。在主服務(wù)器只會(huì)將事件分配給服務(wù)器集群內(nèi)的在線服務(wù)器。
步驟s26:每個(gè)從服務(wù)器根據(jù)接收的所述新服務(wù)器的加入消息,將所述新服務(wù)器的標(biāo)識(shí)加入各自保存的在線服務(wù)器列表。
每個(gè)從服務(wù)器根據(jù)主服務(wù)器的廣播消息,更新自己的在線服務(wù)器列表。服務(wù)器集群內(nèi)的每個(gè)服務(wù)器都可以了解其他服務(wù)器的在線情況。假如主服務(wù)器退出服務(wù)器集群后,從服務(wù)器了解服務(wù)器集群內(nèi)的服務(wù)器在線情況,可以代替主服務(wù)器工作。
上述步驟s21、s22、s23分別與步驟s11、s12、s13相同,不再贅述。
本實(shí)施例提供了另一種服務(wù)器集群事件處理方法,參見圖3,該方法可以包括:
步驟s31:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
步驟s32:所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
步驟s33:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
步驟s34:當(dāng)?shù)谝粡姆?wù)器退出所述服務(wù)器集群時(shí),所述第一從服務(wù)器向所述主服務(wù)器發(fā)送退出消息;
本發(fā)明實(shí)施例中稱退出服務(wù)器集群的從服務(wù)器為第一從服務(wù)器。從服務(wù)器主動(dòng)退出集群時(shí),向主服務(wù)器發(fā)送退出消息。
步驟s35:所述主服務(wù)器接收到所述第一從服務(wù)器的退出消息后,將所述第一服務(wù)器的標(biāo)識(shí)從所述主服務(wù)器保存的在線服務(wù)器列表中刪除,并將所述第一從服務(wù)器的退出消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
主服務(wù)器將第一從服務(wù)器的標(biāo)識(shí)從自己維護(hù)的在線服務(wù)器列表中刪除后,將第一從服務(wù)器的退出消息,告訴服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器。
步驟s36:每個(gè)從服務(wù)器根據(jù)接收的所述第一從服務(wù)器的退出消息,將所述第一從服務(wù)器的標(biāo)識(shí)從各自保存的在線服務(wù)器列表中刪除。
每個(gè)從服務(wù)器根據(jù)主服務(wù)器的廣播消息,更新各自維護(hù)的在線服務(wù)器列表。
上述步驟s31、s32、s33分別與步驟s11、s12、s13相同,不再贅述。
本實(shí)施例提供了另一種服務(wù)器集群事件處理方法,參見圖4,該方法可以包括:
步驟s41:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
步驟s42:所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
步驟s43:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
步驟s44:當(dāng)所述主服務(wù)器經(jīng)過預(yù)設(shè)時(shí)間未收到所述服務(wù)器集群內(nèi)第二從服務(wù)器的消息時(shí),則認(rèn)為所述第二從服務(wù)器退出所述服務(wù)器集群,將所述第二從服務(wù)器的標(biāo)識(shí)從所述主服務(wù)器保存的在線服務(wù)器列表中刪除,并將所述第二從服務(wù)器的退出消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
本發(fā)明實(shí)施例中稱經(jīng)過預(yù)設(shè)時(shí)間未向主服務(wù)器發(fā)送消息的從服務(wù)器為第二從服務(wù)器。當(dāng)主服務(wù)器長(zhǎng)時(shí)間未收到某個(gè)從服務(wù)器的消息后,則認(rèn)為該從服務(wù)器退出了服務(wù)器集群,更新自己維護(hù)的在線服務(wù)器列表,并廣播告知每個(gè)從服務(wù)器。
步驟s45:每個(gè)從服務(wù)器根據(jù)接收的所述第二從服務(wù)器的退出消息,將所述第二從服務(wù)器的標(biāo)識(shí)從各自保存的在線服務(wù)器列表中刪除。
每個(gè)從服務(wù)器根據(jù)主服務(wù)器的廣播消息,更新各自維護(hù)的在線服務(wù)器列表。
上述步驟s41、s42、s43分別與步驟s11、s12、s13相同,不再贅述。
本實(shí)施例提供了另一種服務(wù)器集群事件處理方法,參見圖5,該方法可以包括:
步驟s51:在檢測(cè)到有數(shù)據(jù)輸入或自身硬件環(huán)境發(fā)生變化時(shí),從服務(wù)器生成相應(yīng)事件,并將生成的事件發(fā)送至主服務(wù)器;
步驟s52:所述主服務(wù)器對(duì)接收到的事件進(jìn)行編號(hào)和分配處理,并將處理后的事件發(fā)送至服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
步驟s53:每個(gè)從服務(wù)器對(duì)接收到的事件按照編號(hào)順序進(jìn)行處理。
步驟s54:當(dāng)所述主服務(wù)器經(jīng)過預(yù)設(shè)時(shí)間未收到所述服務(wù)器集群內(nèi)第二從服務(wù)器的消息時(shí),則認(rèn)為所述第二從服務(wù)器退出所述服務(wù)器集群,將所述第二從服務(wù)器的標(biāo)識(shí)從所述主服務(wù)器保存的在線服務(wù)器列表中刪除,并將所述第二從服務(wù)器的退出消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
需要說明的是,步驟s54中服務(wù)器集群內(nèi)的每個(gè)服務(wù)器包括第二從服務(wù)器。
步驟s55:每個(gè)從服務(wù)器根據(jù)接收的所述第二從服務(wù)器的退出消息,將所述第二從服務(wù)器的標(biāo)識(shí)從各自保存的在線服務(wù)器列表中刪除。
若第二服務(wù)器因?yàn)楣收?、意外等原因已?jīng)退出了服務(wù)器集群,則第二服務(wù)器不會(huì)接收到主服務(wù)器發(fā)送的消息。
步驟s56:若所述第二從服務(wù)器接收到所述主服務(wù)器的發(fā)送的所述第二從服務(wù)器的退出消息后,向所述主服務(wù)器發(fā)送加入服務(wù)器集群的消息;
若實(shí)際上第二從服務(wù)器仍然在服務(wù)器集群內(nèi),則第二服務(wù)器會(huì)接收到主服務(wù)器發(fā)送的自己退出集群的消息。那么第二從服務(wù)器會(huì)向主服務(wù)器發(fā)送加入服務(wù)器集群的消息。
步驟s57:所述主服務(wù)器接收到所述第二從服務(wù)器的加入消息后,將所述第二從服務(wù)器的標(biāo)識(shí)加入到所述主服務(wù)器保存的在線服務(wù)器列表,并將所述第二從服務(wù)器的加入消息發(fā)送至所述服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器;
主服務(wù)器接收到第二從服務(wù)器的加入消息后,更新自己維護(hù)的在線服務(wù)器列表,并廣播告知服務(wù)器集群內(nèi)的每個(gè)從服務(wù)器。
步驟s58:每個(gè)從服務(wù)器根據(jù)接收的所述第二從服務(wù)器的加入消息,將所述第二從服務(wù)器的標(biāo)識(shí)加入各自保存的在線服務(wù)器列表中。
每個(gè)從服務(wù)器根據(jù)主服務(wù)器的廣播消息,更新各自維護(hù)的在線服務(wù)器列表。
上述步驟s51、s52、s53分別與步驟s41、s42、s43相同,不再贅述。
對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。
在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
對(duì)本發(fā)明所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。