網(wǎng)絡(luò)通道加速方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別是涉及一種網(wǎng)絡(luò)通道加速方法和系統(tǒng)。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)網(wǎng)站通常擁有海量數(shù)據(jù)及千萬級的注冊用戶,一般都存在多用戶同時訪問 的高并發(fā)的情況,這時,I/O的瓶頸問題會迅速顯現(xiàn)。例如,電子商務(wù)網(wǎng)站的注冊用戶并發(fā) 訪問過程中,當(dāng)用戶請求數(shù)量超過數(shù)據(jù)庫最大的I/O數(shù)量或者Connection鏈接限制時,用 戶請求將會被阻斷,客戶體驗度會降低,一定程度上降低了網(wǎng)站的客戶流量。
[0003] 針對于用戶并發(fā)訪問的相應(yīng),現(xiàn)有的方案中,多是采用分布式部署,將網(wǎng)站服務(wù)器 分布在地理分散的各個節(jié)點(diǎn)上,分布在各個節(jié)點(diǎn)上的服務(wù)器在邏輯上是相關(guān)的,采用負(fù)載 均衡器進(jìn)行流量分流,從而解決站點(diǎn)入口的壓力,降低單點(diǎn)風(fēng)險,分解單點(diǎn)訪問壓力。這種 技術(shù)一般采用商業(yè)的負(fù)載均衡器,算法往往是固化的,難以有效適配企業(yè)自身定制的需求 和實(shí)際的站點(diǎn)用戶訪問流量情況,因此,也就難以從用戶訪問的前端鏈路層有效的降低丟 包,實(shí)現(xiàn)高效傳輸數(shù)據(jù),降低用戶流量損耗的目的。而且這中技術(shù)方案中,用戶對網(wǎng)站的訪 問請求都需要經(jīng)過負(fù)載均衡器分發(fā)至網(wǎng)站服務(wù)器上,網(wǎng)站服務(wù)器需要響應(yīng)所有用戶的訪問 請求,進(jìn)一步加重了網(wǎng)站服務(wù)器的負(fù)載,影響了網(wǎng)絡(luò)通道的訪問速度。
【發(fā)明內(nèi)容】
[0004] 基于此,有必要針對上述問題,提供一種降低網(wǎng)站服務(wù)器負(fù)載、加快響應(yīng)用戶請求 的網(wǎng)絡(luò)通道加速方法和系統(tǒng)。
[0005] 一種網(wǎng)絡(luò)通道加速方法,包括如下步驟:
[0006] 創(chuàng)建緩存服務(wù)器,將網(wǎng)站服務(wù)器設(shè)定的網(wǎng)站服務(wù)內(nèi)容緩存至所述緩存服務(wù)器;
[0007] 接收用戶訪問網(wǎng)站服務(wù)內(nèi)容的用戶請求,并將所述用戶請求轉(zhuǎn)發(fā)至緩存服務(wù)器;
[0008] 利用緩存服務(wù)器響應(yīng)用戶請求,將命中網(wǎng)站服務(wù)內(nèi)容的第一用戶請求響應(yīng)的網(wǎng)站 內(nèi)容反饋至對應(yīng)訪問的用戶,并將沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求轉(zhuǎn)發(fā)至網(wǎng)站服務(wù) 器;
[0009] 利用網(wǎng)站服務(wù)器響應(yīng)所述第二用戶請求,將第二用戶請求響應(yīng)的網(wǎng)站內(nèi)容反饋至 對應(yīng)訪問的用戶。
[0010] 一種網(wǎng)絡(luò)通道加速系統(tǒng),包括:
[0011] 緩存模塊,用于創(chuàng)建緩存服務(wù)器,將網(wǎng)站服務(wù)器設(shè)定的網(wǎng)站服務(wù)內(nèi)容緩存至所述 緩存服務(wù)器;
[0012] 轉(zhuǎn)發(fā)模塊,用于接收用戶訪問網(wǎng)站服務(wù)內(nèi)容的用戶請求,并將所述用戶請求轉(zhuǎn)發(fā) 至緩存服務(wù)器;
[0013] 第一響應(yīng)模塊,用于利用緩存服務(wù)器響應(yīng)用戶請求,將命中網(wǎng)站服務(wù)內(nèi)容的第一 用戶請求響應(yīng)的網(wǎng)站內(nèi)容反饋至對應(yīng)訪問的用戶,并將沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶 請求轉(zhuǎn)發(fā)至網(wǎng)站服務(wù)器;
[0014] 第二響應(yīng)模塊,用于利用網(wǎng)站服務(wù)器響應(yīng)所述第二用戶請求,將第二用戶請求響 應(yīng)的網(wǎng)站內(nèi)容反饋至對應(yīng)訪問的用戶。
[0015] 上述網(wǎng)絡(luò)通道加速方法和系統(tǒng),充分考慮了用戶體驗及網(wǎng)站服務(wù)器的負(fù)載能力, 通過創(chuàng)建緩存服務(wù)器,將網(wǎng)站服務(wù)器設(shè)定的網(wǎng)站服務(wù)內(nèi)容緩存至所述緩存服務(wù)器,這樣,用 戶訪問的部分?jǐn)?shù)據(jù)可以通過緩存服務(wù)器直接響應(yīng),不需要再從互聯(lián)網(wǎng)網(wǎng)站服務(wù)器傳輸,可 以節(jié)約網(wǎng)絡(luò)出口流量,然后將緩存服務(wù)器中沒有命中的用戶請求再發(fā)送給網(wǎng)站服務(wù)器進(jìn)行 響應(yīng),從而降低了網(wǎng)站服務(wù)器的負(fù)載,特別是當(dāng)出現(xiàn)用多戶并發(fā)訪問時,降低了網(wǎng)站服務(wù)器 崩潰風(fēng)險。
【附圖說明】
[0016] 圖1為本發(fā)明的網(wǎng)絡(luò)通道加速方法流程圖;
[0017] 圖2為基于有界阻塞數(shù)組隊列實(shí)現(xiàn)的線程池調(diào)度模型示意圖;
[0018] 圖3為一個實(shí)例的基于本發(fā)明的網(wǎng)絡(luò)通道加速方法的系統(tǒng)架構(gòu)設(shè)計圖;
[0019] 圖4為本發(fā)明的網(wǎng)絡(luò)通道加速系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020] 下面結(jié)合附圖對本發(fā)明的網(wǎng)絡(luò)加速方法和系統(tǒng)的【具體實(shí)施方式】作詳細(xì)描述。
[0021] 參考圖1所示,圖1為本發(fā)明的網(wǎng)絡(luò)通道加速方法流程圖,包括如下步驟:
[0022] 步驟S10,創(chuàng)建緩存服務(wù)器,將網(wǎng)站服務(wù)器設(shè)定的網(wǎng)站服務(wù)內(nèi)容緩存至所述緩存服 務(wù)器。
[0023] 在本步驟中,可以通過緩存服務(wù)器中存儲的副本,提供Http請求訪問目標(biāo)功能。 由于緩存的數(shù)據(jù)不需要從互聯(lián)網(wǎng)網(wǎng)站服務(wù)器傳輸,因此可以節(jié)約網(wǎng)絡(luò)出口流量。
[0024] 在一個實(shí)施例中,可以將緩存服務(wù)器部署在靠近用戶網(wǎng)絡(luò)節(jié)點(diǎn),這樣在用戶請求 網(wǎng)站內(nèi)容時,部分請求數(shù)據(jù)可以不通過Internet,只訪問離用戶較近的本地緩存服務(wù)器即 可獲取所需要的信息,從而可以大量減少重復(fù)請求在網(wǎng)絡(luò)上的傳輸,從而降低網(wǎng)絡(luò)流量,節(jié) 省資費(fèi);還可以減少網(wǎng)絡(luò)中的延時和訪問瓶頸造成的傳輸速率下降,加快請求,提高用戶體 驗。
[0025] 步驟S20,接收用戶訪問網(wǎng)站服務(wù)內(nèi)容的用戶請求,并將所述用戶請求轉(zhuǎn)發(fā)至緩存 服務(wù)器。
[0026] 在本步驟中,可以利用⑶N(ContentDistributionNet,內(nèi)容分發(fā)網(wǎng)絡(luò))技術(shù),根 據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時間等綜合信息將用戶訪 問網(wǎng)站服務(wù)內(nèi)容的用戶請求重新導(dǎo)向至離用戶最近的服務(wù)節(jié)點(diǎn)上。可以使用戶就近取得所 需內(nèi)容,從而可以解決Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。
[0027] 在一個實(shí)施例中,將所述用戶請求轉(zhuǎn)發(fā)至緩存服務(wù)器可以包括如下:
[0028] S201,獲取用戶訪問網(wǎng)站服務(wù)內(nèi)容的用戶請求;具體的,首先統(tǒng)一接收用戶的訪問 請求。
[0029] S202,采用內(nèi)容分發(fā)網(wǎng)絡(luò)技術(shù)將所述用戶請求轉(zhuǎn)發(fā)至緩存服務(wù)器;優(yōu)選的,可以將 CDN內(nèi)容分發(fā)網(wǎng)絡(luò)就近部署互聯(lián)網(wǎng)網(wǎng)站緩存服務(wù),最大限度利用Web緩存,提高移動網(wǎng)絡(luò)流 量分發(fā)。
[0030] 步驟S30,利用緩存服務(wù)器響應(yīng)用戶請求,將命中網(wǎng)站服務(wù)內(nèi)容的第一用戶請求響 應(yīng)的網(wǎng)站內(nèi)容反饋至對應(yīng)訪問的用戶,并將沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求轉(zhuǎn)發(fā)至 網(wǎng)站服務(wù)器。
[0031] 在本步驟中,利用緩存服務(wù)器響應(yīng)用戶請求,將命中網(wǎng)站服務(wù)內(nèi)容的第一用戶請 求響應(yīng)的網(wǎng)站內(nèi)容反饋至對應(yīng)訪問的用戶,并將沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求轉(zhuǎn) 發(fā)至網(wǎng)站服務(wù)器
[0032] 在一個實(shí)施例中,步驟S30中將所述將沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求轉(zhuǎn) 發(fā)至網(wǎng)站服務(wù)器的過程,可以包括如下步驟:
[0033]S301,獲取沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求;
[0034]S302,利用負(fù)載均衡器將所述第二用戶請求分發(fā)至網(wǎng)站服務(wù)器;
[0035] 上述實(shí)施例,在將第二用戶請求分發(fā)至網(wǎng)站服務(wù)器的過程中,可以利用負(fù)載均衡 器探測網(wǎng)站服務(wù)器集群中各節(jié)點(diǎn)已有的負(fù)載,并根據(jù)已有的負(fù)載情況,將第二用戶請求分 發(fā)至網(wǎng)站服務(wù)器集群中的各個節(jié)點(diǎn),使網(wǎng)站服務(wù)器集群中各節(jié)點(diǎn)盡可能保持負(fù)載均衡。
[0036] 步驟S40,利用網(wǎng)站服務(wù)器響應(yīng)所述第二用戶請求,將第二用戶請求響應(yīng)的網(wǎng)站內(nèi) 容反饋至對應(yīng)訪問的用戶。
[0037] 在本步驟中,對于前述步驟中沒有命中網(wǎng)站服務(wù)內(nèi)容的第二用戶請求,通過轉(zhuǎn)發(fā) 至網(wǎng)站服務(wù)器,利用網(wǎng)站服務(wù)器響應(yīng)第二用戶請求,以此實(shí)現(xiàn)了對用戶訪問請求的響應(yīng)。
[0038] 在一個實(shí)施例中,對于步驟S40中利用網(wǎng)站服務(wù)器響應(yīng)所述第二用戶請求的過 程,可以包括如下步驟:
[0039] S401,創(chuàng)建線程隊列及線程池,其中,所述線程池存放所述網(wǎng)站服務(wù)器響應(yīng)的第二 用戶請求;
[0040]S402,獲取第二用戶請求,并將所述第二用戶請求添加至線程隊列;
[0041] S403,通過先進(jìn)先出的方式將所述第二用戶請求移出所述線程隊列;
[0042]S404,將按順序移出線程隊列的第二用戶請求并送入所述線程池。
[0043] 上述實(shí)施例,線程隊列及線程池創(chuàng)建,網(wǎng)站服務(wù)器能夠依據(jù)設(shè)定順序響應(yīng)第二用 戶請求,提高響應(yīng)效率。
[0044] 對于上述線程隊列及線程池的應(yīng)用,可以采用基于有界阻塞數(shù)組隊列實(shí)現(xiàn)的線程 池調(diào)度模型,參考圖2所示,圖2為基于有界阻塞數(shù)組隊列實(shí)現(xiàn)的線程池調(diào)度模型示意圖。
[0045] 利用線程池管理類401創(chuàng)建有界阻塞隊列402和線程池403;
[0046] 將用戶請求404添加到有界阻塞隊列前判斷阻塞隊列402是否滿:
[0047] 若不滿,則將用戶請求添加到有界阻塞隊列402;若滿,則阻止用戶請求添加到阻 塞隊列402。
[0048] 根據(jù)先進(jìn)先出原則,將阻塞隊列402中的業(yè)務(wù)請求送入到線程池403中之前:判斷 有界阻塞隊列402是否為空:
[0049] 若不空,則將有界阻塞隊列402中的用戶請求送至線程池403中;若空,則阻止將 有界阻塞隊列402中的用戶請求送至線程池中403。
[0050] 具體實(shí)現(xiàn)是基于多個構(gòu)造參數(shù)實(shí)現(xiàn)靈活初始化,幾個核心參數(shù)如下: CorePoolSize:核心工作者數(shù)。MaximumPoolSize:最大工作者數(shù)。keepAliveTime:超過核 心工作者數(shù)時閑置工作者的存活時間。WorkQueue:待處理Job隊列,BlockingQueue接口。 默認(rèn)初始化后不啟動工作者,等待有請求時才啟動。可以通過調(diào)用線程池接口提前啟動核 心工作數(shù)個工作者線程,也可以啟動業(yè)務(wù)期望的多個工作者線程。
[0051] 工作者數(shù)低于核心工作者數(shù)時會優(yōu)先創(chuàng)建一個工作者來處理工作任務(wù),處理成功 則返回。
[0052] 工作者數(shù)高于核心工作者數(shù)時會優(yōu)先把工作任務(wù)添加進(jìn)等待處理隊列,添加進(jìn)等 待隊列成功時處理結(jié)束。
[0053] 添加進(jìn)等待隊列失敗時會識別工作者數(shù)是否還小于最大工作者數(shù),小于則會新創(chuàng) 建一個工作者處理工作任務(wù)。
[0054] 具體算法實(shí)現(xiàn)可以如下:
[0055] 首先定義阻塞隊列,創(chuàng)建鏈表安全線程隊列;
[0058] 其次,將一個工作任務(wù)入隊列:
[0060] 第三、將一個元素出隊,如果隊列為空,則阻塞(直到有對象入隊)
[0061]
[0063] 在實(shí)際的應(yīng)用中,線程池的啟動時的各項參數(shù)由指定的配置文件config.xml讀 入,包括線程池中核心線程數(shù)的大小,最大線程數(shù)的大小,空閑線程生命周期等,面對不同 的應(yīng)用,可以對線程池做出相應(yīng)的改進(jìn)、擴(kuò)展,使得線程池的應(yīng)用情況能夠更好的滿足系統(tǒng) 的實(shí)際需求。
[0064] 上述實(shí)施例,通過使用有界阻塞數(shù)組隊列的線程池技術(shù)從微觀方面優(yōu)化請求調(diào) 度,從而有效的降低服務(wù)器負(fù)載壓力,提升服務(wù)在性能,提升請求響應(yīng)效率,從而改善用戶 體驗。
[0065] 在一個實(shí)施例中,步驟S4