本發(fā)明涉及網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,特別涉及一種用戶請(qǐng)求的分發(fā)方法及系統(tǒng)。
背景技術(shù):
當(dāng)前內(nèi)容分發(fā)網(wǎng)絡(luò)會(huì)在整個(gè)網(wǎng)絡(luò)架構(gòu)中部署許多緩存節(jié)點(diǎn)服務(wù)器(包括邊緣節(jié)點(diǎn)服務(wù)器、中轉(zhuǎn)節(jié)點(diǎn)服務(wù)器)來達(dá)到提升用戶訪問體驗(yàn)、減輕網(wǎng)絡(luò)擁塞的問題;然而,當(dāng)用戶請(qǐng)求的資源在緩存節(jié)點(diǎn)中沒有緩存時(shí),就需要回源站獲取資源。為了實(shí)現(xiàn)最佳的回源效果,通??梢酝ㄟ^路由選路來動(dòng)態(tài)選擇最優(yōu)路徑回源,用戶請(qǐng)求到達(dá)邊緣節(jié)點(diǎn)后,可能直接回源,也可能通過中轉(zhuǎn)節(jié)點(diǎn)后再回源。如果最優(yōu)路徑一直是通過某中轉(zhuǎn)節(jié)點(diǎn)再回源,此時(shí)可能出現(xiàn)某個(gè)客戶的回源請(qǐng)求一直集中在該中轉(zhuǎn)節(jié)點(diǎn)上,這樣會(huì)導(dǎo)致節(jié)點(diǎn)負(fù)載高,不僅影響回源加速效果,還可能會(huì)導(dǎo)致流量掉坑的問題。雖然傳統(tǒng)輪詢方式通過讓用戶請(qǐng)求在到達(dá)邊緣節(jié)點(diǎn)后,將請(qǐng)求輪流轉(zhuǎn)發(fā)到幾個(gè)中轉(zhuǎn)節(jié)點(diǎn)上以降低中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載,但是仍然存在以下幾個(gè)弊端:
1)傳統(tǒng)輪詢?cè)谟脩粽?qǐng)求到達(dá)邊緣節(jié)點(diǎn)后,請(qǐng)求會(huì)被輪流轉(zhuǎn)發(fā)到所有中轉(zhuǎn)節(jié)點(diǎn),這樣會(huì)導(dǎo)致部分用戶請(qǐng)求被轉(zhuǎn)發(fā)到回源效果較差的中轉(zhuǎn)節(jié)點(diǎn)上,雖然降低了中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載,但是影響客戶回源的加速效果。
2)對(duì)于有些客戶,如淘寶用戶在進(jìn)行購(gòu)物體驗(yàn)時(shí),需要保證用戶一直處于自己登錄賬戶所在的頁(yè)面,而不能出現(xiàn)客戶登出的問題,也就是需要保持登錄。然而,通過傳統(tǒng)輪詢的方式來降低中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載的過程中,會(huì)導(dǎo)致用戶賬號(hào)頻繁登出的問題。
由上可見,現(xiàn)有的進(jìn)行用戶請(qǐng)求分發(fā)的方式,無(wú)法同時(shí)實(shí)現(xiàn)降低中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載和保持登錄這兩個(gè)需求。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種用戶請(qǐng)求的分發(fā)方法及系統(tǒng)。所述技術(shù)方案如下:
一方面,一種用戶請(qǐng)求的分發(fā)方法,所述方法包括:
客戶端獲取用戶請(qǐng)求,根據(jù)所述用戶請(qǐng)求,從至少一個(gè)邊緣節(jié)點(diǎn)中確定目標(biāo)邊緣節(jié)點(diǎn),并將所述用戶請(qǐng)求調(diào)度至所述目標(biāo)邊緣節(jié)點(diǎn)處;
所述目標(biāo)邊緣節(jié)點(diǎn)查詢所述用戶請(qǐng)求對(duì)應(yīng)的最優(yōu)回源路徑;
當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn)時(shí),所述目標(biāo)邊緣節(jié)點(diǎn)檢測(cè)自身到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)之間的時(shí)延,并根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn);
所述目標(biāo)邊緣節(jié)點(diǎn)將所述用戶請(qǐng)求的數(shù)據(jù)量分?jǐn)傊了鲋辽僖粋€(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)上;
各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
進(jìn)一步地,所述方法還包括:
當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為源服務(wù)器時(shí),所述目標(biāo)邊緣節(jié)點(diǎn)根據(jù)所述用戶請(qǐng)求的請(qǐng)求標(biāo)識(shí),確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
進(jìn)一步地,計(jì)算所述客戶端對(duì)應(yīng)的源服務(wù)器的具體步驟包括:
將各個(gè)源服務(wù)器ip地址散列至哈希環(huán)中,以所述客戶端ip地址為索引,進(jìn)行一致性哈希計(jì)算,并將計(jì)算出的哈希值映射至哈希環(huán)中。
進(jìn)一步地,在所述哈希環(huán)中,從所述客戶端ip地址的哈希值位置出發(fā),沿預(yù)設(shè)方向搜索源服務(wù)器ip地址的哈希值位置,并將搜索到的第一個(gè)源服務(wù)器ip地址的哈希值位置處表征的源服務(wù)器確定為所述客戶端對(duì)應(yīng)的源服務(wù)器。
進(jìn)一步地,根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)的具體步驟包括:
將時(shí)延最低的中轉(zhuǎn)節(jié)點(diǎn)確定為最優(yōu)中轉(zhuǎn)節(jié)點(diǎn),并計(jì)算各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例;
將計(jì)算的時(shí)延差比例小于或者等于預(yù)設(shè)比例閾值的中轉(zhuǎn)節(jié)點(diǎn)確定為滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)。
進(jìn)一步地,按照下述公式計(jì)算各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例:
其中,σi表示第i個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例,ti表示第i個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延,tb表示所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延。
進(jìn)一步地,根據(jù)所述用戶請(qǐng)求,從至少一個(gè)邊緣節(jié)點(diǎn)中確定目標(biāo)邊緣節(jié)點(diǎn)的具體步驟包括:
提取所述用戶請(qǐng)求中包含的請(qǐng)求標(biāo)識(shí),并計(jì)算所述請(qǐng)求標(biāo)識(shí)對(duì)應(yīng)的哈希值;
根據(jù)預(yù)設(shè)的哈希值與邊緣節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系,確定與計(jì)算的所述哈希值相對(duì)應(yīng)的目標(biāo)邊緣節(jié)點(diǎn);其中,所述請(qǐng)求標(biāo)識(shí)包括統(tǒng)一資源定位符或者域名。
另一方面,一種用戶請(qǐng)求的分發(fā)系統(tǒng),所述系統(tǒng)包括客戶端、邊緣節(jié)點(diǎn)、中轉(zhuǎn)節(jié)點(diǎn)以及源服務(wù)器,其中:
所述客戶端,用于獲取用戶請(qǐng)求,根據(jù)所述用戶請(qǐng)求,從至少一個(gè)邊緣節(jié)點(diǎn)中確定目標(biāo)邊緣節(jié)點(diǎn),并將所述用戶請(qǐng)求調(diào)度至所述目標(biāo)邊緣節(jié)點(diǎn)處;
所述目標(biāo)邊緣節(jié)點(diǎn),用于查詢所述用戶請(qǐng)求對(duì)應(yīng)的最優(yōu)回源路徑;當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn)時(shí),檢測(cè)自身到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)之間的時(shí)延,并根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn);將所述用戶請(qǐng)求的數(shù)據(jù)量分?jǐn)傊了鲋辽僖粋€(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)上;
各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求的數(shù)據(jù)量發(fā)送至所述源服務(wù)器處。
進(jìn)一步地,所述目標(biāo)邊緣節(jié)點(diǎn)還用于,當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為源服務(wù)器時(shí),根據(jù)所述用戶請(qǐng)求的請(qǐng)求標(biāo)識(shí),確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
進(jìn)一步地,所述目標(biāo)邊緣節(jié)點(diǎn)和所述目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)中均包括哈希映射單元,所述哈希映射單元用于將各個(gè)源服務(wù)器ip地址散列至哈希環(huán)中,以所述客戶端ip地址為索引,進(jìn)行一致性哈希計(jì)算,并將計(jì)算出的哈希值映射至哈希環(huán)中。
進(jìn)一步地,;在所述哈希環(huán)中,從所述客戶端ip地址的哈希值位置出發(fā),沿預(yù)設(shè)方向搜索源服務(wù)器ip地址的哈希值位置,并將搜索到的第一個(gè)源服務(wù)器ip地址的哈希值位置處表征的源服務(wù)器確定為所述客戶端對(duì)應(yīng)的源服務(wù)器。
進(jìn)一步地,所述目標(biāo)邊緣節(jié)點(diǎn)中包括時(shí)延差比例計(jì)算單元,用于將時(shí)延最低的中轉(zhuǎn)節(jié)點(diǎn)確定為最優(yōu)中轉(zhuǎn)節(jié)點(diǎn),并計(jì)算各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例;將計(jì)算的時(shí)延差比例小于或者等于預(yù)設(shè)比例閾值的中轉(zhuǎn)節(jié)點(diǎn)確定為滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:在用戶請(qǐng)求調(diào)度至邊緣節(jié)點(diǎn)時(shí),如果確定的最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn),那么可以從所有的中轉(zhuǎn)節(jié)點(diǎn)中挑選時(shí)延符合預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn),并由所述至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)分?jǐn)傆脩粽?qǐng)求的數(shù)據(jù)量。這樣處理的意義在于,
(1)可以避免使用時(shí)延較低的中轉(zhuǎn)節(jié)點(diǎn),從而提高用戶請(qǐng)求分發(fā)的效率。
(2)為了在用戶請(qǐng)求分發(fā)過程中保持用戶的賬號(hào)處于登錄狀態(tài),可以為客戶端指定固定的源服務(wù)器,這樣,無(wú)論傳輸過程中的節(jié)點(diǎn)、協(xié)議是否發(fā)生變化,最終都會(huì)將客戶端的用戶請(qǐng)求發(fā)送至指定的源服務(wù)器,從而保證了在用戶請(qǐng)求分發(fā)過程中,用戶賬號(hào)始終是保持登錄的,提高了保持登錄的可靠性與穩(wěn)定性。
(3)本發(fā)明提供的技術(shù)方案,可以同時(shí)兼顧流量分?jǐn)偤捅3值卿浀男枨?,解決了現(xiàn)有技術(shù)中流量分?jǐn)偤捅3值卿浀拇胧┎荒芡瑫r(shí)使用的缺陷。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的用戶請(qǐng)求的分發(fā)方法流程圖;
圖2是本發(fā)明實(shí)施例一中目標(biāo)邊緣節(jié)點(diǎn)的確定方法流程圖;
圖3是本發(fā)明實(shí)施例一中目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)的確定方法流程圖;
圖4是本發(fā)明實(shí)施例一中源服務(wù)器確定方法流程圖;
圖5是本發(fā)明實(shí)施例一中一致性哈希算法的原理示意圖;
圖6是本發(fā)明實(shí)施例二提供的用戶請(qǐng)求的分發(fā)系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
實(shí)施例一
請(qǐng)參閱圖1,本申請(qǐng)實(shí)施方式提供一種用戶請(qǐng)求的分發(fā)方法,所述方法包括以下步驟。
s1:客戶端獲取用戶請(qǐng)求,根據(jù)所述用戶請(qǐng)求,從至少一個(gè)邊緣節(jié)點(diǎn)中確定目標(biāo)邊緣節(jié)點(diǎn),并將所述用戶請(qǐng)求調(diào)度至所述目標(biāo)邊緣節(jié)點(diǎn)處。
在本實(shí)施方式中,客戶端可以是用戶操作的電子設(shè)備,所述客戶端可以是臺(tái)式電腦、筆記本、智能手機(jī)、智能可穿戴設(shè)備等。用戶在所述客戶端中可以發(fā)送用戶請(qǐng)求,這樣,所述客戶端便可以接收到用戶發(fā)送的用戶請(qǐng)求。所述用戶請(qǐng)求可以由客戶端發(fā)往源服務(wù)器。在所述用戶請(qǐng)求中,可以包括所述客戶端的ip地址。
在本實(shí)施方式中,進(jìn)行用戶請(qǐng)求分發(fā)的系統(tǒng)架構(gòu)中可以包括多個(gè)邊緣節(jié)點(diǎn),這些邊緣節(jié)點(diǎn)可以接收各個(gè)客戶端發(fā)出的用戶請(qǐng)求。具體地,為了充分利用各個(gè)邊緣節(jié)點(diǎn)的資源,可以采用資源均衡策略,從至少一個(gè)邊緣節(jié)點(diǎn)中確定用于轉(zhuǎn)發(fā)所述用戶請(qǐng)求的目標(biāo)邊緣節(jié)點(diǎn)。
在本實(shí)施方式中,請(qǐng)參閱圖2,可以通過以下兩個(gè)子步驟確定所述目標(biāo)邊緣節(jié)點(diǎn)。
s11:提取所述用戶請(qǐng)求中包含的請(qǐng)求標(biāo)識(shí),并計(jì)算所述請(qǐng)求標(biāo)識(shí)對(duì)應(yīng)的哈希值;
s12:根據(jù)預(yù)設(shè)的哈希值與邊緣節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系,確定與計(jì)算的所述哈希值相對(duì)應(yīng)的目標(biāo)邊緣節(jié)點(diǎn);其中,所述請(qǐng)求標(biāo)識(shí)包括統(tǒng)一資源定位符或者域名。
在本實(shí)施方式中,所述用戶請(qǐng)求中包含的請(qǐng)求標(biāo)識(shí)可以是統(tǒng)一資源定位符url或者域名,根據(jù)所述請(qǐng)求標(biāo)識(shí),可以通過哈希算法計(jì)算得到該請(qǐng)求標(biāo)識(shí)對(duì)應(yīng)的哈希值。對(duì)于不同的請(qǐng)求標(biāo)識(shí),通常可以計(jì)算得到不同的哈希值,因此請(qǐng)求標(biāo)識(shí)與哈希值之間可以具備一一對(duì)應(yīng)的關(guān)系。在本實(shí)施方式中,為了使得各個(gè)邊緣節(jié)點(diǎn)都能夠進(jìn)行用戶請(qǐng)求的轉(zhuǎn)發(fā),可以預(yù)先建立哈希值與邊緣節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系。例如,凡是帶.cn后綴的請(qǐng)求標(biāo)識(shí),其計(jì)算出的哈希值均可以指向同一個(gè)邊緣節(jié)點(diǎn),這樣,該邊緣節(jié)點(diǎn)便可以專用于轉(zhuǎn)發(fā)帶.cn后綴的用戶請(qǐng)求。
在本實(shí)施方式中,根據(jù)預(yù)設(shè)的哈希值與邊緣節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系,便可以確定與計(jì)算的所述哈希值相對(duì)應(yīng)的目標(biāo)邊緣節(jié)點(diǎn)。這樣,從而可以將所述用戶請(qǐng)求調(diào)度至所述目標(biāo)邊緣節(jié)點(diǎn)處,使得所述目標(biāo)邊緣節(jié)點(diǎn)可以轉(zhuǎn)發(fā)所述用戶請(qǐng)求。
s2:所述目標(biāo)邊緣節(jié)點(diǎn)查詢所述用戶請(qǐng)求對(duì)應(yīng)的最優(yōu)回源路徑。
在本實(shí)施方式中,目標(biāo)邊緣節(jié)點(diǎn)在將所述用戶請(qǐng)求轉(zhuǎn)發(fā)至源服務(wù)器時(shí),可以查詢所述用戶請(qǐng)求對(duì)應(yīng)的最優(yōu)回源路徑。所述目標(biāo)邊緣節(jié)點(diǎn)可以在所述目標(biāo)邊緣節(jié)點(diǎn)與所述源服務(wù)器之間的各條傳輸路徑中,指定傳輸時(shí)延和/或傳輸丟包率最低的一條路徑,并將指定的該路徑作為最優(yōu)回源路徑。
在本實(shí)施方式中,根據(jù)網(wǎng)絡(luò)構(gòu)架的不同,最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象可能直接是源服務(wù)器,這樣,所述目標(biāo)邊緣節(jié)點(diǎn)可以通過該最優(yōu)回源路徑,直接將用戶請(qǐng)求發(fā)送至源服務(wù)器處即可。此外,最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象也有可能是中轉(zhuǎn)節(jié)點(diǎn),這樣,所述目標(biāo)邊緣節(jié)點(diǎn)需要將用戶請(qǐng)求轉(zhuǎn)發(fā)至所述中轉(zhuǎn)節(jié)點(diǎn),然后再由所述中轉(zhuǎn)節(jié)點(diǎn)將用戶請(qǐng)求轉(zhuǎn)發(fā)至源服務(wù)器。
s3:當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn)時(shí),所述目標(biāo)邊緣節(jié)點(diǎn)檢測(cè)自身到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)之間的時(shí)延,并根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn);
s4:所述目標(biāo)邊緣節(jié)點(diǎn)將所述用戶請(qǐng)求的數(shù)據(jù)量分?jǐn)傊了鲋辽僖粋€(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)上。
在現(xiàn)有技術(shù)中,當(dāng)需要通過中轉(zhuǎn)節(jié)點(diǎn)轉(zhuǎn)發(fā)用戶請(qǐng)求時(shí),通常是將網(wǎng)絡(luò)中所有的中轉(zhuǎn)節(jié)點(diǎn)均加入輪詢列表,并將用戶請(qǐng)求的數(shù)據(jù)量分?jǐn)偟剿械闹修D(zhuǎn)節(jié)點(diǎn)中。然而這樣就導(dǎo)致一部分的數(shù)據(jù)量會(huì)被分配到傳輸狀態(tài)較差的中轉(zhuǎn)節(jié)點(diǎn)上,從而導(dǎo)致整體的傳輸效率較低。在本實(shí)施方式中,當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn)時(shí),為了保證數(shù)據(jù)傳輸?shù)男?,可以不使用傳輸狀態(tài)較差的中轉(zhuǎn)節(jié)點(diǎn)。
具體地,在本實(shí)施方式中,所述目標(biāo)邊緣節(jié)點(diǎn)檢測(cè)自身到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)之間的時(shí)延,并根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)。其中,請(qǐng)參閱圖3,根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)的具體步驟可以包括以下兩個(gè)子步驟。
s31:將時(shí)延最低的中轉(zhuǎn)節(jié)點(diǎn)確定為最優(yōu)中轉(zhuǎn)節(jié)點(diǎn),并計(jì)算各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例;
s32:將計(jì)算的時(shí)延差比例小于或者等于預(yù)設(shè)比例閾值的中轉(zhuǎn)節(jié)點(diǎn)確定為滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)。
在本實(shí)施方式中,各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例可以通過以下公式進(jìn)行計(jì)算:
其中,σi表示第i個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例,ti表示第i個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延,tb表示所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延,其中,“ti-tb”的值是絕對(duì)值。
這樣,例如所述預(yù)設(shè)比例閾值為30%,那么則可以將計(jì)算出的時(shí)延差比例小于或者等于30%的中轉(zhuǎn)節(jié)點(diǎn)作為目標(biāo)中轉(zhuǎn)節(jié)點(diǎn),并將各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)加入輪詢列表,以分?jǐn)偹鲇脩粽?qǐng)求的數(shù)據(jù)量。
s5:各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)根據(jù)用戶請(qǐng)求標(biāo)識(shí),如ip,確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
在本實(shí)施方式中,為了保證在轉(zhuǎn)發(fā)用戶請(qǐng)求時(shí),用戶賬號(hào)還能夠保持登錄狀態(tài),可以為每個(gè)客戶端均指定固定的源服務(wù)器,這樣,無(wú)論用戶請(qǐng)求轉(zhuǎn)發(fā)過程如何,最終均可以將該用戶請(qǐng)求轉(zhuǎn)發(fā)到固定的源服務(wù)器處,從而能夠保證用戶賬號(hào)保持登錄狀態(tài)。
在本實(shí)施方式中,各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)接收到的用戶請(qǐng)求的數(shù)據(jù)量中,均可以包含發(fā)送該用戶請(qǐng)求的客戶端的ip地址。本申請(qǐng)可以通過哈希一致性算法,在客戶端與源服務(wù)器之間建立映射關(guān)系。具體地,請(qǐng)參閱圖4,計(jì)算所述客戶端對(duì)應(yīng)的源服務(wù)器可以包括以下兩個(gè)子步驟。
s51:將各個(gè)源服務(wù)器ip地址散列至哈希環(huán)中,以所述客戶端ip地址為索引,進(jìn)行一致性哈希計(jì)算,并將計(jì)算出的哈希值映射至哈希環(huán)中;
s52:在所述哈希環(huán)中,從所述客戶端ip地址的哈希值位置出發(fā),沿預(yù)設(shè)方向搜索源服務(wù)器ip地址的哈希值位置,并將搜索到的第一個(gè)源服務(wù)器ip地址的哈希值位置處表征的源服務(wù)器確定為所述客戶端對(duì)應(yīng)的源服務(wù)器。
請(qǐng)一并參閱圖5,可以通過哈希算法,計(jì)算網(wǎng)絡(luò)中各個(gè)源服務(wù)器的ip地址以及所述客戶端的ip地址的哈希值。由于不同的ip地址,其對(duì)應(yīng)的哈希值也各不相同。因此,可以將計(jì)算出的哈希值映射至哈希環(huán)中。這樣,每個(gè)ip地址在哈希環(huán)中均可以對(duì)應(yīng)一個(gè)位置。在圖5中,圓形表示各個(gè)源服務(wù)器ip地址對(duì)應(yīng)的位置,三角形代表以用戶ip為索引計(jì)算得到的哈希值。這樣,可以從所述客戶端ip地址的哈希值位置出發(fā),沿逆時(shí)針方向搜索源服務(wù)器ip地址的哈希值位置。從圖5中可以看出,搜索到的第一個(gè)源服務(wù)器ip地址的哈希值位置為標(biāo)有編號(hào)1的圓形。這樣,該位置對(duì)應(yīng)的源服務(wù)器便可以是所述客戶端對(duì)應(yīng)的源服務(wù)器。無(wú)論傳輸鏈路如何變化,從所述客戶端發(fā)出的用戶請(qǐng)求最終都會(huì)轉(zhuǎn)發(fā)至該編號(hào)為1的圓形對(duì)應(yīng)的源服務(wù)器處,從而能夠保持用戶賬號(hào)登錄。
在本申請(qǐng)一個(gè)實(shí)施方式中,當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為源服務(wù)器時(shí),所述目標(biāo)邊緣節(jié)點(diǎn)可以根據(jù)所述用戶請(qǐng)求,計(jì)算所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求直接發(fā)送至所述源服務(wù)器處。
在本實(shí)施方式中,下一個(gè)目標(biāo)對(duì)象為源服務(wù)器,因此無(wú)需經(jīng)過中轉(zhuǎn)節(jié)點(diǎn)流量分?jǐn)偟倪^程??梢灾苯硬捎貌襟Es51至s52中描述的方案,計(jì)算出所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求直接發(fā)送至所述源服務(wù)器處。
由上可見,在本實(shí)施方式中,通過中轉(zhuǎn)節(jié)點(diǎn)與最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)之間探測(cè)時(shí)延的差比例,對(duì)于小于或者等于預(yù)設(shè)差比例閾值的所有中轉(zhuǎn)節(jié)點(diǎn)的ip才會(huì)被加入到輪詢的待選列表里,這樣邊緣節(jié)點(diǎn)上的用戶請(qǐng)求只會(huì)在輪詢的ip待選列表里進(jìn)行轉(zhuǎn)發(fā),可以保證用戶請(qǐng)求只會(huì)被分?jǐn)偟交卦葱Ч^優(yōu)的幾個(gè)中轉(zhuǎn)節(jié)點(diǎn)上,而不會(huì)被轉(zhuǎn)發(fā)到較差的中轉(zhuǎn)節(jié)點(diǎn),既降低了中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載,又保證了回源加速效果。
此外,采用一致性哈希算法在用戶請(qǐng)求回源時(shí),以用戶ip地址為key計(jì)算得到一個(gè)哈希值,然后將所有源服務(wù)器的ip地址通過一致性哈希算法將其散列映射到哈希環(huán)中,從哈希環(huán)中查找key所對(duì)應(yīng)的源服務(wù)器ip地址,這樣同一個(gè)用戶ip地址通過一致性哈希計(jì)算會(huì)最終被固定映射到同一個(gè)源服務(wù)器ip地址,保證了同一用戶請(qǐng)求最終回同一個(gè)源。改進(jìn)的保持登錄與邊緣機(jī)器、協(xié)議類型及是否出現(xiàn)服務(wù)重啟都無(wú)關(guān),也無(wú)須像傳統(tǒng)保持登錄那樣通過記錄上一次選擇的下一跳ip作為下一次的回源ip,不僅可以解決傳統(tǒng)保持登錄的問題,還可以讓流量分?jǐn)偱c保持登錄功能共用,當(dāng)邊緣最優(yōu)下一跳為源服務(wù)器,則邊緣節(jié)點(diǎn)直接使用一致性哈希得到的ip回源;當(dāng)邊緣最優(yōu)下一跳為中轉(zhuǎn)節(jié)點(diǎn),若開啟流量分?jǐn)偣δ埽瑒t通過流量分?jǐn)倢⑦吘壵?qǐng)求的流量通過輪詢方式切換到幾個(gè)較優(yōu)中轉(zhuǎn)節(jié)點(diǎn)上,這樣中轉(zhuǎn)節(jié)點(diǎn)在選擇回源ip時(shí),仍通過一致性哈希算法獲取固定的回源ip,這樣既能保證邊緣的流量能夠均攤到幾個(gè)較優(yōu)中轉(zhuǎn)節(jié)點(diǎn)上,降低中轉(zhuǎn)節(jié)點(diǎn)的負(fù)載,又滿足保持登錄功能,保證同一個(gè)用戶最終回同一個(gè)源服務(wù)器。
實(shí)施例二
本申請(qǐng)實(shí)施方式還提供一種用戶請(qǐng)求的分發(fā)系統(tǒng),請(qǐng)參閱圖6,所述系統(tǒng)包括客戶端、邊緣節(jié)點(diǎn)、中轉(zhuǎn)節(jié)點(diǎn)以及源服務(wù)器,其中:
所述客戶端,用于獲取用戶請(qǐng)求,根據(jù)所述用戶請(qǐng)求,從至少一個(gè)邊緣節(jié)點(diǎn)中確定目標(biāo)邊緣節(jié)點(diǎn),并將所述用戶請(qǐng)求調(diào)度至所述目標(biāo)邊緣節(jié)點(diǎn)處;
所述目標(biāo)邊緣節(jié)點(diǎn),用于查詢所述用戶請(qǐng)求對(duì)應(yīng)的最優(yōu)回源路徑;當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn)時(shí),檢測(cè)自身到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)之間的時(shí)延,并根據(jù)檢測(cè)的時(shí)延從所述各個(gè)中轉(zhuǎn)節(jié)點(diǎn)中確定滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn);將所述用戶請(qǐng)求的數(shù)據(jù)量分?jǐn)傊了鲋辽僖粋€(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)上;
各個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn),用于用戶的請(qǐng)求標(biāo)識(shí),如ip,確定所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
圖6中,虛線可以表示第一個(gè)客戶端的用戶請(qǐng)求的傳輸路徑,實(shí)線可以表示第二個(gè)客戶端的用戶請(qǐng)求的傳輸路徑。在傳輸用戶請(qǐng)求時(shí),在中轉(zhuǎn)節(jié)點(diǎn)處可以進(jìn)行流量分?jǐn)?,后續(xù)還可以將分?jǐn)偟牧髁繀R總至指定的源服務(wù)器處。
在本實(shí)施方式中,所述目標(biāo)邊緣節(jié)點(diǎn)還用于,當(dāng)所述最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為源服務(wù)器時(shí),根據(jù)所述用戶請(qǐng)求,計(jì)算所述客戶端對(duì)應(yīng)的源服務(wù)器,并將所述用戶請(qǐng)求發(fā)送至所述源服務(wù)器處。
在本實(shí)施方式中,所述目標(biāo)邊緣節(jié)點(diǎn)和所述目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)中均包括哈希映射單元,所述哈希映射單元用于分別計(jì)算各個(gè)源服務(wù)器ip地址以及所述客戶端ip地址的哈希值,并將計(jì)算出的哈希值映射至哈希環(huán)中;在所述哈希環(huán)中,從所述客戶端ip地址的哈希值位置出發(fā),沿預(yù)設(shè)方向搜索源服務(wù)器ip地址的哈希值位置,并將搜索到的第一個(gè)源服務(wù)器ip地址的哈希值位置處表征的源服務(wù)器確定為所述客戶端對(duì)應(yīng)的源服務(wù)器。
在本實(shí)施方式中,所述目標(biāo)邊緣節(jié)點(diǎn)中包括時(shí)延差比例計(jì)算單元,用于將時(shí)延最低的中轉(zhuǎn)節(jié)點(diǎn)確定為最優(yōu)中轉(zhuǎn)節(jié)點(diǎn),并計(jì)算各個(gè)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延與所述最優(yōu)中轉(zhuǎn)節(jié)點(diǎn)的時(shí)延之間的時(shí)延差比例;將計(jì)算的時(shí)延差比例小于或者等于預(yù)設(shè)比例閾值的中轉(zhuǎn)節(jié)點(diǎn)確定為滿足預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)。
由上可見,本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:在用戶請(qǐng)求調(diào)度至邊緣節(jié)點(diǎn)時(shí),如果確定的最優(yōu)回源路徑指定的下一個(gè)目標(biāo)對(duì)象為中轉(zhuǎn)節(jié)點(diǎn),那么可以從所有的中轉(zhuǎn)節(jié)點(diǎn)中挑選時(shí)延符合預(yù)設(shè)條件的至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn),并由所述至少一個(gè)目標(biāo)中轉(zhuǎn)節(jié)點(diǎn)分?jǐn)傆脩粽?qǐng)求的數(shù)據(jù)量。這樣處理的意義在于,(1)可以避免使用時(shí)延較低的中轉(zhuǎn)節(jié)點(diǎn),從而提高用戶請(qǐng)求分發(fā)的效率。(2)此外,為了在用戶請(qǐng)求分發(fā)過程中保持用戶的賬號(hào)處于登錄狀態(tài),可以為客戶端指定固定的源服務(wù)器,這樣,無(wú)論傳輸過程中的節(jié)點(diǎn)、協(xié)議是否發(fā)生變化,最終都會(huì)將客戶端的用戶請(qǐng)求發(fā)送至指定的源服務(wù)器,從而保證了在用戶請(qǐng)求分發(fā)過程中,用戶賬號(hào)始終是保持登錄的,提高了保持登錄的可靠性與穩(wěn)定性。(3)本發(fā)明提供的技術(shù)方案,可以同時(shí)兼顧流量分?jǐn)偤捅3值卿浀男枨?,解決了現(xiàn)有技術(shù)中流量分?jǐn)偤捅3值卿浀拇胧┎荒芡瑫r(shí)使用的缺陷。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。