本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)以及計算機技術(shù)的不斷發(fā)展,一個應(yīng)用或者軟件所對應(yīng)的后端服務(wù)節(jié)點越來越多,可能成千上萬個,針對大量的服務(wù)節(jié)點以及高并發(fā)的用戶訪問情況,需要采用分布式部署服務(wù)。
進一步的,當采用分布式部署服務(wù)時,如果發(fā)生某服務(wù)節(jié)點宕機下線的情況,如果其他服務(wù)節(jié)點無法感知且快速進行故障轉(zhuǎn)移,將對用戶體驗產(chǎn)生很大的影響。
因此,需要建立服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng),用來實時獲取對應(yīng)的大量服務(wù)信息,管理位于應(yīng)用或軟件后端的服務(wù)節(jié)點,從而保證高可用性提供基礎(chǔ)。
但是,在分布式部署服務(wù)系統(tǒng)中的高并發(fā)請求還會帶來負載均衡的問題,而目前,負載均衡都是獨立于服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)以外的獨立模塊或者組件,也就是說,服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)和負載均衡組件都是獨立存在的,并混合使用,這樣部署以及實施負載均衡組件都會比較復雜,因此,設(shè)計一套高效簡單的實現(xiàn)自帶負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法是一種亟待解決的問題。
技術(shù)實現(xiàn)要素:
本申請實施例提供一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法及裝置,能夠高效簡單的實現(xiàn)自帶負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)。
本申請實施例提供的一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法,包括:
接收服務(wù)獲取請求,其中,所述服務(wù)獲取請求中攜帶有服務(wù)標識;
從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息;
根據(jù)所獲取到的負載信息以及本地存儲的負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。
優(yōu)選地,服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求,其中,服務(wù)端具有負載均衡功能;或客戶端接收用戶發(fā)送的服務(wù)獲取請求,其中,客戶端具有負載均衡功能。
優(yōu)選地,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,在服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求之前,所述方法還包括:子服務(wù)管理中心服務(wù)器接收具有負載均衡功能的服務(wù)端和/或每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,注冊本地存儲的將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器;子服務(wù)管理中心服務(wù)將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器;或
當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,在客戶端接收用戶發(fā)送的服務(wù)獲取請求之前,所述方法還包括:子服務(wù)管理中心服務(wù)器接收客戶端以及每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器。
優(yōu)選地,針對每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,服務(wù)管理中心服務(wù)器向該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送心跳包,其中,所述心跳包中攜帶有負載信息獲取指令,所述服務(wù)管理中心服務(wù)器中注冊有包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息。
優(yōu)選地,當至少包括兩個服務(wù)管理中心服務(wù)器時,在接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息之后,所述方法還包括:將接收到的該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息同步到其他服務(wù)管理中心服務(wù)器中。
本申請實施例提供的一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)裝置,包括:
接收模塊,用于接收服務(wù)獲取請求,其中,所述服務(wù)獲取請求中攜帶有服務(wù)標識;
獲取模塊,用于從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息;
確定發(fā)送模塊,用于根據(jù)所獲取到的負載信息以及本地存儲的負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。
優(yōu)選地,所述接收模塊具體用于,服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求,其中,服務(wù)端具有負載均衡功能;或客戶端接收用戶發(fā)送的服務(wù)獲取請求,其中,客戶端具有負載均衡功能。
優(yōu)選地,所述裝置還包括:
注冊模塊,用于在所述接收模塊接收客戶端發(fā)送的服務(wù)獲取請求之前,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,子服務(wù)管理中心服務(wù)器接收具有負載均衡功能的服務(wù)端和/或每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,其中,所述接收模塊位于所述具有負載均衡功能的服務(wù)端內(nèi);或
還用于,在所述接收模塊接收用戶發(fā)送的服務(wù)獲取請求之前,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,子服務(wù)管理中心服務(wù)器接收客戶端以及每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,其中,所述接收模塊位于所述客戶端內(nèi)。
優(yōu)選地,所述裝置還包括:
預(yù)先存儲模塊,用于針對每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,服務(wù)管理中心服務(wù)器向該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送心跳包,其中,所述心跳包中攜帶有負載信息獲取指令,所述服務(wù)管理中心服務(wù)器中注冊有包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息。
優(yōu)選地,所述裝置還包括:
同步模塊,用于在所述預(yù)先存儲模塊接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息之后,當至少包括兩個服務(wù)管理中心服務(wù)器時,將接收到的該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息同步到其他服務(wù)管理中心服務(wù)器中。
本申請實施例提供一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法及裝置,該方法包括:接收服務(wù)獲取請求,其中,所述服務(wù)獲取請求中攜帶有服務(wù)標識,從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息,根據(jù)所獲取到的負載信息以及本地存儲的第一負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。通過上述方法,服務(wù)管理中心服務(wù)器通過發(fā)送心跳包來獲取各提供服務(wù)的服務(wù)端的負載信息并存儲在本地,后續(xù),具有負載均衡功能的客戶端或者服務(wù)端均可以從服務(wù)管理中心服務(wù)器中獲取到所需服務(wù)端的負載信息,這樣能夠可以高效簡單的實現(xiàn)自帶負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
圖1為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)的過程示意圖;
圖2為本申請實施例提供的注冊與負載信息獲取的過程示意圖;
圖3為本申請實施例提供的注銷的過程示意圖;
圖4為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)示例;
圖5為本申請實施例提供的涉及到注冊、訂閱以及注銷時的服務(wù)端,客戶端以及服務(wù)管理中心服務(wù)器三者之間的架構(gòu)圖;
圖6為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)裝置的結(jié)構(gòu)示意圖;
圖7為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)組成結(jié)構(gòu)框圖。
具體實施方式
為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請具體實施例及相應(yīng)的附圖對本申請技術(shù)方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)過程,具體包括以下步驟:
s101:接收服務(wù)獲取請求。
在實際應(yīng)用中,用戶通過本申請的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)使用服務(wù)過程中,首先需要接收服務(wù)獲取請求。
在此需要說明的是,所接收到的服務(wù)獲取請求中攜帶有服務(wù)標識,該服務(wù)標識能唯一標識一個服務(wù)。
進一步的,由于提供同一服務(wù)的服務(wù)端通常是采用分布式部署服務(wù)的,也就是說,存在多個服務(wù)端提供同一種服務(wù),因此,在接收到服務(wù)獲取請求后,需要確定將該服務(wù)獲取請求發(fā)送到哪個服務(wù)端。
而確定將該服務(wù)獲取請求發(fā)送到哪個服務(wù)端具體可以通過負載均衡來進行確定。
進一步的,由于在實際應(yīng)用中,有可能是客戶端具有負載均衡功能,也就是說,客戶端直接調(diào)用負載均衡功能將所接收到服務(wù)獲取請求發(fā)送給相應(yīng)的服務(wù)端,也有可能是服務(wù)端具有負載均衡功能,也就是說,服務(wù)端直接調(diào)用負載均衡功能將所接收到服務(wù)獲取請求發(fā)送給相應(yīng)的服務(wù)端,針對上述兩種情況,在本申請中,接收服務(wù)獲取請求,也包括兩種情況,具體如下:
第一種情況,服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求,其中,服務(wù)端具有負載均衡功能。
第二種情況,客戶端接收用戶發(fā)送的服務(wù)獲取請求,其中,客戶端具有負載均衡功能。
在此需要說明的是,第一種情況中所提到的服務(wù)端具體是在客戶端與提供服務(wù)的服務(wù)端之間所建立的,也就是說,單獨建立一個服務(wù)端,該服務(wù)端對外所只提供負載均衡服務(wù),客戶端發(fā)送給提供客戶端所需服務(wù)的服務(wù)端的服務(wù)獲取請求,均需要經(jīng)過具有負載均衡的服務(wù)端。第二種情況中,客戶端接收用戶發(fā)送的服務(wù)獲取請求具體指的是,用戶在客戶端的指定位置所進行的指定操作,如,在客戶端上的搜索欄填寫搜索詞,并點擊搜索確定按鈕。
s102:從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息。
進一步的,當接收到服務(wù)獲取請求后,由于需要進行負載均衡,而在進行負載均衡的過程中,需要根據(jù)每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息,以及本地存儲的負載均衡算法才可以執(zhí)行負載均衡,因此,在本申請中,需要獲取每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息。
在此需要說明的是,獲取每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息具體是從服務(wù)管理中心服務(wù)器中獲取的,該服務(wù)管理中心服務(wù)器用于存儲各服務(wù)端的服務(wù)狀態(tài)信息(如,服務(wù)名,分配的唯一標識,服務(wù)狀態(tài))以及負載信息,還有更新日志,這些存儲的服務(wù)狀態(tài)信息以及負載信息可以采用主主模式。
另外,由于服務(wù)管理中心服務(wù)器中存儲有各提供服務(wù)的服務(wù)端的負載信息,而存儲各提供服務(wù)的服務(wù)端的負載信息之前,需要提前從各提供服務(wù)的服務(wù)端中獲取到負載信息,因此,在本申請中,可以針對每個包含服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,服務(wù)管理中心服務(wù)器向該包含服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送心跳包,其中,該心跳包中攜帶有負載信息獲取指令,該服務(wù)管理中心服務(wù)器中注冊有包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,接收該包含該服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息。
在此需要說明的是,服務(wù)端當前的負載信息數(shù)據(jù)量小,心跳包傳輸方便,可以為整個負載均衡過程提供極大的便利,與此同時,心跳包還可以有效監(jiān)測各服務(wù)端的狀態(tài),可以及時發(fā)現(xiàn)服務(wù)端是否失效。
另外,在此還需要說明的是,為了方便管理各服務(wù)端所提供的服務(wù),服務(wù)管理中心服務(wù)器只對外提供已經(jīng)在本地注冊過的服務(wù)端所提供的服務(wù),并對已注冊的服務(wù)端采用心跳包的形式來獲取各服務(wù)端的負載信息。
因此,在本申請中,在執(zhí)行步驟s101接收服務(wù)獲取請求之前,需要對包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端進行注冊。
進一步的,由于為了保證服務(wù)管理中心服務(wù)器的高可用性,因此,通常采用多點部署,也就是說,服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器。
另外,又由于在接收服務(wù)獲取請求時,存在兩種情況,因此,在本申請中,在對包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端進行注冊的過程具體如下:
第一種情況,當服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求時,在服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求之前,子服務(wù)管理中心服務(wù)器接收具有負載均衡功能的服務(wù)端和/或每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,注冊本地存儲的將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器;子服務(wù)管理中心服務(wù)將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器。
第二種情況,當客戶端接收用戶發(fā)送的服務(wù)獲取請求時,在客戶端接收用戶發(fā)送的服務(wù)獲取請求之前,子服務(wù)管理中心服務(wù)器接收客戶端以及每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器。
在此需要說明的是,具有負載均衡功能的服務(wù)端本身可以看做一個專門提供負載均衡服務(wù)的服務(wù)端,該服務(wù)端也需要在服務(wù)管理中心服務(wù)器中進行注冊,另外,無論第一種情況還是第二種情況中,客戶端要想使用服務(wù)管理中心服務(wù)器中所管理的服務(wù),均需要在服務(wù)管理中心服務(wù)器中注冊,也就是說,服務(wù)管理中心服務(wù)器只為注冊在本地的客戶端提供服務(wù)。
進一步的,由于服務(wù)管理中心服務(wù)器維護全局的服務(wù)信息,如果只設(shè)立一個服務(wù)管理中心服務(wù)器,那么該服務(wù)管理中心服務(wù)器出現(xiàn)宕機的情況,很容易造成具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)癱瘓,因此,為了提高服務(wù)管理中心服務(wù)器的高可用性,避免一個服務(wù)管理中心服務(wù)器故障不可用的情況,可以建立至少兩個服務(wù)管理中心服務(wù)器,兩個服務(wù)管理中心服務(wù)器采用主主模式,當一個服務(wù)管理中心服務(wù)器不可用后,可快速進行切換。
在此需要說明的是,當存在至少兩個服務(wù)管理中心服務(wù)器時,每個服務(wù)管理中心服務(wù)器是管理和監(jiān)測固定的服務(wù)端以及客戶端的,并且每個管理服務(wù)中心服務(wù)器所管理的固定的服務(wù)端以及客戶端具體是在該服務(wù)管理中心服務(wù)器中所注冊的服務(wù)端以及客戶端,也就是說,針對任一服務(wù)管理中心服務(wù)器,該服務(wù)管理中心服務(wù)器只是通過心跳包來監(jiān)測并獲取在本地注冊過的服務(wù)端負載信息以及狀態(tài)信息,對于在其他服務(wù)管理中心服務(wù)器中并不進行管理和監(jiān)測,這樣,每個服務(wù)管理中心服務(wù)器都有對應(yīng)的所要管理和監(jiān)測的服務(wù)端以及客戶端,與此同時,服務(wù)端以及客戶端也只能在其注冊過的服務(wù)管理中心服務(wù)器中查看其它服務(wù)端以及客戶端的狀態(tài)信息以及負載信息。
進一步的,又由于每個服務(wù)管理中心服務(wù)器是管理和監(jiān)測固定的服務(wù)端以及客戶端的,并且服務(wù)端以及客戶端也只能在其注冊過的服務(wù)管理中心服務(wù)器中查看其它服務(wù)端以及客戶端的狀態(tài)信息以及負載信息,如果具有負載均衡的客戶端或者具有負載均衡的服務(wù)端所接收到的服務(wù)獲取請求與提供該服務(wù)獲取請求對應(yīng)的服務(wù)的服務(wù)端并不屬于同一服務(wù)管理中心服務(wù)器管理,那么具有負載均衡的客戶端或者具有負載均衡的服務(wù)端就無法從服務(wù)管理中心服務(wù)器中獲取到提供該服務(wù)獲取請求對應(yīng)的服務(wù)的服務(wù)端的負載信息,因此,需要對每個服務(wù)管理中心服務(wù)器進行同步,具體的,當至少包括兩個服務(wù)管理中心服務(wù)器時,在接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息之后,將接收到的該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息同步到其他服務(wù)管理中心服務(wù)器中,也就是說,保持每個服務(wù)管理中心服務(wù)器中的信息(各服務(wù)端的負載信息以及狀態(tài)信息)的一致性,這樣,具有負載均衡的客戶端或者具有負載均衡的服務(wù)端無論在哪個服務(wù)管理中心服務(wù)器注冊并被其管理和監(jiān)測,均可以在該服務(wù)管理中心服務(wù)器中查找到任何一個服務(wù)端的負載信息以及狀態(tài)信息。
在此需要說明的是,服務(wù)管理中心服務(wù)器維護了所有服務(wù)的狀態(tài)信息以及負載信息,并提供了選主功能。
在此還需要說明的是,本申請中客戶端以及服務(wù)端在服務(wù)管理中心服務(wù)器中注冊完之后,可以訂閱服務(wù)或者取消訂閱的服務(wù),并且,客戶端以及服務(wù)端還可以注銷在服務(wù)管理中心服務(wù)器中的注冊。另外,當服務(wù)端的服務(wù)需要升級或者注銷時,將會主動上報自己的情況,服務(wù)管理中心服務(wù)器會通知其他已訂閱的關(guān)心該服務(wù)的服務(wù)端以及客戶端。
s103:根據(jù)所獲取到的負載信息以及本地存儲的負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。
進一步的,在獲取到負載信息后,需要根據(jù)本地存儲的負載均衡算法,確定多個提供服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端中到底哪一個服務(wù)端執(zhí)行服務(wù),即,確定待執(zhí)行服務(wù)的服務(wù)端,并將所接收到的服務(wù)獲取請求發(fā)送給該待執(zhí)行服務(wù)的服務(wù)端。
在此需要說明的是,負載均衡算法是預(yù)先內(nèi)置到本地程序中的,也就是說,假設(shè)客戶端具有負載均衡功能,那么該客戶端的開發(fā)者在開發(fā)客戶端時會將選擇好的負載均衡算法寫入到客戶端程序中,該負載均衡算法可以是一個,也可以是兩個以上,在存在兩個以上的負載均衡算法時,可以根據(jù)不同的情況下,選擇一種負載均衡算法,總之,開發(fā)者可以根據(jù)實際情況以及自己需求的策略來選用并設(shè)定具有負載均衡功能的客戶端以及具有負載均衡功能的服務(wù)端中的負載均衡算法。
通過上述方法,服務(wù)管理中心服務(wù)器通過發(fā)送心跳包來獲取各提供服務(wù)的服務(wù)端的負載信息并存儲在本地,后續(xù),具有負載均衡功能的客戶端或者服務(wù)端均可以從服務(wù)管理中心服務(wù)器中獲取到所需服務(wù)端的負載信息,這樣能夠可以高效簡單的實現(xiàn)自帶負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)。
進一步的,為了能夠更好的說明服務(wù)端在服務(wù)管理中心服務(wù)器中注冊與服務(wù)管理中心服務(wù)器獲取服務(wù)端的負載信息的過程,以下結(jié)合圖2進行實例說明。
s201:服務(wù)端a將注冊請求發(fā)送給服務(wù)管理中心服務(wù)器a;
s202:服務(wù)管理中心服務(wù)器a根據(jù)各子服務(wù)管理中心服務(wù)器的負載信息進行負載均衡,選擇最優(yōu)負載的子服務(wù)管理中心服務(wù)器執(zhí)行注冊服務(wù);
s203:服務(wù)管理中心服務(wù)器a將注冊成功的信息返回給服務(wù)端a;
s204:服務(wù)管理中心服務(wù)器a將新注冊的服務(wù)端a的狀態(tài)信息同步給服務(wù)管理中心服務(wù)器b;
s205:服務(wù)管理中心服務(wù)器b將同步成功的信息返回給服務(wù)管理中心服務(wù)器a;
s206:服務(wù)管理中心服務(wù)器a將攜帶有負載信息獲取指令的心跳包發(fā)送給服務(wù)端a;
在此需要說明的是,由于服務(wù)端a是在服務(wù)管理中心服務(wù)器a中注冊的,因此,服務(wù)管理中心服務(wù)器a會監(jiān)測并獲取服務(wù)端a的負載信息。
s207:服務(wù)端a執(zhí)行負載信息獲取指令將負載信息返回給服務(wù)管理中心服務(wù)器a;
s208:服務(wù)管理中心服務(wù)器a將獲取到服務(wù)端a的負載信息發(fā)送給服務(wù)管理中心服務(wù)器b;
s209:服務(wù)管理中心服務(wù)器b返回同步成功的信息給服務(wù)管理中心服務(wù)器a;
s210:服務(wù)管理中心服務(wù)器b將攜帶有負載信息獲取指令的心跳包發(fā)送給服務(wù)端b;
在此需要說明的是,由于服務(wù)端b是在服務(wù)管理中心服務(wù)器b中注冊的,因此,服務(wù)管理中心服務(wù)器b會監(jiān)測并獲取服務(wù)端b的負載信息。
s211:服務(wù)端b執(zhí)行負載信息獲取指令將負載信息返回給服務(wù)管理中心服務(wù)器b;
另外,在實際應(yīng)用中,服務(wù)端以及客戶端也可以注銷在服務(wù)管理中心服務(wù)器中進行注銷,為了能夠更好的說明服務(wù)端在服務(wù)管理中心服務(wù)器中注銷已注冊的服務(wù),以下結(jié)合圖3進行實例說明。
s301:服務(wù)端a將注銷請求發(fā)送給服務(wù)管理中心服務(wù)器a;
s302:服務(wù)管理中心服務(wù)器a根據(jù)各子服務(wù)管理中心服務(wù)器的負載信息進行負載均衡,選擇最優(yōu)負載的子服務(wù)管理中心服務(wù)器執(zhí)行注銷服務(wù);
s303:服務(wù)管理中心服務(wù)器a將注銷成功的信息返回給服務(wù)端a;
s304:服務(wù)管理中心服務(wù)器a將注銷的服務(wù)端a的信息同步給服務(wù)管理中心服務(wù)器b;
s305:服務(wù)管理中心服務(wù)器b將注銷成功的信息返回給服務(wù)管理中心服務(wù)器a;
s306:服務(wù)管理中心服務(wù)器b服務(wù)端a注銷通知發(fā)送給服務(wù)端b。
進一步的,為了能夠更好的說明具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)的過程,以下結(jié)合圖4進行實例說明.
s401:客戶端將服務(wù)獲取請求發(fā)送給服務(wù)端a;
在此需要說明的是,客戶端本身不具有負載均衡功能,而服務(wù)端a是對外提供負載均衡服務(wù)的服務(wù)端,也就是說,服務(wù)端a具有負載均衡的功能,客戶端所發(fā)送的服務(wù)獲取請求實際上是經(jīng)過服務(wù)端a的負載均衡發(fā)往服務(wù)端b的,另外,服務(wù)獲取請求攜帶有服務(wù)標識。
s402:服務(wù)端a在本地查找服務(wù)端b的負載信息;
在此需要說明的是,服務(wù)端b是提供客戶端所需服務(wù)的,也就是說,服務(wù)端b包含有服務(wù)標識對應(yīng)的服務(wù)。
s403:服務(wù)端a向服務(wù)管理中心服務(wù)器a發(fā)送服務(wù)端b的信息獲取請求;
在此需要說明的是,服務(wù)端a如果在本地緩存中沒有查找到服務(wù)端b的信息,則需要從服務(wù)管理中心服務(wù)器a中獲取服務(wù)端b的信息,另外,服務(wù)端a是直接在服務(wù)管理中心服務(wù)器a中進行注冊過的。
s404:服務(wù)管理中心服務(wù)器a將服務(wù)端b的全局信息返回給服務(wù)端a;
在此需要說明的是,服務(wù)端b的全局信息包含服務(wù)端b的負載信息。
s405:服務(wù)端a根據(jù)每個子服務(wù)端b的負載信息進行負載均衡,選擇最優(yōu)負載的子服務(wù)端b執(zhí)行注冊服務(wù);
在此需要說明的是,圖4中所示的服務(wù)端b中是包含多個子服務(wù)端b的。
s406:服務(wù)端a將服務(wù)獲取請求發(fā)送給服務(wù)端b中最優(yōu)負載的子服務(wù)端b;
s407:服務(wù)端b中最優(yōu)負載的子服務(wù)端b返回服務(wù)獲取請求對應(yīng)的服務(wù)信息給服務(wù)端a;
s408:服務(wù)端a返回服務(wù)獲取請求對應(yīng)的服務(wù)信息給客戶端。
最后,本申請也給出了具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)中涉及到注冊、訂閱以及注銷時的服務(wù)端,客戶端以及服務(wù)管理中心服務(wù)器三者之間的架構(gòu)圖,具體如圖5所示,其中,服務(wù)管理中心服務(wù)器監(jiān)測并管理著不同的客戶端以及服務(wù)端。
在此需要說明的是,如圖5所示的客戶端與服務(wù)管理中心服務(wù)器只是舉例,并不表示只有這一種連接方式,具體怎么連接根據(jù)客戶端實際注冊情況來定,另外,服務(wù)端與服務(wù)管理中心服務(wù)器同理。
以上為本申請實施例提供的具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)方法,基于同樣的思路,本申請實施例還提供一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)裝置。
如圖6所示,本申請實施例提供的一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)裝置包括:
接收模塊601,用于接收服務(wù)獲取請求,其中,所述服務(wù)獲取請求中攜帶有服務(wù)標識;
獲取模塊602,用于從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息;
確定發(fā)送模塊603,用于根據(jù)所獲取到的負載信息以及本地存儲的負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。
所述接收模塊601具體用于,服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求,其中,服務(wù)端具有負載均衡功能;或客戶端接收用戶發(fā)送的服務(wù)獲取請求,其中,客戶端具有負載均衡功能。
所述裝置還包括:
注冊模塊604,用于在所述接收模塊601接收客戶端發(fā)送的服務(wù)獲取請求之前,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,子服務(wù)管理中心服務(wù)器接收具有負載均衡功能的服務(wù)端和/或每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,其中,所述接收模塊201位于所述具有負載均衡功能的服務(wù)端內(nèi);或
還用于,在所述接收模塊601接收用戶發(fā)送的服務(wù)獲取請求之前,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,子服務(wù)管理中心服務(wù)器接收客戶端以及每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,其中,所述接收模塊601位于所述客戶端內(nèi)。
所述裝置還包括:
預(yù)先存儲模塊605,用于針對每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,服務(wù)管理中心服務(wù)器向該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送心跳包,其中,所述心跳包中攜帶有負載信息獲取指令,所述服務(wù)管理中心服務(wù)器中注冊有包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息。
所述裝置還包括:
同步模塊606,用于在所述預(yù)先存儲模塊605接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息之后,當至少包括兩個服務(wù)管理中心服務(wù)器時,將接收到的該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息同步到其他服務(wù)管理中心服務(wù)器中。
另外,本申請實施例還提供一種具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng),該系統(tǒng)包括:
處理器、計算機可讀存儲器、和計算機可讀存儲介質(zhì);
程序,用于接收服務(wù)獲取請求,其中,所述服務(wù)獲取請求中攜帶有服務(wù)標識,從服務(wù)管理中心服務(wù)器,獲取預(yù)先存儲的每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端的負載信息,根據(jù)所獲取到的負載信息以及本地存儲的負載均衡算法,確定待執(zhí)行服務(wù)的服務(wù)端,并將所述服務(wù)獲取請求發(fā)送給所述待執(zhí)行服務(wù)的服務(wù)端。
所述程序存儲在所述計算機可讀存儲介質(zhì)上,用于由所述處理器經(jīng)由所述計算機可讀存儲器執(zhí)行。
所述處理器、計算機可讀存儲器以及所述計算機可讀存儲介質(zhì)可以用圖7中的處理器、內(nèi)部存儲器、外部存儲器來實現(xiàn)。
其中,圖7為具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)組成結(jié)構(gòu)框圖,其中示出了具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)的主要部件。圖7中,處理器710、內(nèi)部存儲器705、總線橋720以及網(wǎng)絡(luò)接口715接入系統(tǒng)總線740,總線橋720用于橋接系統(tǒng)總線740和i/o總線745,i/o接口接入i/o總線745,usb接口以及外部存儲器與i/o接口連接。圖7中,處理器710可以為一個或多個處理器,每個處理器可以具有一個或者多個處理器內(nèi)核;內(nèi)部存儲器705為易失性存儲器,例如寄存器、緩存器、各種類型的隨機存取存儲器等;在具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)運行的時候,內(nèi)部存儲器705中的數(shù)據(jù)包括操作系統(tǒng)和應(yīng)用程序;網(wǎng)絡(luò)接口715可以為以太網(wǎng)接口、光纖接口等;系統(tǒng)總線740可以用來傳送數(shù)據(jù)信息、地址信息、以及控制信息;總線橋720可以用來進行協(xié)議轉(zhuǎn)換,將系統(tǒng)總線協(xié)議轉(zhuǎn)換為i/o協(xié)議或者將i/o協(xié)議轉(zhuǎn)換為系統(tǒng)總線協(xié)議以實現(xiàn)數(shù)據(jù)傳輸;i/o總線745用來數(shù)據(jù)信息和控制信息,還可以總線終結(jié)電阻或電路來降低信號反射干擾;i/o接口730主要與各種外部設(shè)備連接,例如鍵盤、鼠標、傳感器等等,閃存可以通過usb接口接入i/o總線,外部存儲器為非易失性存儲器,例如硬盤、光盤等。在具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)運行之后,處理器可以將存儲于外部存儲其中的數(shù)據(jù)讀取到內(nèi)部存儲器中,并對內(nèi)部存儲其中的系統(tǒng)指令進行處理,完成操作系統(tǒng)以及應(yīng)用程序的功能。該示例具有負載均衡的服務(wù)節(jié)點發(fā)現(xiàn)系統(tǒng)可以為位于臺式機、筆記本電腦、平板電腦、智能手機等。
優(yōu)選地,所述程序還用于,服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求,其中,服務(wù)端具有負載均衡功能;或客戶端接收用戶發(fā)送的服務(wù)獲取請求,其中,客戶端具有負載均衡功能。
優(yōu)選地,所述程序還用于,當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,在服務(wù)端接收客戶端發(fā)送的服務(wù)獲取請求之前,所述方法還包括:子服務(wù)管理中心服務(wù)器接收具有負載均衡功能的服務(wù)端和/或每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,注冊本地存儲的將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器;子服務(wù)管理中心服務(wù)將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器;或
當所述服務(wù)管理中心服務(wù)器內(nèi)部包括至少兩個子服務(wù)管理中心服務(wù)器時,在客戶端接收用戶發(fā)送的服務(wù)獲取請求之前,所述方法還包括:子服務(wù)管理中心服務(wù)器接收客戶端以及每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送的注冊請求,根據(jù)本地存儲的子服務(wù)管理中心服務(wù)器的負載信息,確定待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器,將所述注冊請求發(fā)送給待執(zhí)行注冊的子服務(wù)管理中心服務(wù)器。
優(yōu)選地,所述程序還用于,針對每個包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,服務(wù)管理中心服務(wù)器向該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端發(fā)送心跳包,其中,所述心跳包中攜帶有負載信息獲取指令,所述服務(wù)管理中心服務(wù)器中注冊有包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端,接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息。
優(yōu)選地,所述程序還用于,當至少包括兩個服務(wù)管理中心服務(wù)器時,在接收該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息之后,所述方法還包括:將接收到的該包含所述服務(wù)標識對應(yīng)的服務(wù)的服務(wù)端執(zhí)行所攜帶的負載信息獲取指令返回的最新的負載信息同步到其他服務(wù)管理中心服務(wù)器中。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。