摘要:真正要做高性能的系統,不僅需要在數據結構與算法層面深入,更要從硬件操作系統文件系統底層原理等多個領域做更多的研究例如阿里云自研的系統使用了裸盤技術。
《CDN之我見》共由三個篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業術語,想深入了解和感受 CDN 究竟是什么的同學。本次由白金老師繼續為大家分享《CDN之我見》系列二,主要講解緩存是什么、工作的基本原理是怎樣的,以及 CDN 是如何面對安全挑戰的。
首先我們先來說一下 CDN 的緩存系統。
緩存也叫 Cache,是 CDN 領域最重要的一個組成部分,對于靜態內容分發,大至視頻點播、文件下載,小至 html 頁面、jpg/gif/png 圖片、css/js 等,都可以緩存到本地,最終用戶(網民)訪問時,不必回到原始服務器拿取數據,從而節省了時間、降低了源站服務器的網絡帶寬支出和負載。
對于 CDN 來說,每臺 Cache 機器每天的請求量是十分驚人的,磁盤上所存儲的內容量也多得可怕,十幾塊 TB 級的硬盤被塞滿數據也是很正常的事情,因此當一個請求到來時,能迅速檢索出磁盤上的文件并讀取、吐給最終用戶成了一件很重要的事情。
如何快速檢索數據?
一般采用高效的數據結構或算法,例如 Hash(哈希)。
Hash 算法簡單說就是通過某種模運算取余,按照有限余數做為不同鏈表的坐標進行數據存儲。若當有多個數據余數相同時,則再按照單鏈表的方式存儲數據。
理論上 Hash 算法在最好的情況下,和 map 無異,O(1) 的時間復雜度。
在最壞情況下(所有數據樣本經過 Hash 運算都得到同一個余數),則性能與單鏈表無異,查找時間復雜度是 O(n)。
如果磁盤空間不夠了怎么辦?
使用基于訪問熱度的內容淘汰算法,例如 FIFO、LRU、LFU、SLRU、LIRS 等,感興趣的同學可以看一下推薦的文章:
《緩存淘汰算法 - LRU》http://flychao88.iteye.com/bl...
《Cache 替換算法只:LIRS》https://www.jianshu.com/p/036...
《詳解三種緩存過期策略LFU,FIFO,LRU(附帶實現代碼)》https://www.cnblogs.com/s-b-b...
《HLR中的cache機制及其SLRU替換算法》http://www.docin.com/p-126462...
SATA 盤雖然存儲空間大,但受尋道速度限制,IOPS 往往很低,響應時間會被拉長。而相比之下,SSD 可以大幅度提升響應速度,但受成本和技術工藝限制,SSD 盤的空間相比 SATA 而言要小很多、貴很多。綜合上面兩種情況,混合盤的分級存儲模式誕生了,即 SSD + SATA,通過熱度算法將最熱的內容放到內存、次熱放到 SSD,冷數據放到 SATA,最冷數據受磁盤空間限制不進行存儲,直接從 upstream 或源站獲取。
當網民訪問到 Cache 服務器上時,Cache 服務器會利用 Hash 算法查找本地是否存有緩存數據,若有,則直接讀取,組織成 HTTP 報文內容,吐給網民。
同理,若當本地沒有緩存住的內容時,Cache 會向其上游(upstream)拿取數據吐給網民,并根據內容的描述(例如是否可以緩存,需要緩存多久)來決定是否/如何緩存住這個請求內容。
CDN 的關鍵技術是調度和緩存,有很多開源軟件可以實現 CDN 的基本需求,但性能卻遠達不到商業需求。真正要做高性能的 Cache 系統,不僅需要在數據結構與算法層面深入,更要從硬件、操作系統、文件系統、底層原理等多個領域做更多的研究(例如阿里云自研的 CDN Cache 系統使用了裸盤技術)。
從上述內容大致可以看出一個道理:CDN,入門易,做好難!
原理篇最后一部分簡單和大家介紹一下 CDN 的安全
一般的攻擊分為兩種類型,一種是蠻力型攻擊,一種是技巧型攻擊。
例如 SYN-Flooding、反射攻擊、帶寬飽和攻擊等,都是通過海量請求(有些甚至是毫無用處的請求)將系統帶寬資源、計算資源耗盡,從而達到使目標無法正常提供服務能力的目的,達到攻擊者的攻擊意圖。
這種攻擊的特點是:
攻擊源分布廣泛,攻擊具有持續性,難以準確溯源
攻擊手段暴力,流量大,以達到短時間不能服務為主要目的
技術門檻低,但由于需要眾多資源,攻擊成本較高
而例如 XSS 跨站、SQL 注入、CSRF、漏洞利用等,都是通過網站提供的系統(例如老版本操作系統存在協議棧崩潰漏洞)、組件(例如 bash、OpenSSL、Struts2 存在遠程執行漏洞)、軟件邏輯漏洞(例如輸入框檢測存在缺陷導致拼湊 SQL 語句的 SQL 注入漏洞)等來進行攻擊。
這種攻擊的特點是:
攻擊流量小
攻擊較為隱蔽,不易被察覺
以竊取內容為主要目的
攻擊具有一定的破壞和不可逆性
無需大量攻擊資源,攻擊成本較低,技術含量較高
接入 CDN 后就可以規避安全風險嗎?
是的,或者說可以從一定程度上盡可能解決或盡可能規避安全風險。
隱藏源站信息
當某個網站接入 CDN 后,源站信息會被隔離,外界很難找到真正的源站地址(這里說很難,其實也是有可能的,主要看源站的安全防范意識),這樣攻擊者至少就無法直接對源站進行直接攻擊。
分布式架構
若做不到直接對源站進行直接攻擊,則攻擊者實際攻擊的目標不是源站,而是 CDN 廠商的分布式架構,此時除非 CDN 廠商的所有 CDN 節點的所有服務器都被攻陷,否則仍然有部分服務器是可以提供服務的。
安全防護
對于技巧型攻擊,CDN 廠商前端可以通過前置應用層過濾器的技術來分析、攔截可能存在的安全隱患。(例如阿里云的 SCDN 則是集成了 Security 與 CDN 于一身的新產品)
作為“系列二”的最后收尾,我想強調的是,CDN 除了技術,還有例如后臺支撐系統、售后、銷售等一系列的組件和團隊配合運作,才能有安全、高效、穩定、極佳用戶體驗感的 CDN 產品。
最后還是那句話:CDN,入門易,做好難!
__
由于篇幅的關系,系列二把上次欠大家的“原理篇”補充齊全!
“系列三” 將開啟《CDN 之我見》的第二個篇章:“詳解篇”,會針對 CDN 領域的一些鮮為人知的技術、理念進行深入剖析,各位看官敬請期待。
原文鏈接
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11394.html
摘要:真正要做高性能的系統,不僅需要在數據結構與算法層面深入,更要從硬件操作系統文件系統底層原理等多個領域做更多的研究例如阿里云自研的系統使用了裸盤技術。 《CDN之我見》共由三個篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 CDN 專業術語,想深入了解和感受 CDN 究竟是什么的同學。本次由白金老師繼續為大家分享《CDN之我見》系列二,主要講解緩存是什么、工...
摘要:接下來說一下調度。調度是中的重中之重,流量接入流量牽引選擇合適的節點服務器等工作,都是在調度環節完成的。協議中有一個特殊的返回狀態。由于篇幅的關系,系列一先把的歷史由來,以及調度相關的知識和大家分享。 CDN是將源站內容分發至全國所有的節點,從而縮短用戶查看對象的延遲,提高用戶訪問網站的響應速度與網站的可用性的技術。它能夠有效解決網絡帶寬小、用戶訪問量大、網點分布不均等問題。 為了讓大...
摘要:接下來說一下調度。調度是中的重中之重,流量接入流量牽引選擇合適的節點服務器等工作,都是在調度環節完成的。協議中有一個特殊的返回狀態。由于篇幅的關系,系列一先把的歷史由來,以及調度相關的知識和大家分享。 CDN是將源站內容分發至全國所有的節點,從而縮短用戶查看對象的延遲,提高用戶訪問網站的響應速度與網站的可用性的技術。它能夠有效解決網絡帶寬小、用戶訪問量大、網點分布不均等問題。 為了讓大...
摘要:即使秒殺系統崩潰了,也不會對網站造成影響。動態生成隨機下單頁面的為了避免用戶直接訪問下單需要將動態化,用隨機數作為參數,只能秒殺開始的時候才生成。架構設計如何控制秒殺商品頁面搶購按鈕的可用禁用。該文件不被緩存的做法隨機數。 秒殺背景 電商中為了吸引顧客、聚集人氣,經常會策劃一些秒殺活動。活動中售賣的商品,要么價格遠低于市場價格,要么比較稀缺(如一些新發布的商品)。這些商品電商一般都會限...
閱讀 2927·2021-11-04 16:06
閱讀 766·2021-09-30 09:56
閱讀 1828·2021-09-22 10:02
閱讀 2611·2019-08-29 13:43
閱讀 2198·2019-08-29 13:42
閱讀 2288·2019-08-29 12:21
閱讀 1036·2019-08-29 11:29
閱讀 1374·2019-08-26 13:51