《CDN 之我見》系列二 原理篇(快取 安全)

2021-09-11 12:00:18 字數 2367 閱讀 2126

《cdn之我見》共由三個篇章組成,分為原理篇、詳解篇和隕坑篇。本篇章適合那些從未接觸過、或僅了解一些 cdn 專業術語,想深入了解和感受 cdn 究竟是什麼的同學。本次由白金老師繼續為大家分享《cdn之我見》系列二,主要講解快取是什麼、工作的基本原理是怎樣的,以及 cdn 是如何面對安全挑戰的。

對於 cdn 來說,每台 cache 機器每天的請求量是十分驚人的,磁碟上所儲存的內容量也多得可怕,十幾塊 tb 級的硬碟被塞滿資料也是很正常的事情,因此當乙個請求到來時,能迅速檢索出磁碟上的檔案並讀取、吐給終端使用者成了一件很重要的事情。

一般採用高效的資料結構或演算法,例如 hash(雜湊)。

hash 演算法簡單說就是通過某種模運算取餘,按照有限餘數做為不同鍊錶的座標進行資料儲存。若當有多個資料餘數相同時,則再按照單鏈表的方式儲存資料。

理論上 hash 演算法在最好的情況下,和 map 無異,o(1) 的時間複雜度。

在最壞情況下(所有資料樣本經過 hash 運算都得到同乙個餘數),則效能與單鏈表無異,查詢時間複雜度是 o(n)。

sata 盤雖然儲存空間大,但受尋道速度限制,iops 往往很低,響應時間會被拉長。而相比之下,ssd 可以大幅度提公升響應速度,但受成本和技術工藝限制,ssd 盤的空間相比 sata 而言要小很多、貴很多。綜合上面兩種情況,混合盤的分級儲存模式誕生了,即 ssd + sata,通過熱度演算法將最熱的內容放到記憶體、次熱放到 ssd,冷資料放到 sata,最冷資料受磁碟空間限制不進行儲存,直接從 upstream 或源站獲取。

當網民訪問到 cache 伺服器上時,cache 伺服器會利用 hash 演算法查詢本地是否存有快取資料,若有,則直接讀取,組織成 http 報文內容,吐給網民。

同理,若當本地沒有快取住的內容時,cache 會向其上游(upstream)拿取資料吐給網民,並根據內容的描述(例如是否可以快取,需要快取多久)來決定是否/如何快取住這個請求內容。

cdn 的關鍵技術是排程和快取,有很多開源軟體可以實現 cdn 的基本需求,但效能卻遠達不到商業需求。真正要做高效能的 cache 系統,不僅需要在資料結構與演算法層面深入,更要從硬體、作業系統、檔案系統、底層原理等多個領域做更多的研究(例如阿里雲自研的 cdn cache 系統使用了裸盤技術)。

從上述內容大致可以看出乙個道理:cdn,入門易,做好難!

一般的攻擊分為兩種型別,一種是蠻力型攻擊,一種是技巧型攻擊。

例如 syn-flooding、反射攻擊、頻寬飽和攻擊等,都是通過海量請求(有些甚至是毫無用處的請求)將系統頻寬資源、計算資源耗盡,從而達到使目標無法正常提供服務能力的目的,達到攻擊者的攻擊意圖。

這種攻擊的特點是:

攻擊源分布廣泛,攻擊具有持續性,難以準確溯源

攻擊手段暴力,流量大,以達到短時間不能服務為主要目的

技術門檻低,但由於需要眾多資源,攻擊成本較高

而例如 xss 跨站、sql 注入、csrf、漏洞利用等,都是通過**提供的系統(例如老版本作業系統存在協議棧崩潰漏洞)、元件(例如 bash、openssl、struts2 存在遠端執行漏洞)、軟體邏輯漏洞(例如輸入框檢測存在缺陷導致拼湊 sql 語句的 sql 注入漏洞)等來進行攻擊。

這種攻擊的特點是:

攻擊流量小

攻擊較為隱蔽,不易被察覺

以竊取內容為主要目的

攻擊具有一定的破壞和不可逆性

無需大量攻擊資源,攻擊成本較低,技術含量較高

是的,或者說可以從一定程度上盡可能解決或盡可能規避安全風險。

若做不到直接對源站進行直接攻擊,則攻擊者實際攻擊的目標不是源站,而是 cdn 廠商的分布式架構,此時除非 cdn 廠商的所有 cdn 節點的所有伺服器都被攻陷,否則仍然有部分伺服器是可以提供服務的。

對於技巧型攻擊,cdn 廠商前端可以通過前置應用層過濾器的技術來分析、攔截可能存在的安全隱患。(例如阿里雲的 scdn 則是整合了 security 與 cdn 於一身的新產品)

作為「系列二」的最後收尾,我想強調的是,cdn 除了技術,還有例如後台支撐系統、售後、銷售等一系列的元件和團隊配合運作,才能有安全、高效、穩定、極佳使用者體驗感的 cdn 產品。

__

由於篇幅的關係,系列二把上次欠大家的「原理篇」補充齊全!

「系列三」 將開啟《cdn 之我見》的第二個篇章:「詳解篇」,會針對 cdn 領域的一些鮮為人知的技術、理念進行深入剖析,各位看官敬請期待。

《CDN 之我見》原理篇 CDN的由來與排程

cdn是將源站內容分發至全國所有的節點,從而縮短使用者檢視物件的延遲,提高使用者訪問 的響應速度與 的可用性的技術。它能夠有效解決網路頻寬小 使用者訪問量大 網點分布不均等問題。為了讓大家更全面的了解cdn的原理 排程 快取和安全等關鍵技術點,阿里雲高階技術專家白金將自己從事 cdn 相關領域工作 ...

《CDN 之我見》原理篇 CDN的由來與排程

cdn是將源站內容分發至全國所有的節點,從而縮短使用者檢視物件的延遲,提高使用者訪問 的響應速度與 的可用性的技術。它能夠有效解決網路頻寬小 使用者訪問量大 網點分布不均等問題。為了讓大家更全面的了解cdn的原理 排程 快取和安全等關鍵技術點,阿里雲高階技術專家白金將自己從事 cdn 相關領域工作 ...

《CDN 之我見》原理篇 CDN的由來與排程

cdn是將源站內容分發至全國所有的節點,從而縮短使用者檢視物件的延遲,提高使用者訪問 的響應速度與 的可用性的技術。它能夠有效解決網路頻寬小 使用者訪問量大 網點分布不均等問題。為了讓大家更全面的了解cdn的原理 排程 快取和安全等關鍵技術點,阿里雲高階技術專家白金將自己從事 cdn 相關領域工作 ...