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