進度條

為何 Netflix 等跨國商業網站不會因為地理位址而影響服務速度?關鍵在於CDN!

AWS CloudFront與CloudFlare在紅什麼,為什麼架設網站需要CDN服務?

作者: Vincent Ke 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. CDN介紹,使用AWS CloudFront (所屬課程)


以下正式開始文章


相信常使用網路服務的各位,心中一定有一個很大的疑問,舉凡像是世界知名的Google,但無論你是在台灣還是在其他偏遠地區的國家,除非是你的網路速度如同撥接般的緩慢,不然你所享用的服務速度,基本上是不會因為地理位置的問題,受到絲毫影響卻絲毫不受影響。

 

外站延伸閱讀:Netflix 如何與世界各地的網路服務商攜手提供絕佳的觀賞體驗

 

 

 

但明明Google可是一間美國公司呀?理論上不是應該是先連到美國的Server之後,再把內容傳回至我們的本機端嗎?

 

你知道,我知道,當然美國的Google也知道這種距離上的差距,會足足影響到他們的海外市場。那究竟這些網路巨頭們,是如何讓網路服務可以無視距離上的差距呢?那你一定要知道什麼是CDN。
 

 

校正小編補充:

現在最常見的CDN商就是Amazon AWSCloudFlare,與旗下的服務AWS CloudFront、 AWS S3CloudFlare CDN (CloudFlare 是全部服務擺在一起,所以很少直接提起其中一個服務。)

因為排版的關係,所以把AWS CloudFront擺在CloudFlare這家公司的前面,但是以小型架站來說,因為Cloudflare有免費版,所以市占率比較高一些(至少在小型站台)。CloudFlare 是公司名稱,而AWS CloudFront是Amazon的服務,一般使用會跟AWS S3一起使用,S3就真的是一個儲存空間,而CloudFront才有我們本篇提到Cache功能。他們兩個的名字被取的很像,而且功能也類似。記得不要搞混,他們是不同的廠商喔!
 

 

 

CDN的全名是CONTENT DELIVERY NETWORK,翻譯成中文可稱作內容分發網路或是內容傳遞網路,這種技術就是用來解決跨地區的大型商業網站所面臨到的技術性問題。主要目的是為了能解決不同地區的用戶,所存在的響應速度差異問題,那究竟他是怎麼做到的?

 

但在介紹技術原理之前,我們必須先瞭解到網路上所謂的靜態網頁內容,以及動態網頁內容。

 

靜態內容所指的是,不會自動產生或因應不同情況而轉變的內容,像是html文件,或是一些.jpg 圖檔等等,例如當 A兩個不同的使用者,同時瀏覽同一個購物網站時,所看到的文字、圖片、banner以及一些CSS 等,都會是相同的,即可稱作是靜態內容。

 

 

 

 

而動態當然指的就是相反的狀態囉。和傳統的靜態網頁相反,它會因為每一個使用者所帶入的變數上的改變,而產生不同的網頁內容等等,就是所謂的動態網頁。舉例像是對DB資料庫的訪問,或是我們常知道的所謂會員資料,購物車,訂單..等等,這些部分就是所謂的動態網頁內容。而大多數的網站其實依靠著靜態和動態去組成的。
 

 

 

 

回到文章的開頭,如果每當我們所訪問google一次,就必須連線到美國的server,再將內容傳回我們台灣的本機端,這樣的速度效能光是想像就知道非常緩慢,但如果我們可以就近訪問離我們最近的server,是不是就可以捨遠求近的,取得我們要的內容呢?

 

沒錯,這就是CDN存在的目的,CDN的解決方案,就是利用最靠近每位使用者的伺服器,來把每一個使用者所希望看到的資料,例如音樂、影片、應用程式及其他檔案等,傳送給使用者,使每一個用戶可以透過最快的速度,來從最接近使用者的地方,獲取到想要的訊息
 

 

 

而原理主要是透過在每一個使用者與Server端internet之間,新增一個cache(緩存)層,而Cache層的技術,主要也是用來消除數據訪問的尖峰值,所造成的網路堵塞問題,所以大部分的靜態網頁,如html或JPG圖片等,以及部分比較不易改變的動態網頁,例如呈現在網站上的登入資訊、會員名稱及點數資料等等,只要在Cache的有效期間(TTL => Time to live)內,這些重複的訪問,就不需要從網站原始的server去重新計算。而是轉換成緩存的文件,發佈到離使用者最近的server上。

 

如此一來,當使用者再次造訪網站之後,可以透過緩存,直接把使用者想要了解的結果,透過距離最近的server,快速地呈現給每一個使用者。
 

 

校正小編補充:

你可以想成當你把檔案放上CloudFlare 或 AWS CloudFront以後,只要有人透過它訪問你的主機,他就會跟你主機要資料後回傳到使用者,並且留下一個副本備份,下次有人通過他去要求的時候就直接交付,會省下很多時間。當然,如果是過了TTL時間的第一個要求者,他就享受不到速度上面的提升。


AWS上同時有兩種CDN,一個是大名鼎鼎的S3,另外一個則是CloudFront。一般來說會把CloudFront建立在S3的前面。因為S3就是個儲存的空間,並沒有不同區域的加速功能。所以用CloudFlare去Cache住S3的內容後再去針對不同區域傳送。但是如果訪問你的網站的用戶都跟S3在同一個區域。這時候使用
CloudFlare與S3在速度上就沒差帶多了。因為訪問者的電腦離兩個服務差不多近。
 

 

 

這樣的好處當然除了解決物理上的距離位置外,透過CDN的散布,這樣的server總承載量也比過去單一幾個的server總乘載量還要來得大,例如你的server只有處理100GbPS的能力,同時放置在只有10Gpbs頻寬的資料中心,這樣只能發揮出10Gpbs的能力,但如果透過CDN的方式,放到10個CDN server話,在相同的條件上,總乘載量就達到了原先預期的10倍

 

但好處可不只是這樣的倍數成長,因為CDN多了地理位置上的捨遠求近概念,我們還可以預防大量用戶同時湧進單一server上,因為這些CDN都會被放置到不同的地點,所以連帶的好處是更可以減少互連上造成的流量堵塞,降低我們的頻寬成本,甚至改善用戶體驗等等。而現在各大知名廠商如AWS CloudFront、 CloudFlare、AZURE以及Akamai等等,也都推出了各家的CDN solution,無非也是在這一塊嗅到了不可或缺性及商機。


 

 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Medium vincent

Vincent Ke

喜歡把混亂的事情變的簡單 用嘴巴做事其實很可以 但要結合靈活的腦袋思考 就一起來拆解吧