本發(fā)明涉及通信技術(shù)領(lǐng)域,具體是一種虛鏈路實現(xiàn)集群服務(wù)器響應(yīng)請求的方法。
背景技術(shù):
集群是由一些互相連接在一起的計算機構(gòu)成的一個并行或分布式系統(tǒng)。服務(wù)器集群系統(tǒng)通俗地講就是把多臺服務(wù)器通過快速通信鏈路連接起來,從外部看來,這些服務(wù)器就像一臺服務(wù)器在工作,而對內(nèi)來說,外面來的負(fù)載通過一定的機制動態(tài)地分配到這些節(jié)點機中去,從而達(dá)到超級服務(wù)器才有的高性能、高可用。通常分為前端調(diào)度服務(wù)器和后臺提供服務(wù)的服務(wù)器兩個部分。調(diào)度部分負(fù)責(zé)把客戶端的請求按照不同的策略分配給后臺服務(wù)節(jié)點,而后臺節(jié)點是真正提供應(yīng)用程序服務(wù)的部分。但是,這種傳統(tǒng)的實現(xiàn)方法會增加調(diào)度服務(wù)器的負(fù)擔(dān),同時也會影響集群服務(wù)器的服務(wù)質(zhì)量。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種虛鏈路實現(xiàn)集群服務(wù)器響應(yīng)請求的方法,解決了集群中調(diào)度服務(wù)器負(fù)載壓力過大的問題,提高了集群服務(wù)器響應(yīng)客戶端請求的效率。
本發(fā)明是通過如下技術(shù)方案實現(xiàn)的:
一種虛鏈路實現(xiàn)集群服務(wù)器響應(yīng)請求的方法,包括客戶端和后臺服務(wù)器,其特征在于:在所述客戶端和后臺服務(wù)器之間設(shè)有調(diào)度服務(wù)器;所述調(diào)度服務(wù)器在客戶端和后臺服務(wù)器之間建立交互的虛鏈路,該虛鏈路能夠提高訪問質(zhì)量,優(yōu)化后臺服務(wù)器性能。
優(yōu)選的是,所述調(diào)度服務(wù)器采用狀態(tài)機機制維護虛鏈路。
優(yōu)選的是,所述狀態(tài)機包括以下狀態(tài):接收狀態(tài):接收客戶端的請求消息;檢查狀態(tài):檢查客戶端發(fā)來的請求消息的大小;始建狀態(tài):建立虛鏈路;轉(zhuǎn)發(fā)狀態(tài):正常途徑轉(zhuǎn)發(fā)客戶端的請求消息;維護狀態(tài):維護虛鏈路的正常運行;拆除狀態(tài):拆除通信結(jié)束后的虛鏈路。
優(yōu)選的是,所述狀態(tài)機轉(zhuǎn)換機制具體如下步驟,步驟一:當(dāng)客戶端請求第一次到達(dá)調(diào)度服務(wù)器時,調(diào)度服務(wù)器進(jìn)入接收狀態(tài),接收用戶請求;步驟二:接收完畢后,進(jìn)入檢查狀態(tài);將根據(jù)設(shè)置的臨界值(可隨不同的鏈路帶寬調(diào)整不同的臨界值)檢查數(shù)據(jù)包中請求服務(wù)的大小,當(dāng)超過這個臨界值,進(jìn)入始建狀態(tài);始建狀態(tài)中,調(diào)度服務(wù)器開始為客戶端和相應(yīng)后臺服務(wù)器建立虛鏈路,并將虛鏈路信息通告給客戶端和相應(yīng)后臺服務(wù)器;如果沒有超過這一臨界值,則調(diào)度服務(wù)器不會為客戶端和相應(yīng)的后臺服務(wù)器建立虛鏈路,而是進(jìn)入轉(zhuǎn)發(fā)狀態(tài),數(shù)據(jù)包依舊通過調(diào)度服務(wù)器到達(dá)后臺服務(wù)器;步驟三:虛鏈路建立好之后,進(jìn)入維護狀態(tài),調(diào)度服務(wù)器會周期性(2s)發(fā)送報文,查看虛鏈路是否正常運行;步驟四:當(dāng)客戶端與相應(yīng)后臺服務(wù)器之間通信結(jié)束后,調(diào)度服務(wù)器進(jìn)入拆除狀態(tài),拆除虛鏈路。
優(yōu)選的是,當(dāng)所述客戶端請求服務(wù)的大小滿足調(diào)度服務(wù)器中設(shè)置的臨界值時,才會為通信雙方建立虛鏈路;虛鏈路建立后,調(diào)度服務(wù)器會周期性(2s)的發(fā)送報文給客戶端和后臺服務(wù)器確認(rèn)虛鏈路的正常工作,客戶端和后臺服務(wù)器收到后會回復(fù)確認(rèn)報文給調(diào)度服務(wù)器,調(diào)度服務(wù)器在特定時間(5s)內(nèi)沒有收到二者的回復(fù)將會啟用實際鏈路進(jìn)行轉(zhuǎn)發(fā),防止虛鏈路故障影響雙方通信。
優(yōu)選的是,虛鏈路的拆除具有預(yù)知性;當(dāng)請求服務(wù)快結(jié)束,也就是還剩五個數(shù)據(jù)包沒有發(fā)送時,客戶端在通過虛鏈路發(fā)往后臺服務(wù)器的數(shù)據(jù)包中將會設(shè)置一個數(shù)值為5的標(biāo)識位,之后每發(fā)一個包,標(biāo)識位便減一,同時也會拷貝一份此消息通過實際鏈路發(fā)向調(diào)度服務(wù)器,這樣調(diào)度服務(wù)器會得到通知,不久此虛擬鏈路就會進(jìn)入空閑狀態(tài),收到標(biāo)識位為1的數(shù)據(jù)包后,便準(zhǔn)備拆除虛鏈路。
優(yōu)選的是,所述客戶端和后臺服務(wù)器之間利用報文傳送進(jìn)行通信。
優(yōu)選的是,所述報文傳送具體包括以下類型:Query報文:承載客戶端向調(diào)度服務(wù)器發(fā)送的請求消息;Normal報文:承載調(diào)度服務(wù)器向客戶端返回需正常發(fā)送的消息;Virtual報文:承載調(diào)度服務(wù)器向客戶端和后臺相應(yīng)服務(wù)器發(fā)送建立虛鏈路的消息;Check報文:承載調(diào)度服務(wù)器向客戶端和后臺相應(yīng)服務(wù)器周期性發(fā)送檢查虛鏈路狀態(tài)的消息;Ack報文:承載客戶端和相應(yīng)后臺服務(wù)器向調(diào)度服務(wù)器返回確認(rèn)檢查的消息;Hello報文:承載客戶端直接向后臺相應(yīng)服務(wù)器發(fā)送的信息;Replay報文:承載調(diào)度服務(wù)器響應(yīng)客戶端請求消息的報文;Answer報文:承載相應(yīng)后臺服務(wù)器響應(yīng)客戶端請求的報文。
優(yōu)選的是,所述客戶端和后臺服務(wù)器具體通信如下:步驟一:客戶端通過Query報文向集群中的調(diào)度服務(wù)器發(fā)送請求消息;步驟二:調(diào)度服務(wù)器接收到客戶端發(fā)來的Query報文后,將根據(jù)設(shè)置的臨界值(可隨不同的鏈路帶寬調(diào)整不同的臨界值)檢查數(shù)據(jù)包中請求服務(wù)的大??;如果沒有超過這個臨界值,則向客戶端返回一個Normal報文,告訴客戶端需經(jīng)過本調(diào)度服務(wù)器訪問集群中的服務(wù),也就是不會為此次服務(wù)建立一條虛鏈路;當(dāng)客戶端再次發(fā)送請求消息時,調(diào)度服務(wù)器將會為客戶端服務(wù),通過Reply報文將應(yīng)答返還給客戶端;步驟三:如果調(diào)度服務(wù)器接收到客戶端發(fā)來的數(shù)據(jù)包中請求服務(wù)大于臨界值,則同時向客戶端和相應(yīng)后臺服務(wù)器端發(fā)送Virtual報文,通知雙方將會為兩者之間建立一條虛鏈路,能夠通過虛鏈路進(jìn)行訪問服務(wù);步驟四:虛鏈路建立成功后,調(diào)度服務(wù)器會周期性發(fā)送Check報文檢查虛鏈路的運行狀態(tài),客戶端和相應(yīng)后臺服務(wù)器收到后,回復(fù)Ack報文確認(rèn)鏈路狀態(tài);步驟五:客戶端和后臺服務(wù)器便可通過虛鏈路進(jìn)行直接通信,客戶端發(fā)送hello報文給后臺服務(wù)器請求服務(wù),后臺服務(wù)器通過Answer報文響應(yīng)客戶端的請求。
本發(fā)明有益效果:
本發(fā)明中的客戶端和后臺相應(yīng)服務(wù)器之間虛鏈路的建立,使得客戶端可以繞過調(diào)度服務(wù)器直接與后臺服務(wù)器進(jìn)行通信,減輕了調(diào)度服務(wù)器的負(fù)擔(dān),提高了集群服務(wù)器響應(yīng)客戶端請求的效率;數(shù)據(jù)包中標(biāo)識位的設(shè)置,通知調(diào)度服務(wù)器及時拆除虛鏈路;臨界值的設(shè)定保證只為滿足條件的請求消息建立虛鏈路,減少服務(wù)器資源的浪費。
附圖說明
圖1為發(fā)明中的整體架構(gòu)示意圖;
圖2為調(diào)度服務(wù)器狀態(tài)機轉(zhuǎn)換圖;
圖3為工作流程圖。
具體實施方式
以下結(jié)合附圖,通過具體實施對本發(fā)明作進(jìn)一步的說明。
如圖1所示,客戶端請求先到達(dá)集群服務(wù)器中的調(diào)度服務(wù)器,由調(diào)度服務(wù)器決定客戶端和后臺服務(wù)器之間的通信方式是通過調(diào)度服務(wù)器轉(zhuǎn)發(fā)還是由虛鏈路直接建立通信。
如圖2所示,調(diào)度服務(wù)器狀態(tài)機的六個狀態(tài)轉(zhuǎn)換:
接收狀態(tài):接收客戶端的請求消息;
檢查狀態(tài):檢查客戶端發(fā)來的請求消息的大??;
始建狀態(tài):建立虛鏈路;
轉(zhuǎn)發(fā)狀態(tài):正常途徑轉(zhuǎn)發(fā)客戶端的請求消息;
維護狀態(tài):維護虛鏈路的正常運行;
拆除狀態(tài):拆除通信結(jié)束的虛鏈路。
其中,狀態(tài)機轉(zhuǎn)換機制具體如下步驟,
步驟一:當(dāng)客戶端請求第一次到達(dá)調(diào)度服務(wù)器時,調(diào)度服務(wù)器進(jìn)入接收狀態(tài),接收用戶請求;
步驟二:接收完畢后,進(jìn)入檢查狀態(tài);
將根據(jù)設(shè)置的臨界值(可隨不同的鏈路帶寬調(diào)整不同的臨界值)檢查數(shù)據(jù)包中請求服務(wù)的大小,當(dāng)超過這個臨界值,進(jìn)入始建狀態(tài);
始建狀態(tài)中,調(diào)度服務(wù)器開始為客戶端和相應(yīng)后臺服務(wù)器建立虛鏈路,并將虛鏈路信息通告給客戶端和相應(yīng)后臺服務(wù)器;
如果沒有超過這一臨界值,則調(diào)度服務(wù)器不會為客戶端和相應(yīng)的后臺服務(wù)器建立虛鏈路,而是進(jìn)入轉(zhuǎn)發(fā)狀態(tài),數(shù)據(jù)包依舊通過調(diào)度服務(wù)器到達(dá)后臺服務(wù)器;
步驟三:虛鏈路建立好之后,進(jìn)入維護狀態(tài),調(diào)度服務(wù)器會周期性(2s)發(fā)送報文,查看虛鏈路是否正常運行;
步驟四:當(dāng)客戶端與相應(yīng)后臺服務(wù)器之間通信結(jié)束后,調(diào)度服務(wù)器進(jìn)入拆除狀態(tài),拆除虛鏈路。
客戶端請求服務(wù)的大小滿足調(diào)度服務(wù)器中設(shè)置的臨界值時,才會為通信雙方建立虛鏈路;虛鏈路建立后,調(diào)度服務(wù)器會周期性(2s)的發(fā)送報文給客戶端和后臺服務(wù)器確認(rèn)虛鏈路的正常工作,客戶端和后臺服務(wù)器收到后會回復(fù)確認(rèn)報文給調(diào)度服務(wù)器,調(diào)度服務(wù)器在特定時間(5s)內(nèi)沒有收到二者的回復(fù)將會啟用實際鏈路進(jìn)行轉(zhuǎn)發(fā),防止虛鏈路故障影響雙方通信。虛鏈路的拆除具有預(yù)知性;當(dāng)請求服務(wù)快結(jié)束,也就是還剩五個數(shù)據(jù)包沒有發(fā)送時,客戶端在通過虛鏈路發(fā)往后臺服務(wù)器的數(shù)據(jù)包中將會設(shè)置一個數(shù)值為5的標(biāo)識位,之后每發(fā)一個包,標(biāo)識位便減一,同時也會拷貝一份此消息通過實際鏈路發(fā)向調(diào)度服務(wù)器,這樣調(diào)度服務(wù)器會得到通知,不久此虛擬鏈路就會進(jìn)入空閑狀態(tài),收到標(biāo)識位為1的數(shù)據(jù)包后,便準(zhǔn)備拆除虛鏈路。
客戶端和后臺服務(wù)器之間利用報文傳送進(jìn)行通信:
Query報文:承載客戶端向調(diào)度服務(wù)器發(fā)送的請求消息;
Normal報文:承載調(diào)度服務(wù)器向客戶端返回需正常發(fā)送的消息;
Virtual報文:承載調(diào)度服務(wù)器向客戶端和后臺相應(yīng)服務(wù)器發(fā)送建立虛鏈路的消息;
Check報文:承載調(diào)度服務(wù)器向客戶端和后臺相應(yīng)服務(wù)器周期性發(fā)送檢查虛鏈路狀態(tài)的消息;
Ack報文:承載客戶端和相應(yīng)后臺服務(wù)器向調(diào)度服務(wù)器返回確認(rèn)檢查的消息;
Hello報文:承載客戶端直接向后臺相應(yīng)服務(wù)器發(fā)送的信息;
Replay報文:承載調(diào)度服務(wù)器響應(yīng)客戶端請求消息的報文;
Answer報文:承載相應(yīng)后臺服務(wù)器響應(yīng)客戶端請求的報文。
客戶端和后臺服務(wù)器具體通信如下:
步驟一:客戶端通過Query報文向集群中的調(diào)度服務(wù)器發(fā)送請求消息;
步驟二:調(diào)度服務(wù)器接收到客戶端發(fā)來的Query報文后,將根據(jù)設(shè)置的臨界值(可隨不同的鏈路帶寬調(diào)整不同的臨界值)檢查數(shù)據(jù)包中請求服務(wù)的大?。?/p>
如果沒有超過這個臨界值,則向客戶端返回一個Normal報文,告訴客戶端需經(jīng)過本調(diào)度服務(wù)器訪問集群中的服務(wù),也就是不會為此次服務(wù)建立一條虛鏈路;當(dāng)客戶端再次發(fā)送請求消息時,調(diào)度服務(wù)器將會為客戶端服務(wù),通過Reply報文將應(yīng)答返還給客戶端;
步驟三:如果調(diào)度服務(wù)器接收到客戶端發(fā)來的數(shù)據(jù)包中請求服務(wù)大于臨界值,則同時向客戶端和相應(yīng)后臺服務(wù)器端發(fā)送Virtual報文,通知雙方將會為兩者之間建立一條虛鏈路,能夠通過虛鏈路進(jìn)行訪問服務(wù);
步驟四:虛鏈路建立成功后,調(diào)度服務(wù)器會周期性發(fā)送Check報文檢查虛鏈路的運行狀態(tài),客戶端和相應(yīng)后臺服務(wù)器收到后,回復(fù)Ack報文確認(rèn)鏈路狀態(tài);
步驟五:客戶端和后臺服務(wù)器便可通過虛鏈路進(jìn)行直接通信,客戶端發(fā)送hello報文給后臺服務(wù)器請求服務(wù),后臺服務(wù)器通過Answer報文響應(yīng)客戶端的請求。
虛鏈路的使用使得符合條件的請求數(shù)據(jù)包不必每次都通過集群中的調(diào)度服務(wù)器進(jìn)行轉(zhuǎn)發(fā),減輕了調(diào)度服務(wù)器的負(fù)擔(dān),提高了集群服務(wù)器響應(yīng)客戶端請求的效率。
如圖3所示,工作流程如下:
(1)客戶端通過Query報文向集群中的調(diào)度服務(wù)器發(fā)送請求消息;
(2)調(diào)度服務(wù)器接收到客戶端發(fā)來的Query報文后,將根據(jù)設(shè)置的臨界值(可隨不同的鏈路帶寬調(diào)整不同的臨界值)檢查數(shù)據(jù)包中請求服務(wù)的大??;
如果沒有超過這個臨界值,則向客戶端返回一個Normal報文,告訴客戶端需經(jīng)過本調(diào)度服務(wù)器訪問集群中的服務(wù),也就是不會為此次服務(wù)建立一條虛鏈路;當(dāng)客戶端再次發(fā)送請求消息時,調(diào)度服務(wù)器將會為客戶端服務(wù),通過Reply報文將應(yīng)答返還給客戶端;
(3)如果調(diào)度服務(wù)器接收到客戶端發(fā)來的數(shù)據(jù)包中請求服務(wù)大于臨界值,則同時向客戶端和相應(yīng)后臺服務(wù)器端發(fā)送Virtual報文,通知雙方將會為兩者之間建立一條虛鏈路,可以通過虛鏈路進(jìn)行訪問服務(wù);
(4)虛鏈路建立成功后,客戶端和后臺服務(wù)器便可通過虛鏈路進(jìn)行直接通信??蛻舳税l(fā)送hello報文給后臺服務(wù)器請求服務(wù),后臺服務(wù)器通過Answer報文響應(yīng)客戶端的請求。
(5)當(dāng)客戶端請求服務(wù)快結(jié)束,也就是還剩五個數(shù)據(jù)包沒有發(fā)送時,客戶端在通過虛鏈路發(fā)往后臺服務(wù)器的數(shù)據(jù)包中將會設(shè)置一個數(shù)值為5的標(biāo)識位,之后每發(fā)一個包標(biāo)識位便減一,同時也會拷貝一份此消息通過實際鏈路發(fā)向調(diào)度服務(wù)器。這樣調(diào)度服務(wù)器會得到通知,不久此虛擬鏈路就會進(jìn)入空閑狀態(tài)。
(6)調(diào)度服務(wù)器在收到標(biāo)識位為1的數(shù)據(jù)包后,便準(zhǔn)備拆除虛鏈路。這樣一次完整的請求服務(wù)就接收了;
(7)當(dāng)有新的客戶端請求到達(dá)集群服務(wù)器后,重復(fù)執(zhí)行上述步驟。
本發(fā)明中的客戶端和后臺相應(yīng)服務(wù)器之間虛鏈路的建立,使得客戶端可以繞過調(diào)度服務(wù)器直接與后臺服務(wù)器進(jìn)行通信,減輕了調(diào)度服務(wù)器的負(fù)擔(dān),提高了集群服務(wù)器響應(yīng)客戶端請求的效率;數(shù)據(jù)包中標(biāo)識位的設(shè)置,通知調(diào)度服務(wù)器及時拆除虛鏈路;臨界值的設(shè)定保證只為滿足條件的請求消息建立虛鏈路,減少服務(wù)器資源的浪費。