一、前言
一直對(duì)CDN原理有點(diǎn)一知半解宇攻,好像知道它是什么意思惫叛,”不就是能加速靜態(tài)資源的獲取,加快網(wǎng)頁(yè)的渲染嘛”逞刷,不過(guò)當(dāng)有人問(wèn)你它是什么原理嘉涌,又支支吾吾說(shuō)不太清妻熊,本文就將用兩種方式解釋什么是CDN原理,一種較為通俗易懂仑最,方便跟別人解釋扔役;另一種用專業(yè)詞匯進(jìn)行闡述,加深理解警医。
二亿胸、CDN具象化
舉個(gè)簡(jiǎn)單的例子描述什么是cdn,一張很大的餐桌上预皇,很多人在吃飯侈玄,其中包括小明和小李,小明和小李想要吃到距離他們很遠(yuǎn)的鍋包肉吟温,就得跋山涉水甚至站起來(lái)走過(guò)去才能吃到拗馒,那這個(gè)時(shí)候有人發(fā)現(xiàn)這道菜離小明和小李太遠(yuǎn)了,就主動(dòng)把菜分出來(lái)一些分別放到小明和小李身邊溯街,這樣小明和小李就可以就近吃到美味的鍋包肉了诱桂。小明和小李就近吃鍋包肉這個(gè)過(guò)程就用到了CDN。
再舉個(gè)例子呈昔,你在園區(qū)內(nèi)工作挥等,此時(shí)你想下載一個(gè)游戲,但這個(gè)游戲服務(wù)器帶寬被限制在2M堤尾,那么你下載這個(gè)好幾個(gè)G的游戲就需要很長(zhǎng)時(shí)間肝劲,但如果這個(gè)游戲非常熱門,園區(qū)內(nèi)很多人都下載過(guò)郭宝,那園區(qū)內(nèi)的緩存設(shè)備就會(huì)將游戲資源緩存下載辞槐,那么你再下載的時(shí)候就會(huì)用遠(yuǎn)遠(yuǎn)大于2M的速度從緩存設(shè)備中獲取,還減輕了目標(biāo)服務(wù)器的壓力粘室。
三榄檬、CDN具體原理
用簡(jiǎn)單通俗的例子說(shuō)明了什么是CDN之后就要再剖析一下它的具體原理了:
首先用又臭又長(zhǎng)的名詞說(shuō)一下CDN的全稱,Content Delivery Network或Content Ddistribute Network衔统,即內(nèi)容分發(fā)網(wǎng)絡(luò)鹿榜。
CDN是將源站內(nèi)容分發(fā)至最接近用戶的節(jié)點(diǎn),使用戶可就近取得所需內(nèi)容锦爵,提高用戶訪問(wèn)的響應(yīng)速度和成功率舱殿。解決因分布、帶寬险掀、服務(wù)器性能帶來(lái)的訪問(wèn)延遲問(wèn)題沪袭,適用于站點(diǎn)加速、點(diǎn)播樟氢、直播等場(chǎng)景冈绊。
最簡(jiǎn)單的CDN網(wǎng)絡(luò)由一個(gè)DNS服務(wù)器和幾臺(tái)緩存服務(wù)器組成:
- 當(dāng)用戶請(qǐng)求網(wǎng)站頁(yè)面上的內(nèi)容URL创倔,經(jīng)過(guò)本地DNS系統(tǒng)解析,DNS系統(tǒng)會(huì)最終將域名的解析權(quán)交給CNAME指向的CDN專用DNS服務(wù)器焚碌。
- CDN的DNS服務(wù)器將CDN的全局負(fù)載均衡設(shè)備IP地址返回用戶畦攘。
- 用戶向CDN的全局負(fù)載均衡設(shè)備發(fā)起內(nèi)容URL訪問(wèn)請(qǐng)求。
- CDN全局負(fù)載均衡設(shè)備根據(jù)用戶IP地址十电,以及用戶請(qǐng)求的內(nèi)容URL知押,選擇一臺(tái)用戶所屬區(qū)域的區(qū)域負(fù)載均衡設(shè)備,告訴用戶向這臺(tái)設(shè)備發(fā)起請(qǐng)求鹃骂。
- 區(qū)域負(fù)載均衡設(shè)備會(huì)為用戶選擇一臺(tái)合適的緩存服務(wù)器提供服務(wù)台盯,選擇的依據(jù)包括:根據(jù)用戶IP地址,判斷哪一臺(tái)服務(wù)器距用戶最近畏线;根據(jù)用戶所請(qǐng)求的URL中攜帶的內(nèi)容名稱静盅,判斷哪一臺(tái)服務(wù)器上有用戶所需內(nèi)容;查詢各個(gè)服務(wù)器當(dāng)前的負(fù)載情況寝殴,判斷哪一臺(tái)服務(wù)器尚有服務(wù)能力蒿叠。基于以上這些條件的綜合分析之后蚣常,區(qū)域負(fù)載均衡設(shè)備會(huì)向全局負(fù)載均衡設(shè)備返回一臺(tái)緩存服務(wù)器的IP地址市咽。
- 全局負(fù)載均衡設(shè)備把服務(wù)器的IP地址返回給用戶。
- 用戶向緩存服務(wù)器發(fā)起請(qǐng)求抵蚊,緩存服務(wù)器響應(yīng)用戶請(qǐng)求施绎,將用戶所需內(nèi)容傳送到用戶終端。如果這臺(tái)緩存服務(wù)器上并沒(méi)有用戶想要的內(nèi)容贞绳,而區(qū)域均衡設(shè)備依然將它分配給了用戶谷醉,那么這臺(tái)服務(wù)器就要向它的上一級(jí)緩存服務(wù)器請(qǐng)求內(nèi)容,直至追溯到網(wǎng)站的源服務(wù)器將內(nèi)容拉到本地冈闭。
上面的文字可能讀起來(lái)有點(diǎn)費(fèi)勁俱尼,下面用一張圖來(lái)解釋說(shuō)明
以上就是CDN能加快網(wǎng)絡(luò)資源加載的原理。
四拒秘、游戲加速器原理
順便說(shuō)一下游戲加速器的原理号显,提到游戲加速就不得不提到延遲臭猜,那為什么會(huì)產(chǎn)生延遲呢躺酒?
影響延遲的關(guān)鍵因素就是本機(jī)電腦到服務(wù)器的距離,延遲有個(gè)公式是延遲≈距離/光速蔑歌。
上網(wǎng)連接游戲比作一條道路羹应,從用戶電腦到游戲服務(wù)器所經(jīng)歷的時(shí)間就是延遲。用戶電腦到游戲服務(wù)器的距離走向次屠,遵循一個(gè)基本原則
國(guó)內(nèi):局域網(wǎng)->城域網(wǎng)->骨干網(wǎng)->城域網(wǎng)->局域網(wǎng)
出國(guó):局域網(wǎng)->城域網(wǎng)->骨干網(wǎng)->國(guó)際出口→海外線路→...
如用戶在四川成都园匹,游戲服務(wù)器在北京雳刺,我們理論覺(jué)得這段距離是成都到北京的直線路線,但是我們用tracet命令查看所走路由表如圖
沒(méi)錯(cuò)裸违,他從成都先走到了上海掖桦,然后再?gòu)纳虾5搅吮本瑹o(wú)形中這段距離被拉長(zhǎng)了供汛,自然延遲就會(huì)長(zhǎng)了枪汪。
那么如何降低延遲呢?游戲加速器就可以做到怔昨,下圖就展示了游戲加速器是如何縮短距離雀久,降低延遲的
可以理解為從成都到天津本來(lái)是一條崎嶇的鄉(xiāng)道,還長(zhǎng)還不好走趁舀,而加速器在成都到天津架設(shè)了一條高速通路赖捌,直達(dá)天津,距離縮短了矮烹,延遲自然也低了越庇。
完。