什么是CDN
CDN 其實是 Content Delivery Network 的縮寫,即“內容分發網絡”。CDN是將媒體資源,動靜態圖片(Flash) ,HTML, CSS, JS等等內容緩存到距離你更近的互聯網數據中心,從而讓用戶進行共享資源,實現縮減站點間的響應時間等等需求。
?
CDN的起源
CDN 誕生于二十多年前,隨著骨干網壓力的逐漸增大,以及長傳需求的逐漸增多,使得骨干網的壓力越來越大,長傳效果越來越差。于是在 1995 年,MIT 的應用數學教授 Tom Leighton 帶領著研究生 Danny Lewin 和其他幾位頂級研究人員一起嘗試用數學問題解決網絡擁堵問題。他們使用數學算法,處理內容的動態路由安排,并最終解決了困擾 Internet 使用者的難題。后來,史隆管理學院的 MBA 學生 Jonathan Seelig 加入了 Leighton 的隊伍中,從那以后他們開始實施自己的商業計劃,最終于 1998 年 8 月 20 日正式成立公司,命名為 Akamai。同年 1998 年,中國第一家 CDN 公司 ChinaCache 成立。在接下來的20年中,CDN行業歷經變革和持續發展,行業也涌現出很多云CDN廠商。阿里云CDN是2008年從淘寶CDN起家,在2014年正式發展成為阿里云CDN的,它不僅為阿里巴巴集團所有子公司提供服務,同時也將自身的資源、技術以云計算的方式輸出。
為什么要用 CDN 呢?
如果未做 CDN 之前跨洋跨國的長傳業務,用戶從西班牙訪問到美國紐約要經過北大西洋,直線距離6,000km 左右,按照光速300,000km/s 的傳輸速度,一束光從西班牙到紐約也至少需要 20ms 時間,一個往返就需要 40ms。如果是光纖傳輸數據,加上傳輸損耗、傳輸設備延時引入等,可能上百毫秒就出去了,即使用瀏覽器訪問一個再小不過的圖片,也會等個上百毫秒,積少成多,訪問一個美國購物網站會讓用戶無法接受。
如果使用CDN,網民實際訪問到的服務器不是位于美國的真實服務器,而是位于英國的 CDN 服務器。而 CDN 本身有緩存功能,把那些網頁里一成不變的內容,例如圖片、音樂、視頻等,都分發并緩存到了各個 CDN 服務節點上,這樣網民就不必從西班牙訪問到紐約,而是訪問距離自己較近的英國節點即可,從而節省了 80% 以上的時間。?
那 CDN 是如何將用戶的流量引入到 CDN 網絡中的呢?
在未做 CDN 時,我們訪問某個域名,直接拿到的是一個真實的服務器 IP 地址,這個顯示 IP 地址的 DNS 記錄信息叫 A 記錄,一般是下圖這個樣子。
當業務需要接入到 CDN 時,用戶只需調整自己的 DNS 配置信息,將 A 記錄改為 CNAME 記錄,將內容改為 CDN 廠商所提供的接入域名即可。
因此這里我們使用dig命令就能看到自己的域名實際指向的CDN地址:
這里我們能看到天貓商城的地址 www.tmall.com 通過CNAME解析到后邊的www.tmall.com.danuoyi.tbcache.com,而 www.tmall.com.danuoyi.tbcache.com則通過CDN加速,將A地址解析到了后百年的47.246.25.233和47.246.25.234地址上。
CDN的工作流程:
要使用CDN,就得知道CDN的工作流程,每個云服務商的CDN使用方式有差異,但是CDN的工作流程基本上沒有太大差別,我們來了解下:
有人在CDN域名加速配置了緩存策略,刷新了CDN,如果需要更新之前的資源,需要重新刷新CDN,對于一些比較大的資源比如超過50MB的,一般建議使用“預取”,模擬用戶首次請求下載資源的流程,將這些大資源同步到CDN。