CDN簡談及實現(xiàn)原理分析

很多人可能不了解cdn,認(rèn)為自己沒用過cdn,其實不然,我們已經(jīng)在用了。先舉個栗子,大家有沒有想過為什么雙十一的時候這么多人搶購,流量超級大,為什么很少出現(xiàn)網(wǎng)頁加載不出來,也沒見過淘寶服務(wù)器奔潰呢?

舉個栗子

正常情況下肯定會奔潰的,你想想,上億人同時向一臺服務(wù)器發(fā)起請求,服務(wù)器還不得冒煙???

實際上cdn就在里面發(fā)揮著功不可沒的功勞。拋開技術(shù)方面的優(yōu)化,假設(shè)淘寶只有一臺服務(wù)器A在運行,從原則上來說我們是應(yīng)該從這臺A服務(wù)器下載資源的(html、js、css等),可是淘寶會把這些靜態(tài)資源分發(fā)到全國各個地方的網(wǎng)絡(luò)節(jié)點上(可以理解成每一個城市部署一個機房),我們訪問的時候?qū)嶋H是從離我們最近的那臺服務(wù)器B下載的資源,這就是cdn。

1、什么是cdn

cdn顧名思義是一個英文縮寫,全稱是content delivery network(內(nèi)容分發(fā)網(wǎng)絡(luò)),即服務(wù)商通過在世界各地部署大量服務(wù)器節(jié)點緩存源站靜態(tài)資源(目標(biāo)服務(wù)器),當(dāng)用戶訪問時返回最優(yōu)線路的資源,提高網(wǎng)頁響應(yīng)速度,給用戶帶來更好的體驗。

eg:阿里云服務(wù)商在全國部署了大量的服務(wù)器,某公司覺得自己的服務(wù)器帶寬不夠大,希望在阿里云的這些服務(wù)器上分擔(dān)壓力,所以阿里云服務(wù)商會從該公司的網(wǎng)站中拉取靜態(tài)資源(源站資源),然后在自己的各個服務(wù)器上添加該資源的緩存,最后返回一個url地址給該公司,該公司只需要把之前的資源地址(js、css、html、img等)替換成這個url就可以了;當(dāng)用戶訪問時,實際上走的請求是阿里云的服務(wù)器,然后阿里云返回一個最快的資源給你(如你在廣州就返回廣州服務(wù)器的資源,而不是北京服務(wù)器的資源)

cdn的核心技術(shù)在于智能dns與內(nèi)容存儲,用戶訪問時根據(jù)所在線路與位置,就近選擇最快的服務(wù)器節(jié)點,然后從緩存中取出相應(yīng)內(nèi)容,避免了直接從源站拉取資源、減低了網(wǎng)絡(luò)阻塞。

下面我們先說一下cdn的三大組成部分

1.1、squid 代理web緩存服務(wù)器

前面我們也說到,服務(wù)商會返回一個url給源站,如https://aliyun.cdn.com/xxx/main.js,那么我們就不難想到它其實就是一個web服務(wù)器提供(像我們的iis、tomcat、nginx等),cdn下使用的web服務(wù)器大多是squid,下面說一下squid以及nginx在linux下的安裝:

1、yum? install? squid? ?-g //安裝squid

2、vim /etc/squid/squid.conf //配置端口代理


1、yum? install? nginx? -g? //安裝nginx

2、vim /etc/nginx/nginx.conf? //配置端口代理

所以squid就是一個web代理服務(wù)器,只不過它在緩存服務(wù)方面比較出色。

1.2、計算機集群

從執(zhí)行性能上來說,個人PC? <? 服務(wù)器? <??計算機集群,那么什么是計算機集群呢?其實從定義上來說,計算機集群是通過松散集成的計算機軟件或硬件連接起來的完成計算工作的計算機系統(tǒng),通俗來理解就是把很多服務(wù)器組合起來,共同完成某一項任務(wù),這樣工作效率自然會大于一臺電腦。

作為cdn服務(wù)的提供商(服務(wù)商),他們會在各個城市部署很多的服務(wù)器,從而組成一張龐大的計算機集群網(wǎng),使得各個地方的用戶附近都至少有一臺可訪問的服務(wù)器。

1.3、智能dns

說到智能dns,那么我得說一下“不智能的”dns。dns,全稱domain name system,域名系統(tǒng),萬維網(wǎng)上的每一個設(shè)備(pc、手機等)都有一個屬于自己的ip地址,也可以當(dāng)做設(shè)備的身份證,然而這個ip地址太過長了,不便于記憶,所以就用域名來作為ip的別名,如百度的域名是baidu.com,當(dāng)用戶輸入百度域名并回車后,通過dns系統(tǒng)獲取到真實ip地址14.215.177.39。

dns解析流程:瀏覽器host? ?》? ?系統(tǒng)host? ?》? ?運營商解析? ?》? ?根域解析

我們普通的dns往往慢就慢在跨線路和跨國際,能不能根據(jù)用戶所在地址,返回合適的ip地址呢,這就產(chǎn)生了智能dns。

智能dns位于cdn服務(wù)器層,它根據(jù)用戶來源的線路以及所在的位置,根據(jù)當(dāng)前網(wǎng)絡(luò)負(fù)載情況,選取出距離最近的同線路服務(wù)器,并放回該服務(wù)器的ip地址(cdn計算器集群的每一臺服務(wù)器都具備相同的功能與內(nèi)容,因而返回不同的ip,處理的結(jié)果都是一樣的)。

2、cdn產(chǎn)生背景

對于大部分的中小型企業(yè),服務(wù)器性能不會很好,帶寬也不會很大,一旦遇到訪問量“井噴”的情況就會奔潰了,比如雙十一、12306春運期間甚至是一些學(xué)校的選課系統(tǒng),那么解決措施往往就是出錢出力升級配置了。

其次由于我國國土遼闊,存在著不少的網(wǎng)絡(luò)運營商,如巨頭電信聯(lián)通,這也就導(dǎo)致了不同運營商(線路間)互聯(lián)不互通,如廣州電信用戶訪問北京聯(lián)通機房的服務(wù)器速度慢。

這時候cdn就應(yīng)運而生了,它依靠著強大的服務(wù)器集群能力為各網(wǎng)站提供緩存加速服務(wù)。

3、cdn加速原理

cdn之所以快靠的是多節(jié)點、多線路、用緩存;

多節(jié)點,也就是多服務(wù)器,這樣讓用戶沒必要直接向源站請求資源,而是向最近的服務(wù)器請求就行了;

多線路,避免了跨線路互聯(lián)不互通的尷尬;

用緩存,這個前面沒有怎么提,cdn服務(wù)器會從源站拉取資源并緩存到內(nèi)存中,當(dāng)用戶訪問的時候直接從內(nèi)存中取出來,這樣就比從硬盤中去出來快了不少;其次cdn服務(wù)器知道源站資源發(fā)生變化后,會通知其它服務(wù)器同時更新資源。

4、cdn的優(yōu)勢

智能dns讓用戶可以訪問同線路最近的服務(wù)器

cdn的緩存機制可以加快訪問速度,也可以緩解源站服務(wù)器壓力(因為根本不會去訪問源站)

cdn讓大規(guī)模的用戶請求架構(gòu)變得簡單

cdn性價比高,同帶寬需求下cdn服務(wù)比增加帶寬劃算

5、cdn適用范圍

靜態(tài)和更新頻率低的內(nèi)容

數(shù)據(jù)流量大的產(chǎn)品

帶寬需求大的產(chǎn)品

有錢的主...


其實cdn服務(wù)商有不少,如阿里云cdn、騰訊云cdn、百度云cdn、網(wǎng)易云cdn、360cdn等等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容