愛奇藝 CDN 運維平臺實踐
CDN 的全稱是 Content Delivery Network,即內容分發網絡。它是構建在現有網絡基礎之上的智能虛擬網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。
簡單來說,CDN 就是爲了網絡內容訪問速度 “更快 “而生的。那麼如今的網絡本身四通八達,爲什麼還需要 CDN 呢?
一、爲什麼需要 CDN?
舉個簡單的例子,假設我們忽略網絡傳輸的損耗、設備延時,網絡傳輸速度接近光速,是 30 萬公里每秒,從東京到美國硅谷的距離大概爲 1 萬公里,也就是說,如果你的服務器在東京,你上傳了一張很小的圖片,美國用戶訪問至少需要 60 毫秒。而且,這只是理論數據,現實世界中,網絡環境是十分複雜的,跨地域、跨運營商、網絡擁塞、抖動等問題,都會積少成多,使得延時成倍增加,還有可能訪問失敗,最終影響訪問體驗。
CDN 的出現,正是爲了解決這個問題。我們將這張圖片分發並緩存在美國的 CDN 節點之上,美國用戶就無需從東京獲取數據,直接從就近的美國本地 CDN 節點獲取到圖片,這大大節省了傳輸時間,提升訪問效率。CDN 的節點通常會遍佈全球,源站的文件會被被緩存到世界各地,這樣全球用戶都可以實現快速訪問。
它有點像分佈於各地的倉儲物流點,很多品牌會預先在倉儲物流點儲備一些爆款商品(靜態文件使用 CDN 進行緩存),當用戶從電商平臺下單購買貨物的時候(用戶發起請求),平臺根據用戶的收穫地址就近匹配到最近的倉儲物流點並直接進行派貨(就近分發),讓用戶以最快的速度拿到快遞包裹(分發的內容)。我們可以用實際的生活經驗來做個對比,如果從江浙滬包郵區寄給杭州的用戶,一般第二天就能到,如果是從北京、深圳發貨,一般需要 2-3 天!
這就是 CDN 的緣起。簡單來說,它就是一個分佈式的緩存服務器,主要作用就是儘可能減少資源在轉發、傳輸、鏈路抖動等情況下的時延,保障信息的連貫與極速。當下,我們生活在互聯網世界,視頻和直播在數據上有巨大的吞吐量,CDN 扮演着護航者和加速者的角色,更快速、穩定地將信息觸達每一個用戶。
二、CDN 的工作原理
下面,我們來進一步瞭解下 CDN 的工作原理。首先,關於 CDN 的那些名詞,需要掃個盲。
-
**Origin Server 源站:**做 CDN 之前的客戶真正的服務器。
-
**User:**訪問者,也就是要訪問網站的網民。
-
**Last Mile:**最後一公里,也就是網民到他所訪問到的 CDN 服務器之間的路徑。
-
**域名:**域名是 Internet 網絡上的一個服務器或一個網絡系統的名字,全世界,沒有重複的域名。
-
**CNAME 記錄:**它是一個別名記錄 (Canonical Name);當 DNS 系統在查詢 CNAME 左面的名稱的時候,都會轉向 CNAME 右面的名稱再進行查詢,一直追蹤到最後的 PTR 或 A 名稱,成功查詢後纔會做出迴應,否則失敗。
-
**CNAME 域名:**CDN 的域名加速需要用到 CNAME 記錄,在阿里雲控制檯配置完成 CDN 加速後,您會得到一個加速後的域名,稱之爲 CNAME 域名(該域名一定是. kunlun.com), 用戶需要將自己的域名作 CNAME 指向這個. kunlun.com 的域名後,域名解析的工作就正式轉向阿里雲,該域名所有的請求都將轉向阿里雲 CDN 的節點。
-
**DNS:**DNS 即 Domain Name System,是域名解析服務的意思。它在互聯網的作用是:把域名轉換成爲網絡可以識別的 ip 地址。人們習慣記憶域名,但機器間互相只認 IP 地址,域名與 IP 地址之間是一一對應的,它們之間的轉換工作稱爲域名解析,域名解析需要由專門的域名解析服務器來完成,整個過程是自動進行的。比如:上網時輸入的 www.baidu.com 會自動轉換成爲 220.181.112.143
-
邊緣節點:也稱 CDN 節點、Cache 節點等;是相對於網絡的複雜結構而提出的一個概念,指距離最終用戶接入具有較少的中間環節的網絡節點,對最終接入用戶有較好的響應能力和連接速度。其作用是將訪問量較大的網頁內容和對象保存在服務器前端的專用 cache 設備上,以此來提高網站訪問的速度和質量。
-
**Cache:**cache 高速緩衝存儲器一種特殊的存儲器子系統,其中複製了頻繁使用的數據以利於快速訪問。存儲器的高速緩衝存儲器存儲了頻繁訪問的 RAM 位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩衝存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器; 如果沒有保存該地址,則進行常規的存儲器訪問。因爲高速緩衝存儲器總是比主 RAM 存儲器速度快,所以當 RAM 的訪問速度低於微處理器的速度時,常使用高速緩衝存儲器。
接下來是 CDN 的工作原理,最簡單的 CDN 網絡由一個 DNS 服務器和幾臺緩存服務器組成,如下圖所示:
-
①當用戶點擊網站頁面上的內容 URL,經過本地 DNS 系統解析,DNS 系統會最終將域名的解析權交給 CNAME 指向的 CDN 專用 DNS 服務器。
-
②CDN 的 DNS 服務器將 CDN 的全局負載均衡設備 IP 地址返回用戶。
-
③用戶向 CDN 的全局負載均衡設備發起內容 URL 訪問請求。
-
④CDN 全局負載均衡設備根據用戶 IP 地址,以及用戶請求的內容 URL,選擇一臺用戶所屬區域的區域負載均衡設備,告訴用戶向這臺設備發起請求。
-
⑤區域負載均衡設備會爲用戶選擇一臺合適的緩存服務器提供服務,選擇的依據包括:根據用戶 IP 地址,判斷哪一臺服務器距用戶最近;根據用戶所請求的 URL 中攜帶的內容名稱,判斷哪一臺服務器上有用戶所需內容;查詢各個服務器當前的負載情況,判斷哪一臺服務器尚有服務能力。基於以上這些條件的綜合分析之後,區域負載均衡設備會向全局負載均衡設備返回一臺緩存服務器的 IP 地址。
-
⑥全局負載均衡設備把服務器的 IP 地址返回給用戶。
-
⑦用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。如果這臺緩存服務器上並沒有用戶想要的內容,而區域均衡設備依然將它分配給了用戶,那麼這臺服務器就要向它的上一級緩存服務器請求內容,直至追溯到網站的源服務器將內容拉到本地。
三、CDN 的關鍵技術組件
**看似複雜龐大的 CDN 系統,其中有幾個關鍵技術組件:**調度、緩存和安全。
1、 **調度是 CDN 中的重中之重,**流量接入、流量牽引、選擇合適的 CDN 節點服務器等工作,都是在調度環節完成的。
2、 緩存也叫 Cache,是 CDN 領域最重要的一個組成部分,對於靜態內容分發,大至視頻點播、文件下載,小至 html 頁面、jpg/gif/png 圖片、css/js 等,都可以緩存到本地,最終用戶(網民)訪問時,不必回到原始服務器拿取數據,從而節省了時間、降低了源站服務器的網絡帶寬支出和負載。對於 CDN 來說,每臺 Cache 機器每天的請求量是十分驚人的,磁盤上所存儲的內容量也多得可怕,十幾塊 TB 級的硬盤被塞滿數據也是很正常的事情,因此當一個請求到來時,能迅速檢索出磁盤上的文件並讀取、吐給最終用戶成了一件很重要的事情。
3、 針對各類網絡攻擊,比如帶寬飽和攻擊、反射攻擊等蠻力型攻擊,還有 XSS 跨站、SQL 注入、漏洞利用等技巧型攻擊,**CDN 可以從隱藏源站、分佈式架構、安全防護三個層面進行安全防護。**首先,當網站接入 CDN 後,源站信息會被隔離,攻擊者就無法直接對源站進行直接攻擊,其次,CDN 天然分佈式架構可以當某些節點被攻擊的時候,很快察覺異常並智能調度至正常節點,確保業務穩定,再次,對於技巧性攻擊,在 CDN 邊緣節點前置安全防護能力,與中心聯動形成更完整、更貼近邊緣的防護策略,有利於安全隱患的攔截。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/JkC8Wt0XkN7-jw3FWuLr0w