一種基于zookeeper的服務(wù)提供方法、第一服務(wù)器及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種基于zookeeper的服務(wù)提供方法、第一服務(wù)器及系統(tǒng),涉及通信領(lǐng)域,提高了zookeeper集群的可靠性。具體方案為:第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程;確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù);其中,第一動(dòng)態(tài)zookeeper預(yù)先配置在第一服務(wù)器上,第二動(dòng)態(tài)zookeeper預(yù)先配置在第二服務(wù)器上;第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。本發(fā)明用于提高zookeeper集群可靠性的過程中。
【專利說明】—種基于zookeeper的服務(wù)提供方法、第一服務(wù)器及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于ZOOk^per的服務(wù)提供方法、第一服務(wù)器及系統(tǒng)。
【背景技術(shù)】
[0002]分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng),近年來分布式系統(tǒng)在互聯(lián)網(wǎng)中的應(yīng)用越來越廣泛,眾所周知,分布式系統(tǒng)的中各個(gè)服務(wù)器是依賴互聯(lián)網(wǎng)相互通信的,因此在通信過程中會(huì)存在如單點(diǎn)故障、故障恢復(fù)、擴(kuò)張性等問題。 [0003]zookeeper是ー個(gè)針對(duì)分布式系統(tǒng)的可靠協(xié)調(diào)軟件,其可用于各個(gè)服務(wù)器之間共享數(shù)據(jù),為了確保寫入分布式系統(tǒng)的數(shù)據(jù)的高可靠性,在分布式系統(tǒng)中,一般需要部署ー個(gè)zookeeper集群,且該zookeeper集群最好包含奇數(shù)個(gè)zookeeper節(jié)點(diǎn)(至少需要包含三個(gè)zookeeper節(jié)點(diǎn))。也就是說,當(dāng)分布式系統(tǒng)中有奇數(shù)臺(tái)服務(wù)器時(shí),可以在每臺(tái)服務(wù)器上分別部署ー個(gè)zookeeper節(jié)點(diǎn),從而保障zookeeper集群的高可靠性和可用性,當(dāng)分布式系統(tǒng)中有偶數(shù)臺(tái)(假設(shè)有N臺(tái))服務(wù)器時(shí),在現(xiàn)有技術(shù)中,可以在N臺(tái)服務(wù)器的其中N-1臺(tái)服務(wù)器上部署zookeeper節(jié)點(diǎn),或者也可以在N臺(tái)服務(wù)器的其中某臺(tái)服務(wù)器上部署偶數(shù)個(gè)zookeeper節(jié)點(diǎn),以保證zookeeper集群中有奇數(shù)個(gè)zookeeper節(jié)點(diǎn),從而保障zookeeper集群的正常運(yùn)行。
[0004]現(xiàn)有技術(shù)中至少存在如下問題:當(dāng)分布式系統(tǒng)中有偶數(shù)臺(tái)(假設(shè)有N臺(tái))服務(wù)器吋,無論是在N臺(tái)服務(wù)器的其中N-1臺(tái)服務(wù)器上部署zookeeper節(jié)點(diǎn),或者是在N臺(tái)服務(wù)器的其中某臺(tái)服務(wù)器上部署偶數(shù)個(gè)zookeeper節(jié)點(diǎn),zookeeper集群的可靠性都會(huì)降低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供一種基于zook^per的服務(wù)提供方法、第一服務(wù)器及系統(tǒng),提高了 zookeeper集群的可靠性。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]本發(fā)明的第一方面,提供一種基于zooke印er的服務(wù)提供方法,包括:
[0008]第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程;
[0009]所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù);
[0010]所述第一服務(wù)器為所述第一動(dòng)態(tài)ZOOke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù);
[0011]其中,所述第一動(dòng)態(tài)zookeeper預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
[0012]結(jié)合第一方面,在ー種可能的實(shí)現(xiàn)方式中,在所述第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,還包括:
[0013]所述第一服務(wù)器針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作;
[0014]當(dāng)針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功吋,則執(zhí)行所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件。
[0015]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,在所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,還包括:
[0016]所述第一服務(wù)器釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。[0017]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,在所述第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,還包括:
[0018]所述第一服務(wù)器周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述第一服務(wù)器周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
[0019]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,
[0020]所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,包括:
[0021]所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件;
[0022]在所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,還包括:
[0023]所述第一服務(wù)器確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);
[0024]當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),所述第一服務(wù)器確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。
[0025]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,包括:
[0026]所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0027]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,還包括:
[0028]所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài);
[0029]所述第一服務(wù)器退出所述第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程。
[0030]結(jié)合第一方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài),包括:
[0031]所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
[0032]本發(fā)明的第二方面,提供ー種第一服務(wù)器,包括:
[0033]啟動(dòng)單元,用于啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程;
[0034]確定單元,用于確定第二服務(wù)器的第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù);
[0035]配置単元,用于為所述第一動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù);
[0036]其中,所述第一動(dòng)態(tài)zookeeper預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
[0037]結(jié)合第二方面,在ー種可能的實(shí)現(xiàn)方式中,還包括:
[0038]讀取單元,用于在所述啟動(dòng)單元啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作;
[0039]所述確定単元,具體用于當(dāng)所述讀取單元針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功時(shí),確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0040]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,還包括:
[0041]釋放單元,用于在所述確定單元確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。
[0042]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,還包括:
[0043]寫入單元,用于在所述啟動(dòng)單元啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述寫入單元周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
[0044]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,
[0045]所述確定單元,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件;
[0046]所述確定単元,還用于在所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù),并當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。
[0047]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,
[0048]所述確定單元,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0049]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,[0050]所述確定単元,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài);
[0051]所述第一服務(wù)器,還包括:
[0052]退出單元,用于退出所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0053]結(jié)合第二方面和上述可能的實(shí)現(xiàn)方式,在另ー種可能的實(shí)現(xiàn)方式中,
[0054]所述確定單元,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
[0055]本發(fā)明的第三方面,提供一種基于zook^per的服務(wù)提供系統(tǒng),包括:
[0056]第一服務(wù)器;其中,所述第一服務(wù)器上預(yù)先配置了第一靜態(tài)zooke印er和第一動(dòng)態(tài)zookeeper,且所述第一靜態(tài)zookeeper已加入zookeeper集群;
[0057]N臺(tái)第二服務(wù)器;其中,N為奇數(shù),所述N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上均預(yù)先配置了第二靜態(tài)zookeeper和第二動(dòng)態(tài)zookeeper,且所述N臺(tái)第二服務(wù)器中的姆臺(tái)第二服務(wù)器上預(yù)先配置的所述第二靜態(tài)zookeeper均已加入所述zookeeper集群;
[0058]以及客戶端;
[0059]所述第一服務(wù)器,用于確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù);為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookee per對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù);
[0060]其中,所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中,在同一時(shí)刻,所述第一動(dòng)態(tài)zookeeper和所述N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上預(yù)先配置的所述第二動(dòng)態(tài)zooke印er中,只有一臺(tái)服務(wù)器的動(dòng)態(tài)zookeeper加入所述zookeeper集群。
[0061]結(jié)合第三方面,在ー種可能的實(shí)現(xiàn)方式中,所述N等于I。
[0062]本發(fā)明實(shí)施例提供的基于zook^per的服務(wù)提供方法,第一服務(wù)器及系統(tǒng),在第一服務(wù)器啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),第一服務(wù)器為第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)臺(tái)服務(wù)器中配置的zookeeper已加入zookeeper集群為客戶端提供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
【專利附圖】
【附圖說明】
[0063]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0064]圖1為本發(fā)明實(shí)施例1提供的一種基于zook^per的服務(wù)提供方法流程圖;
[0065]圖2為本發(fā)明實(shí)施例2提供的一種基于zook^per的服務(wù)提供方法流程圖;[0066]圖3為本發(fā)明實(shí)施例2提供的另ー種基于zook^per的服務(wù)提供方法流程圖;
[0067]圖4為本發(fā)明實(shí)施例3提供的ー種第一服務(wù)器的組成示意圖;
[0068]圖5為本發(fā)明實(shí)施例3提供的另ー種第一服務(wù)器的組成示意圖;
[0069]圖6為本發(fā)明實(shí)施例4提供的ー種第一服務(wù)器的組成示意圖;
[0070]圖7為本發(fā)明實(shí)施例5提供的一種基于zook^per的服務(wù)提供系統(tǒng)的組成示意圖。
【具體實(shí)施方式】
[0071]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0072]另外,本文中術(shù)語(yǔ)“系統(tǒng)”和“網(wǎng)絡(luò)”在本文中常被可互換使用。本文中術(shù)語(yǔ)“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是ー種“或”的關(guān)系。
[0073]需要說明的是,在本發(fā)明實(shí)施例中所述的zookeeper為ー個(gè)針對(duì)分布式系統(tǒng)的可靠協(xié)調(diào)軟件,所述zookeeper用于各個(gè)服務(wù)器之間進(jìn)行數(shù)據(jù)的共享。
[0074]實(shí)施例1
[0075]本發(fā)明實(shí)施例1提供一種基于zookeeper的服務(wù)提供方法,當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)zookeeper已加入zookeeper集群為客戶端提供服務(wù)時(shí),為了提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,在本發(fā)明實(shí)施例中,具體的分布式系統(tǒng)中包括第一服務(wù)器,該第一服務(wù)器上預(yù)先配置了第一靜態(tài)zookeeper和第一動(dòng)態(tài)zookeeper,且該第一靜態(tài)zookeeper已加入了 zookeeper集群,同時(shí)該分布式系統(tǒng)中還包括N臺(tái)第二服務(wù)器(N為奇數(shù)),該N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上均預(yù)先配置了第二靜態(tài)zookeeper和第二動(dòng)態(tài)zooke印er,且N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上預(yù)先配置的第二靜態(tài)zookeeper均已加入所述zookeeper集群。并且第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中,為了提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,只需確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè)即可,因此在同一時(shí)刻,第一動(dòng)態(tài)zookeeper和N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zook^per中,只有一臺(tái)服務(wù)器的動(dòng)態(tài)zookeeper加入zookeeper集群為客戶端提供服務(wù)。
[0076]在本發(fā)明實(shí)施例中,提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,即確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè)的具體實(shí)施方法如圖1所示,該方法可以包括:
[0077]101、第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0078]其中,第一動(dòng)態(tài)zooke印er預(yù)先配置在第一服務(wù)器上。具體的,第一服務(wù)器可以啟動(dòng)預(yù)先配置在該第一服務(wù)器上的第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程。
[0079]102、第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件。
[0080]其中,第二動(dòng)態(tài)zooke印er預(yù)先配置在第二服務(wù)器上,所述預(yù)定條件為第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)。
[0081]具體的,當(dāng)?shù)谝环?wù)器啟動(dòng)了在該第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程之后,第一服務(wù)器可以判斷第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否滿足預(yù)定條件,并在確定第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,也就是說確定第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),執(zhí)行以下步驟103。
[0082]103、第一服務(wù)器為第一動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù)。
[0083]其中,在第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,即確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)之后,第一服務(wù)器為預(yù)先配置在該第一服務(wù)器上的第一動(dòng)態(tài)zooke^er對(duì)應(yīng)進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器上預(yù)先配置第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù)。
[0084]需要說明的是,在本發(fā)明實(shí)施例中分布式系統(tǒng)中除了包含偶數(shù)個(gè)已加入zookeeper集群的靜態(tài)zookeeper對(duì)應(yīng)的服務(wù)器外,還可以包含配置了靜態(tài)zookeeper (但未加入zooke印er集群),或者未配置靜態(tài)zooke印er的服務(wù)器,也就是說,分布式系統(tǒng)中包含的服務(wù)器個(gè)數(shù)可以大于或者等于N。
[0085]本發(fā)明實(shí)施例提供的基于zook^per的服務(wù)提供方法,在第一服務(wù)器啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),第一服務(wù)器為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址, 以便第一服務(wù)器的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)ZOOke^er已加入zookeeper集群為客戶端提供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
[0086]實(shí)施例2
[0087]本發(fā)明實(shí)施例2提供一種基于zook^per的服務(wù)提供方法,當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)zookeeper已加入zookeeper集群為客戶端提供服務(wù)時(shí),為了提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,在本發(fā)明實(shí)施例中,具體的分布式系統(tǒng)中包括第一服務(wù)器,該第一服務(wù)器上預(yù)先配置了第一靜態(tài)zookeeper和第一動(dòng)態(tài)zookeeper,且該第一靜態(tài)zookeeper已加入了 zookeeper集群,同時(shí)該分布式系統(tǒng)中還包括N臺(tái)第二服務(wù)器(N為奇數(shù)),該N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上均預(yù)先配置了第二靜態(tài)zookeeper和第二動(dòng)態(tài)zookeeper,且N臺(tái)第二服務(wù)器中的姆臺(tái)第二服務(wù)器上預(yù)先配置的第二靜態(tài)zookeeper均已加入所述zookeeper集群。并且第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中,該共享存儲(chǔ)介質(zhì)不在分布式系統(tǒng)中包含的偶數(shù)個(gè)已加入zookeeper集群的靜態(tài)zookeeper對(duì)應(yīng)的服務(wù)器中,為了提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,只需確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè)即可,因此在同一時(shí)刻,第一動(dòng)態(tài)zookeeper和N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zook^per中,只有一臺(tái)服務(wù)器的動(dòng)態(tài)zookeeper加入zookeeper集群為客戶端提供服務(wù)。
[0088]需要說明的是,在本發(fā)明實(shí)施例中分布式系統(tǒng)中除了包含偶數(shù)個(gè)已加入zookeeper集群的靜態(tài)zookeeper對(duì)應(yīng)的服務(wù)器外,還可以包含配置了靜態(tài)zookeeper (但未加入zooke印er集群),或者未配置靜態(tài)zooke印er的服務(wù)器,也就是說,分布式系統(tǒng)中包含的服務(wù)器個(gè)數(shù)可以大于或者等于N。
[0089]在本發(fā)明實(shí)施例中,提高分布式系統(tǒng)中部署的zookeeper集群的可靠性,即確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè)的具體實(shí)施方法如圖2所示,該方法可以包括:
[0090]201、第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0091]其中,第一動(dòng)態(tài)zooke印er預(yù)先配置在第一服務(wù)器上,且第一服務(wù)器是為客戶端提供服務(wù)的所有服務(wù)器中的任意ー個(gè)。具體的,為了可以確保zooke印er集群中為客戶端提供服務(wù)的Zooke^er為奇數(shù)個(gè),第一服務(wù)器需要啟動(dòng)該第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0092]可選的,第一服務(wù)器上可以配置定時(shí)檢測(cè)進(jìn)程,這樣每隔預(yù)定的時(shí)間便可以檢測(cè)第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程是否啟動(dòng),若檢測(cè)到第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程未啟動(dòng),則啟動(dòng)該第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0093]202、第一服務(wù)器針對(duì)共享存儲(chǔ) 介質(zhì)進(jìn)行讀取操作。
[0094]其中,為了確保為客戶端提供的數(shù)據(jù)的一致性,第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)存儲(chǔ)在同一個(gè)共享存儲(chǔ)介質(zhì),這樣第一動(dòng)態(tài)zookeeper進(jìn)程和第二動(dòng)態(tài)zookeeper進(jìn)程便可以通過該共享存儲(chǔ)介質(zhì)提供的讀寫接ロ,讀寫同一份數(shù)據(jù),從而保證了為客戶端提供的數(shù)據(jù)的一致性,且第二服務(wù)器是為客戶端提供服務(wù)的所有服務(wù)器中除第一服務(wù)器外的其余服務(wù)器(大于等于I臺(tái)服務(wù)器)。
[0095]具體的,當(dāng)?shù)谝环?wù)器啟動(dòng)在該第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,便可以針對(duì)共享存儲(chǔ)介質(zhì)進(jìn)行數(shù)據(jù)讀取操作,以便判斷該共享存儲(chǔ)介質(zhì)是否準(zhǔn)備好,當(dāng)針對(duì)共享存儲(chǔ)介質(zhì)的讀取操作成功吋,則執(zhí)行以下步驟203-205。當(dāng)針對(duì)共享存儲(chǔ)介質(zhì)的讀取操作未成功時(shí),第一服務(wù)器則退出第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程,當(dāng)然,在第一服務(wù)器退出第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,根據(jù)第一服務(wù)器上配置的定時(shí)檢測(cè)進(jìn)程,還可以在預(yù)定的時(shí)間到達(dá)時(shí),再次啟動(dòng)第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程。
[0096]203、第一服務(wù)器釋放為第一動(dòng)態(tài)zoolu^per對(duì)應(yīng)的進(jìn)程配置的浮動(dòng)網(wǎng)絡(luò)地址。
[0097]其中,為了防止第一服務(wù)器在上一次退出該第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程吋,浮動(dòng)網(wǎng)絡(luò)地址未被成功釋放,此時(shí)第一服務(wù)器可以釋放為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)行配置的浮動(dòng)網(wǎng)絡(luò)地址。
[0098]當(dāng)然,需要說明的是,若第一服務(wù)器的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程是第一次啟動(dòng),那么此時(shí)步驟203可以執(zhí)行,也可以不執(zhí)行,也就是說,步驟203為可選步驟,步驟203是否執(zhí)行可以根據(jù)實(shí)際應(yīng)用場(chǎng)景的需要選擇。
[0099]204、第一服務(wù)器周期性的向共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù)。
[0100]其中,計(jì)數(shù)器文件與第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),第一服務(wù)器周期性的向共享存儲(chǔ)介質(zhì)中寫入的寫計(jì)數(shù)中,后一次寫入的寫計(jì)數(shù)大于前一次寫入的寫計(jì)數(shù)。
[0101]具體的,由于在本發(fā)明實(shí)施例中,服務(wù)器上預(yù)先配置的動(dòng)態(tài)zooke印er是否需要加入zookeeper集群為客戶端提供服務(wù)是通過判斷對(duì)端服務(wù)器的動(dòng)態(tài)zookeeper是否處于激活狀態(tài),具體的是判斷對(duì)端服務(wù)器的動(dòng)態(tài)zookeeper在共享存儲(chǔ)介質(zhì)中的對(duì)應(yīng)的計(jì)數(shù)器文件的計(jì)數(shù)數(shù)值在預(yù)定的時(shí)間內(nèi)是否有増加來確定的,因此,為了使得第一服務(wù)的對(duì)端服務(wù)器可以獲知第一服務(wù)器已處于激活狀態(tài),第一服務(wù)器可以啟動(dòng)?;罹€程,具體的是周期性的向共享存儲(chǔ)介質(zhì)中與第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng)的計(jì)數(shù)器文件中寫入寫計(jì)數(shù),且周期性寫入的寫計(jì)數(shù)中,后一次寫入的寫計(jì)數(shù)大于前一次寫入的寫計(jì)數(shù),以確保寫入計(jì)數(shù)器文件中的寫計(jì)數(shù)是遞增的。
[0102]可選的,在本發(fā)明實(shí)施例中,當(dāng)?shù)谝环?wù)器向共享存儲(chǔ)介質(zhì)中與第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng)的計(jì)數(shù)器文件中寫入寫計(jì)數(shù),出現(xiàn)寫失敗的情況出現(xiàn)時(shí),為了確保不會(huì)出現(xiàn)多個(gè)服務(wù)器的動(dòng)態(tài)zookeeper同時(shí)加入zookeeper集群為客戶端提供服務(wù)的情況發(fā)生,第一服務(wù)器在這種情況下,可以直接提出第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。 [0103]需要說明的是,在本發(fā)明實(shí)施例中對(duì)步驟203和步驟204的執(zhí)行順序不做限制,也就是說,可以先執(zhí)行步驟203,再執(zhí)行步驟204,也可以先執(zhí)行步驟204,再執(zhí)行步驟203,當(dāng)然步驟203與步驟204還可以同時(shí)執(zhí)行。
[0104]205、第一服務(wù)器判斷第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否滿足預(yù)定條件。
[0105]其中,預(yù)定條件為第二服務(wù)器的第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)。
[0106]具體的,第一服務(wù)器判斷第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否滿足預(yù)定條件,即判斷第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程是否不能為客戶端提供正常服務(wù),當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,即確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),執(zhí)行以下步驟206。當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不滿足預(yù)定條件,即確定第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程能為客戶端提供正常服務(wù)吋,則重新執(zhí)行步驟205。
[0107]其中,進(jìn)ー步的,如圖3所示,在本發(fā)明實(shí)施例中步驟205判斷第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否滿足預(yù)定條件,即判斷第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否不能為客戶端提供正常服務(wù),具體的可以包括以下步驟:
[0108]2051、第一服務(wù)器判斷第二服務(wù)器的第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程是否處于激活狀態(tài)。
[0109]其中,第一服務(wù)器通過判斷第二服務(wù)器的第二動(dòng)態(tài)zookeeper在共享存儲(chǔ)介質(zhì)中對(duì)應(yīng)的計(jì)數(shù)器文件的計(jì)數(shù)數(shù)值是否有増加,來判斷第二服務(wù)器的第二動(dòng)態(tài)zook^per是否處于激活狀態(tài)。
[0110]2052、第一服務(wù)器判斷第二服務(wù)器是否能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信。
[0111]其中,在第一服務(wù)器判斷第二服務(wù)器的第二動(dòng)態(tài)zooke印er是否處于激活狀態(tài)之后,還需要判斷第二服務(wù)器是否能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信,例如,可以通過判斷浮動(dòng)網(wǎng)絡(luò)地址是否可達(dá),來判斷第二服務(wù)器是否能通過該浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信。
[0112]需要說明的是,為了使得客戶端感知不到服務(wù)器端到底是哪個(gè)服務(wù)器在提供服務(wù),在本發(fā)明實(shí)施例中,可以預(yù)先為第一服務(wù)器上預(yù)先配置的第一動(dòng)態(tài)zook^per和第二服務(wù)器上預(yù)先配置的第二動(dòng)態(tài)zook^per分配同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,也就是說無論是第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),還是第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),為客戶端提供服務(wù)的動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程均綁定預(yù)先分配的同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,因此當(dāng)?shù)谝环?wù)器需要判斷第二服務(wù)器是否能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信時(shí),只需判斷該浮動(dòng)網(wǎng)絡(luò)地址是否可達(dá)即可。
[0113]具體的,在執(zhí)行步驟2051和步驟2052時(shí),可能出現(xiàn)以下四種情況。
[0114]在第一種應(yīng)用場(chǎng)景中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定第二服務(wù)器不能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信吋,此時(shí)可以確定第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,也就是說此時(shí)第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù),且該判斷結(jié)果還表明第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程與第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程在競(jìng)爭(zhēng)加入zookeeper集群,此時(shí)第一服務(wù)器可以執(zhí)行以下步驟2053和步驟2054。
[0115]2053、第一服務(wù)器確定在預(yù)設(shè)時(shí)間內(nèi),不再向共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù)。
[0116]其中,由于第一服務(wù)器的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程與第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程在競(jìng)爭(zhēng)加入zookeeper集群,因此第一服務(wù)器需要隨機(jī)休眠一段時(shí)間,在休眠的過程中,即在預(yù)設(shè)的時(shí)間內(nèi),第一服務(wù)器確定不再向共享存儲(chǔ)介質(zhì)中與第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程的相對(duì)應(yīng)的計(jì)數(shù)器文件中寫入寫計(jì)數(shù),且不再判斷第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程是否不能為客戶端提供正常服務(wù),當(dāng)然第二服務(wù)器也需要隨機(jī)休眠一段時(shí)間,同樣的第二服務(wù)器也需要在預(yù)設(shè)的時(shí)間內(nèi)不再向共享存儲(chǔ)介質(zhì)中與第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的相對(duì)應(yīng)的計(jì)數(shù)器文件中寫入寫計(jì)數(shù)。
[0117]需要說明的是,為了避免第一服務(wù)器和第二服務(wù)器選擇的隨機(jī)休眠的時(shí)間一祥,或者是第一服務(wù)器與第二服務(wù)器選擇的隨機(jī)休眠的時(shí)間接近,在本發(fā)明實(shí)施例中,可以為第一服務(wù)器和第二服務(wù)器預(yù)先設(shè)置不同的休眠的時(shí)間,例如,可以根據(jù)第一服務(wù)器的第一靜態(tài)zookeeper的節(jié)點(diǎn)號(hào)和第二服務(wù)器的第二靜態(tài)zookeeper的節(jié)點(diǎn)號(hào),來為第一服務(wù)器和第二服務(wù)器分配休眠的時(shí)間,如第一服務(wù)器的第一靜態(tài)zooke印er的節(jié)點(diǎn)號(hào)小,則為第一服務(wù)器設(shè)置休眠的時(shí)間為[0,100]之間的隨機(jī)數(shù),為第二服務(wù)器設(shè)置休眠的時(shí)間為(100,200]之間的隨機(jī)數(shù)。
[0118]2054、當(dāng)計(jì)時(shí)時(shí)間等于預(yù)設(shè)時(shí)間時(shí),第一服務(wù)器確定第二服務(wù)器不能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信。
[0119]其中,當(dāng)?shù)谝环?wù)器休眠的計(jì)時(shí)時(shí)間等于預(yù)設(shè)時(shí)間時(shí),第一服務(wù)器可以再次判斷第二服務(wù)器是否能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器不能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信吋,則說明第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù),此時(shí)可以執(zhí)行步驟206。若第一服務(wù)器確定第二服務(wù)器能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信,那么說明第二服務(wù)器的第二動(dòng)態(tài)zook^per已經(jīng)加入zookeeper集群,也就是說第二服務(wù)器的第二動(dòng)態(tài)zookeeper可以為客戶端提供正常服務(wù),此時(shí)可以重新執(zhí)行步驟2051和步驟2052。
[0120]需要說明的是,本發(fā)明實(shí)施例中判斷第二服務(wù)器是否能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信的具體描述可以參考本發(fā)明實(shí)施例中步驟2052對(duì)應(yīng)內(nèi)容的具體描述,本發(fā)明實(shí)施例在此不再一一贅述。
[0121]在第二種應(yīng)用場(chǎng)景中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定第二服務(wù)器能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信,此時(shí)可以確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不滿足預(yù)定條件,也就是說此時(shí)第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程能為客戶端提供正常服務(wù),則第一服務(wù)器的第一動(dòng)態(tài)zooke印er暫時(shí)不需要向客戶端提供服務(wù),那么可以重新執(zhí)行步驟2051和步驟2052。
[0122]在第三種應(yīng)用場(chǎng)景中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定第二服務(wù)器不能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信吋,此時(shí)可以確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,也就是說此時(shí)第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù),此時(shí)第一服務(wù)器可以執(zhí)行以下步驟206。
[0123]在第四種應(yīng)用場(chǎng)景中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定第二服務(wù)器能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信,也就是說,第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程已經(jīng)退出,但是為第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程綁定的浮動(dòng)網(wǎng)絡(luò)地址卻未釋放,那么此時(shí)可以確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài),此時(shí)第一服務(wù)器可以執(zhí)行以下步驟207。
[0124]206、第一服務(wù)器 為第一動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù)。
[0125]其中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),第一服務(wù)器可以為第一動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,這樣第一服務(wù)器的第一動(dòng)態(tài)zookeeper便加入zookeeper集群為客戶端提供服務(wù)。
[0126]207、第一服務(wù)器退出第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0127]其中,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定第二服務(wù)器能通過浮動(dòng)網(wǎng)絡(luò)地址與客戶端進(jìn)行通信時(shí),第一服務(wù)器可以確定第二服務(wù)器的第二動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程處于異常狀態(tài),此時(shí)第一服務(wù)器便可以直接退出第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0128]需要說明的是,在分布式系統(tǒng)中包含的已加入zookeeper集群的靜態(tài)zookeeper對(duì)應(yīng)的服務(wù)器上可以配置奇數(shù)個(gè)動(dòng)態(tài)zookeeper,也就是說,只需保證zookeeper集群中包含奇數(shù)個(gè)zookeeper為客戶端提供服務(wù)即可。例如,分布式系統(tǒng)中包含第一服務(wù)器和第二服務(wù)器,第一服務(wù)器上配置了ー個(gè)第一靜態(tài)zookeeper和三個(gè)第一動(dòng)態(tài)zookeeper(zookeeperO1、zookeeper02>zookeeper03),第二服務(wù)器上配置了一個(gè)第二浄態(tài) zookeeper和三個(gè)第二動(dòng)態(tài) zookeeper (zookeeper04> zookeeper05> zookeeper06),且第一浄態(tài)zookeeper和第二浄態(tài)zookeeper已加入zookeeper集群,zookeeperO I對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與zookeeper04對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)存儲(chǔ)在第一共享存儲(chǔ)介質(zhì)中,zookeeper02對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與zookeeper05對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)存儲(chǔ)在第二共享存儲(chǔ)介質(zhì)中,zookeeper03對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與zookeeper06對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)存儲(chǔ)在第二共享存儲(chǔ)介質(zhì)中。這樣,第一服務(wù)器可以按照本發(fā)明實(shí)施例中步驟201-步驟207中執(zhí)行過程判斷zooke印erOl是否需要加入zookeeper集群,此時(shí)只需判斷第二服務(wù)器的zookeeper04對(duì)應(yīng)的進(jìn)程是否能為客戶端提供正常服務(wù)即可,第二服務(wù)器可以按照本發(fā)明實(shí)施例中步驟201-步驟207中執(zhí)行過程判斷zookeeper04是否需要加入zookeeper集群,此時(shí)只需判斷第一服務(wù)器的zooke印erOl對(duì)應(yīng)的進(jìn)程是否能為客戶端提供正常服務(wù)即可,同理,第一服務(wù)器判斷zookeeper02、zookeeper03是否需要加入zookeeper集群的過程與上述過程類似,第二服務(wù)器判斷zookeeper05、zookeeper06是否需要加入zookeeper集群的過程也與上述過程類似。也就是說,當(dāng)本端服務(wù)器與對(duì)端服務(wù)器中均包含多個(gè)動(dòng)態(tài)zookeeper時(shí),本端服務(wù)器只需判斷與本端服務(wù)器的動(dòng)態(tài)zookeeper對(duì)應(yīng)進(jìn)程的數(shù)據(jù)存儲(chǔ)在同一個(gè)共享存儲(chǔ)介質(zhì)的對(duì)端服務(wù)器的動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程是否能為客戶端提供正常服務(wù),便可以獲知本端服務(wù)器的動(dòng)態(tài)zookeeper是否需要加入zookeeper集群為客戶端提供服務(wù),具體的判斷過程可以參考本發(fā)明實(shí)施例中步驟201-步驟207中的具體描述,本發(fā)明實(shí)施例在此不再一一贅述。
[0129]為了便于本領(lǐng)域技術(shù)人員的理解,在此對(duì)本發(fā)明實(shí)施例的具體執(zhí)行過程進(jìn)行舉例說明。
[0130]例如,分布式系統(tǒng)中包括兩臺(tái)服務(wù)器,為第一服務(wù)器和第二服務(wù)器,其中第一服務(wù)器上配置了一個(gè)第一靜態(tài)zookeeper和一個(gè)第一動(dòng)態(tài)zookeeper,第二服務(wù)器上配置了一個(gè)第二靜態(tài)zookeeper和一個(gè)第二動(dòng)態(tài)zookeeper,且第一靜態(tài)zookeeper和第二靜態(tài)zookeeper已加入zookeeper集群為客戶端提供服務(wù),第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。為了確保zookeeper集群中包含奇數(shù)個(gè)zookeeper,以保證zookeeper集群的可靠性,在同一時(shí)刻,第一動(dòng)態(tài)zookeeper和第二動(dòng)態(tài)zookeeper中只有一個(gè)動(dòng)態(tài)zookeeper加入zookeeper集群,當(dāng)?shù)谝环?wù)器和第二服務(wù)器中其中一臺(tái)發(fā)生故障時(shí),如果發(fā)生故障的服務(wù)器中的動(dòng)態(tài)zookeeper之前加入了 zookeeper集群,并且由于服務(wù)器發(fā)生故障動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程無法為客戶端提供服務(wù),那么另一臺(tái)服務(wù)器上的動(dòng)態(tài)zookeeper會(huì)加入zookeeper集群,接替發(fā)生故障動(dòng)態(tài)zookeeper為客戶端提供服務(wù),這樣zookeeper集群中仍然有兩個(gè)zookeeper,進(jìn)而可以保證zookeeper集群可以繼續(xù)對(duì)客戶端提供正常服務(wù)。具體的,第一服務(wù)器可以按照本發(fā)明實(shí)施例中步驟201-步驟207中執(zhí)行過程判斷第一動(dòng)態(tài)zook^per是否需要加入zookeeper集群,同理,第二服務(wù)器也可以按照本發(fā)明實(shí)施例中步驟201-步驟207中執(zhí)行過程判斷第二動(dòng)態(tài)zookeeper是否需要加入zookeeper集群。
[0131]并且,本發(fā)明實(shí)施例提供的方法,在分布式系統(tǒng)中包含兩個(gè)服務(wù)器的應(yīng)用場(chǎng)景中,zookeeper集群的可靠性的保證尤為明顯。
[0132]本發(fā)明實(shí)施例提供的基于ZOOke^er的服務(wù)提供方法,在第一服務(wù)器啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),第一服務(wù)器為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)ZOOke^er已加入zookeeper集群為客戶端提 供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
[0133]并且,通過為第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程和第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)行綁定同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,使得客戶端感知不到服務(wù)器端是哪個(gè)服務(wù)器在為自身提供服務(wù),提高了客戶端體驗(yàn)。
[0134]實(shí)施例3
[0135]本發(fā)明實(shí)施例3提供ー種第一服務(wù)器,如圖4所示,包括:啟動(dòng)單元31、確定單元32、配置單元33。[0136]啟動(dòng)單元31,用于啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0137]確定單元32,用于確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)。
[0138]配置単元33,用于為所述第一動(dòng)態(tài)zooke^er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù)。
[0139]其中,所述第一動(dòng)態(tài)zookeeper預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
[0140]進(jìn)ー步的,如圖5所示,所述第一服務(wù)器還可以包括:讀取單元34。
[0141]讀取單元34,用于在所述啟動(dòng)單元31啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作。
[0142]所述確定単元32,具體用于當(dāng)所述讀取単元34針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功時(shí),確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0143]進(jìn)ー步的,所述第一服務(wù)器還可以包括:釋放單元35。
[0144]釋放單元35,用于在所述確定單元32確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。
[0145]進(jìn)ー步的,所述第一服務(wù)器還可以包括:寫入?yún)g元36。
[0146]寫入單元36,用于在所述啟動(dòng)單元31啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述寫入單元36周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
[0147]進(jìn)ー步的,所述確定単元32,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0148]所述確定單元32,還用于在所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù),并當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。[0149]進(jìn)ー步的,所述確定単元32,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0150]進(jìn)ー步的,所述確定単元32,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài)。
[0151]所述第一服務(wù)器,還可以包括:退出単元37。
[0152]退出單元37,用于退出所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0153]進(jìn)ー步的,所述確定単元32,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
[0154]需要說明的是,本發(fā)明實(shí)施例提供的第一服務(wù)器中各功能模塊的具體描述可以參考方法實(shí)施例中對(duì)應(yīng)內(nèi)容的具體描述,本發(fā)明實(shí)施例在此不再詳細(xì)贅述。
[0155]本發(fā)明實(shí)施例提供的第一服務(wù)器,在啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)zookeeper已加入zookeeper集群為客戶端提供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
·[0156]并且,通過為第一服務(wù)器的第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程和第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)行綁定同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,使得客戶端感知不到服務(wù)器端是哪個(gè)服務(wù)器在為自身提供服務(wù),提高了客戶端體驗(yàn)。
[0157]實(shí)施例4
[0158]本發(fā)明實(shí)施例4提供ー種第一服務(wù)器,如圖6所示,包括:至少ー個(gè)處理器41、存儲(chǔ)器42、通信接ロ 43和總線44,該至少一個(gè)處理器41、存儲(chǔ)器42和通信接ロ 43通過總線44連接并完成相互間的通信,其中:
[0159]所述總線44可以是エ業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture, ISA)總線、外部設(shè)備互連(Peripheral Component Interconnect, PCI)總線或擴(kuò)展エ業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry Standard Architecture,EISA)總線等。該總線 44 可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖6中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0160]所述存儲(chǔ)器42用于存儲(chǔ)可執(zhí)行程序代碼,該程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器42可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少ー個(gè)磁盤存儲(chǔ)器。
[0161]所述處理器41可能是一個(gè)中央處理器(Central Processing Unit, CPU),或者是特定集成電路(Application Specific Integrated Circuit, ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的ー個(gè)或多個(gè)集成電路。
[0162]所述通信接ロ 43,主要用于實(shí)現(xiàn)本實(shí)施例的設(shè)備之間的通信。[0163]所述處理器41,用于執(zhí)行所述存儲(chǔ)器42中存儲(chǔ)的可執(zhí)行程序代碼,具體的用于執(zhí)行以下操作:
[0164]所述處理器41,用于啟動(dòng)第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程;確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù);為所述第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù)。
[0165]其中,所述第一動(dòng)態(tài)zookeeper預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
[0166]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于在所述啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作;當(dāng)針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功時(shí),確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件。
[0167]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于在所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。
[0168]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于在所述啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述處理器41周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
[0169]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0170]所述處理器41,還用于在所確定第二服務(wù)器的第二動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。
[0171]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
[0172]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài);退出所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
[0173]在本發(fā)明實(shí)施例中,進(jìn)ー步可選的,所述處理器41,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
[0174]需要說明的是,本發(fā)明實(shí)施例提供的第一服務(wù)器中各功能模塊的具體描述可以參考方法實(shí)施例中對(duì)應(yīng)內(nèi)容的具體描述,本發(fā)明實(shí)施例在此不再詳細(xì)贅述。
[0175]本發(fā)明實(shí)施例提供的第一服務(wù)器,在啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)zookeeper已加入zookeeper集群為客戶端提供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
[0176]并且,通過為第一服務(wù)器的第一動(dòng)態(tài)zook^per對(duì)應(yīng)的進(jìn)程和第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)行綁定同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,使得客戶端感知不到服務(wù)器端是哪個(gè)服務(wù)器在為自身提供服務(wù),提高了客戶端體驗(yàn)。
[0177]實(shí)施例5
[0178]本發(fā)明實(shí)施例5提供一種基于zook^per的服務(wù)提供系統(tǒng),如圖1所示,包括:第一服務(wù)器51、N臺(tái)第二服務(wù)器52、以及客戶端53。
[0179]其中,所述第一服務(wù)器51上預(yù)先配置了第一靜態(tài)zookeeper和第一動(dòng)態(tài)zookeeper,且所述第一浄態(tài)zookeeper已加入zookeeper集群。
[0180]其中,N為奇數(shù),所述N臺(tái)第二服務(wù)器52中的每臺(tái)第二服務(wù)器52上均預(yù)先配置了第二靜態(tài)zookeeper和第二動(dòng)態(tài) zookeeper,且所述N臺(tái)第二服務(wù)器52中的姆臺(tái)第二服務(wù)器52上預(yù)先配置的所述第二靜態(tài)zookeeper均已加入所述zookeeper集群。
[0181 ] 所述第一服務(wù)器51,用于確定第二服務(wù)器52的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器52的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端53提供正常服務(wù);為所述第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器51的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端53提供服務(wù)。
[0182]其中,所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中,在同一時(shí)刻,所述第一動(dòng)態(tài)zookeeper和所述N臺(tái)第二服務(wù)器52中的每臺(tái)第二服務(wù)器52上預(yù)先配置的所述第二動(dòng)態(tài)zook^per中,只有一臺(tái)服務(wù)器的動(dòng)態(tài)zookeeper加入所述zookeeper集群。
[0183]進(jìn)ー步的,所述N等于I。
[0184]需要說明的是,本發(fā)明實(shí)施例提供的基于ZOOke^er的服務(wù)提供系統(tǒng)中各設(shè)備功能的具體描述可以參考方法實(shí)施例中對(duì)應(yīng)內(nèi)容的具體描述,本發(fā)明實(shí)施例在此不再詳細(xì)贅述。
[0185]本發(fā)明實(shí)施例提供的基于ZOOke^er的服務(wù)提供系統(tǒng),在第一服務(wù)器啟動(dòng)自身預(yù)先配置的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,當(dāng)?shù)谝环?wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù)時(shí),第一服務(wù)器為第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便第一服務(wù)器的第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程為客戶端提供服務(wù),這樣使得當(dāng)分布式系統(tǒng)中有偶數(shù)個(gè)服務(wù)器中配置的靜態(tài)ZOOke^er已加A zookeeper集群為客戶端提供服務(wù)時(shí),通過確保zookeeper集群中為客戶端提供服務(wù)的zookeeper為奇數(shù)個(gè),提高了 zookeeper集群的可靠性。
[0186]并且,通過為第一服務(wù)器的第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程和第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)行綁定同一個(gè)浮動(dòng)網(wǎng)絡(luò)地址,使得客戶端感知不到服務(wù)器端是哪個(gè)服務(wù)器在為自身提供服務(wù),提高了客戶端體驗(yàn)。
[0187]通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
[0188]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或単元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另ー個(gè)裝置,或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過ー些接ロ,裝置或単元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0189]所述作為分離部件說明的単元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是ー個(gè)物理単元或多個(gè)物理単元,即可以位于ー個(gè)地方,或者也可以分布到多個(gè)不同地方??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0190]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能単元可以集成在一個(gè)處理単元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能単元的形式實(shí)現(xiàn)。
[0191]所述集成的単元如果以軟件功能単元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在ー個(gè)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲(chǔ)在ー個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)設(shè)備(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0192]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種基于zookeeper的服務(wù)提供方法,其特征在于,包括: 第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程; 所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù); 所述第一服務(wù)器為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù); 其中,所述第一動(dòng)態(tài)zookeeper預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,還包括: 所述第一服務(wù)器針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作; 當(dāng)針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功吋,則執(zhí)行所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,還包括: 所述第一服務(wù)器釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述第一服務(wù)器啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,還包括: 所述第一服務(wù)器周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述第一服務(wù)器周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在干, 所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,包括: 所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件; 在所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,還包括: 所述第一服務(wù)器確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù); 當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),所述第一服務(wù)器確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一服務(wù)器確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件,包括:所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài); 所述第一服務(wù)器退出所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
8.根據(jù)權(quán)利要求7所述的方法,其特征在干,所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài),包括: 所述第一服務(wù)器確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
9.ー種第一服務(wù)器,其特征在于,包括: 啟動(dòng)單元,用于啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程; 確定單元,用于確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件;其中,所述預(yù)定條件為所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程不能為客戶端提供正常服務(wù); 配置単元,用于為所述第一動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程配置浮動(dòng)網(wǎng)絡(luò)地址,以便所述第一服務(wù)器的所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程為所述客戶端提供服務(wù); 其中,所述第一動(dòng)態(tài)zooke印er預(yù)先配置在所述第一服務(wù)器上,所述第二動(dòng)態(tài)zookeeper預(yù)先配置在所述第二服務(wù)器上;所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中。
10.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在于,還包括: 讀取單元,用于在所述啟動(dòng)單元啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,針對(duì)所述共享存儲(chǔ)介質(zhì)進(jìn)行讀取操作; 所述確定単元,具體用于當(dāng)所述讀取單元針對(duì)所述共享存儲(chǔ)介質(zhì)的讀取操作成功吋,確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
11.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在于,還包括: 釋放單元,用于在所述確定単元確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之前,釋放為所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程配置的所述浮動(dòng)網(wǎng)絡(luò)地址。
12.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在于,還包括: 寫入單元,用于在所述啟動(dòng)單元啟動(dòng)第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程之后,周期性的向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù);其中,所述計(jì)數(shù)器文件與所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程相對(duì)應(yīng),所述寫入?yún)g元周期性的向所述共享存儲(chǔ)介質(zhì)中寫入的所述寫計(jì)數(shù)中,后一次寫入的所述寫計(jì)數(shù)大于前一次寫入的所述寫計(jì)數(shù)。
13.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在干, 所述確定単元,具體用于確 定所述第二服務(wù)器的所述第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程處于激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件;所述確定単元,還用于在所述確定第二服務(wù)器的第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足預(yù)定條件之后,確定在預(yù)設(shè)時(shí)間內(nèi),不再向所述共享存儲(chǔ)介質(zhì)中的計(jì)數(shù)器文件寫入寫計(jì)數(shù),并當(dāng)計(jì)時(shí)時(shí)間等于所述預(yù)設(shè)時(shí)間時(shí),確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信。
14.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在干, 所述確定単元,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器不能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程滿足所述預(yù)定條件。
15.根據(jù)權(quán)利要求9所述的第一服務(wù)器,其特征在干, 所述確定単元,還用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于異常狀態(tài); 所述第一服務(wù)器,還包括: 退出單元,用于退出所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程。
16.根據(jù)權(quán)利要求15所述的第一服務(wù)器,其特征在干, 所述確定単元,具體用于確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zooke印er對(duì)應(yīng)的進(jìn)程處于非激活狀態(tài),且確定所述第二服務(wù)器能通過所述浮動(dòng)網(wǎng)絡(luò)地址與所述客戶端進(jìn)行通信,則確定所述第二服務(wù)器的所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程處于所述異常狀態(tài)。
17.—種基于zookeeper的服務(wù)提供系統(tǒng),其特征在于,包括: 如權(quán)利要求9-16中任一項(xiàng)所述的第一服務(wù)器;其中,所述第一服務(wù)器上預(yù)先配置了第一浄態(tài)zookeeper和第一動(dòng)態(tài)zookee`per,且所述第一浄態(tài)zookeeper已加入zookeeper集群; N臺(tái)第二服務(wù)器;其中,N為奇數(shù),所述N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上均預(yù)先配置了第二靜態(tài)zookeeper和第二動(dòng)態(tài)zookeeper,且所述N臺(tái)第二服務(wù)器中的姆臺(tái)第二服務(wù)器上預(yù)先配置的所述第二靜態(tài)zookeeper均已加入所述zookeeper集群; 以及客戶端; 其中,所述第一動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)與所述第二動(dòng)態(tài)zookeeper對(duì)應(yīng)的進(jìn)程的數(shù)據(jù)均存儲(chǔ)在共享存儲(chǔ)介質(zhì)中,在同一時(shí)刻,所述第一動(dòng)態(tài)zookeeper和所述N臺(tái)第二服務(wù)器中的每臺(tái)第二服務(wù)器上預(yù)先配置的所述第二動(dòng)態(tài)zook^per中,只有一臺(tái)服務(wù)器的動(dòng)態(tài)zookeeper加入所述zookeeper集群。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其特征在于,所述N等于I。
【文檔編號(hào)】H04L12/24GK103595781SQ201310556776
【公開日】2014年2月19日 申請(qǐng)日期:2013年11月11日 優(yōu)先權(quán)日:2013年11月11日
【發(fā)明者】田禹, 張烽 申請(qǐng)人:華為技術(shù)有限公司