本發(fā)明涉及互聯(lián)網(wǎng)技術中的代理轉發(fā)領域,特別是一種內容分發(fā)網(wǎng)絡的透明代理轉發(fā)方法。
背景技術:
隨著互聯(lián)網(wǎng)的深度發(fā)展,越來越多的行業(yè)加入到互聯(lián)網(wǎng)浪潮中,產(chǎn)生了無數(shù)基于互聯(lián)網(wǎng)的應用,提供基于文字、圖片、視頻、大數(shù)據(jù)服務等等。但隨著應用和用戶數(shù)的井噴的發(fā)展,網(wǎng)絡游戲產(chǎn)業(yè)逐漸成熟,特別是網(wǎng)絡視頻等需要高帶寬的內容,應用服務對服務器和網(wǎng)絡帶寬的要求越來越高,外加不同地域的網(wǎng)絡基礎設施建設水平良莠不齊,信息在網(wǎng)絡間傳輸?shù)膲毫υ絹碓酱螅M而導致用戶與內容提供商之間信息傳輸愈來愈慢,降低了互聯(lián)網(wǎng)應用的使用體驗。
為解決上述問題,一種基于分布式網(wǎng)絡的內容存儲與分發(fā)的互聯(lián)網(wǎng)服務誕生了,這種互聯(lián)網(wǎng)服務即是cdn(contentdeliverynetwork,即內容分發(fā)網(wǎng)絡)。cdn是構建在網(wǎng)絡之上的內容分發(fā)網(wǎng)絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發(fā)、調度等功能模塊,使用戶就近獲取所需內容,降低網(wǎng)絡擁塞,提高用戶訪問響應速度和命中率。
cdn網(wǎng)絡節(jié)點主要起到緩存和代理的功能。在緩存沒有命中的情況下,用戶的請求可以分解為兩個階段,第一階段是用戶的請求發(fā)送到cdn節(jié)點,第二個階段是cdn節(jié)點發(fā)送到源頭站。兩個階段的傳輸過程可以做到彼此獨立,因此如果靈活的配置兩個階段的http傳輸參數(shù),主要包括傳輸協(xié)議(https、http),轉發(fā)端口(port),以及源站ip等信息。
現(xiàn)有cdn網(wǎng)絡加速主要支持80、443端口的加速,也就是說如果用戶要對非上述兩個端口加速,不能夠很好的支持。cdn對非80、443端口加速不支持,對于http請求兩個階段的鏈路參數(shù)設置不夠靈活。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題是提供一種內容分發(fā)網(wǎng)絡的透明代理轉發(fā)方法,通過在節(jié)點提取第一階段的請求中包含的域名信息,再根據(jù)域名信息查找該域名配置的代理轉發(fā)參數(shù),根據(jù)代理轉發(fā)參數(shù)來建立第二階段的請求鏈接,實現(xiàn)不同域名轉發(fā)到相同或不同主機的不同端口。
為解決上述技術問題,本發(fā)明采用的技術方案是:
一種內容分發(fā)網(wǎng)絡的透明代理轉發(fā)方法,包括以下步驟:
步驟1:在cdn系統(tǒng)中設置域名的代理轉發(fā)參數(shù),所述代理轉發(fā)參數(shù)包括:源站地址、源站監(jiān)聽端口、cdn和源站之間的傳輸協(xié)議、cdn節(jié)點監(jiān)聽該域名請求的端口、外部用戶訪問cdn節(jié)點的傳輸協(xié)議、源站權重;
步驟2:將步驟1所述代理轉發(fā)參數(shù)作為一個參數(shù)組,所述參數(shù)組為一個或者多個,以域名作為鍵值,將配置的參數(shù)組同步到所有的cdn節(jié)點的配置數(shù)據(jù)庫中;cdn節(jié)點讀取域名的配置信息中的所有“cdn節(jié)點監(jiān)聽該域名請求的端口”,并監(jiān)聽這些端口;
步驟3:當外部訪問用戶發(fā)起的請求在cdn節(jié)點沒有命中緩存資源,需要回源時,根據(jù)設置的代理轉發(fā)參數(shù)做回源目的地址選擇,即:
步驟3.1:提取當前訪問鏈接的參數(shù),包括域名、傳輸協(xié)議和訪問cdn節(jié)點的端口;
步驟3.2:根據(jù)當前訪問鏈接域名,在節(jié)點的配置數(shù)據(jù)庫中查詢源站管理員的所有源站配置參數(shù)組;
步驟3.3:針對每組參數(shù),如果“外部用戶訪問cdn節(jié)點的協(xié)議傳輸”、“cdn節(jié)點監(jiān)聽該域名請求的端口”分別與當前請求的傳輸協(xié)議、訪問端口匹配,則將該參數(shù)組加入備選轉發(fā)隊列;
步驟3.4:根據(jù)源站權重隨機選擇一個滿足條件的源站配置的參數(shù)組,提取源站的代理轉發(fā)參數(shù),建立節(jié)點與源站的鏈接。
進一步的,若沒有設置cdn和源站之間的傳輸協(xié)議,則繼承用戶訪問cdn節(jié)點的傳輸協(xié)議。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:1)能對http訪問的不同端口、不同主題之間無縫轉發(fā)。2)能夠基于域名配置,實現(xiàn)不同域名轉發(fā)到相同或不同主機的不同端口。
附圖說明
圖1是本發(fā)明中透明轉發(fā)基本架構示意圖。
具體實施方式
下面結合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。
為了靈活實現(xiàn)cdn節(jié)點在兩個階段的代理轉發(fā),本發(fā)明通過在節(jié)點提取第一階段的請求中包含的域名信息,再根據(jù)域名信息查找該域名配置的代理轉發(fā)參數(shù),根據(jù)代理轉發(fā)參數(shù)來建立第二階段的請求鏈接。詳述如下:
1、cdn源站管理員根據(jù)源站情況(源站配置的情況,比如源站監(jiān)聽的端口、傳輸協(xié)議http或https),在cdn系統(tǒng)中設置域名的代理轉發(fā)參數(shù),參數(shù)包括:
1)源站地址--upstream_ip,必填參數(shù);
2)源站監(jiān)聽端口--upstream_port,默認http轉發(fā)到80,https轉發(fā)到443;
3)cdn和源站之間的傳輸協(xié)議--upstream_http_scheme,值為“http”或“https”,如果沒有設置,則繼承用戶訪問cdn節(jié)點的傳輸協(xié)議;
4)cdn節(jié)點監(jiān)聽該域名請求的端口--listen_port,必填寫參數(shù);
5)外部用戶訪問cdn節(jié)點的傳輸協(xié)議(http或https)--original_scheme,值為“http”或“https”,必填參數(shù);
6)源站權重--upstream_weight,必填參數(shù)。
以上參數(shù)作為一個參數(shù)組,可以設置一個或者多個參數(shù)組。以域名(字域名級別,支持范解析格式)作為鍵值,將配置的參數(shù)組同步到所有的cdn節(jié)點的配置數(shù)據(jù)庫中;cdn節(jié)點讀取域名的配置信息中所有“cdn節(jié)點監(jiān)聽該域名請求的端口”,并監(jiān)聽這些端口。
2、當外部訪問用戶發(fā)起的請求在cdn節(jié)點沒有命中緩存資源,需要回源時,根據(jù)上述設置參數(shù)做回源目的地址選擇,具體為:
1)提取當前訪問鏈接的參數(shù),包括域名host、傳輸協(xié)議scheme、訪問cdn節(jié)點的端口port。
2)根據(jù)當前訪問鏈接的域名,在節(jié)點的配置數(shù)據(jù)庫中查詢源站管理員的所有源站配置參數(shù)組。
3)針對每個參數(shù)組,如果scheme(cdn節(jié)點實際接收到用戶的請求的傳輸協(xié)議)等于original_scheme(配置中“外部用戶訪問cdn節(jié)點的傳輸協(xié)議(http或https)),port等于listen_port,表示當前的參數(shù)組滿足回源條件,選出所有滿足的條件的參數(shù)組。
4)通過上述步驟得到滿足條件的源站組,根據(jù)upstream_weight隨機選擇一個源站配置,提取源站的參數(shù),如upstream_ip,upstream_port,upstream_http_scheme,建立節(jié)點與源站的鏈接。
最終,cdn實現(xiàn)不同傳輸協(xié)議、不同監(jiān)聽端口之間的透明轉發(fā)。
如圖1所示,www.test.com這個子域名針對221端口,配置的代理參數(shù)為:
{“upstream_ip”:10.8.2.1,
“upstream_port”:443,
“upstream_http_scheme”:https,
“l(fā)isten_port”:221,
“original_scheme”:http,
“upstream_weight”:50,
}
當接收到221端口的http請求后,首先提取出http的host信息--www.test.com,根據(jù)host到數(shù)據(jù)庫中查找到www.test.com的代理配置,然后篩選復合條件的配置,作為建立第二階段請求,即回源站的請求的鏈接建立的參數(shù)。