CDN 相關(guān)
簡介
CDN是將源站內(nèi)容分發(fā)至全國所有的節(jié)點(diǎn)疏唾,從而縮短用戶查看對象的延遲,提高用戶訪問網(wǎng)站的響應(yīng)速度與網(wǎng)站的可用性的技術(shù)喉童。它能夠有效解決網(wǎng)絡(luò)帶寬小顿天、用戶訪問量大蔑担、網(wǎng)點(diǎn)分布不均等問題啤握。
CDN 其實(shí)是 Content Delivery Network 的縮寫晶框,即“內(nèi)容分發(fā)網(wǎng)絡(luò)”
源站內(nèi)容(image、html畜埋、js畴蒲、css等) 這個(gè)屬于內(nèi)容分發(fā)
CDN 誕生于二十多年前烦粒,隨著骨干網(wǎng)壓力的逐漸增大,以及長傳需求的逐漸增多锻弓,使得骨干網(wǎng)的壓力越來越大蔫骂,長傳效果越來越差牺汤。于是在 1995 年,MIT 的應(yīng)用數(shù)學(xué)教授 Tom Leighton 帶領(lǐng)著研究生 Danny Lewin 和其他幾位頂級研究人員一起嘗試用數(shù)學(xué)問題解決網(wǎng)絡(luò)擁堵問題补胚。
他們使用數(shù)學(xué)算法追迟,處理內(nèi)容的動(dòng)態(tài)路由安排敦间,并最終解決了困擾 Internet 使用者的難題。后來廓块,史隆管理學(xué)院的 MBA 學(xué)生 Jonathan Seelig 加入了 Leighton 的隊(duì)伍中带猴,從那以后他們開始實(shí)施自己的商業(yè)計(jì)劃,最終于 1998 年 8 月 20 日正式成立公司挤庇,命名為 Akamai。
同年 1998 年渴语,中國第一家 CDN 公司 ChinaCache 成立昆咽。
藍(lán)汛 是中國第一家CDN公司
在接下來的20年中,CDN行業(yè)歷經(jīng)變革和持續(xù)發(fā)展调违,行業(yè)也涌現(xiàn)出很多云CDN廠商泻轰。阿里云CDN是2008年從淘寶CDN起家,在2014年正式發(fā)展成為阿里云CDN的虚婿,它不僅為阿里巴巴集團(tuán)所有子公司提供服務(wù)泳挥,同時(shí)也將自身的資源、技術(shù)以云計(jì)算的方式輸出剧浸。
為什么有CDN
當(dāng)下的互聯(lián)網(wǎng)應(yīng)用都包含大量的靜態(tài)內(nèi)容矗钟,但靜態(tài)內(nèi)容以及一些準(zhǔn)動(dòng)態(tài)內(nèi)容又是最耗費(fèi)帶寬的吨艇,特別是針對全國甚至全世界的大型網(wǎng)站,如果這些請求都指向主站的服務(wù)器的話虑凛,不僅是主站服務(wù)器受不了软啼,單端口500M左右的帶寬也扛不住,所以大多數(shù)網(wǎng)站都需要CDN服務(wù)锣披。
根本上的原因是,訪問速度對互聯(lián)網(wǎng)應(yīng)用的用戶體驗(yàn)增热、口碑胧辽、甚至說直接的營收都有巨大的影響,任何的企業(yè)都渴望自己站點(diǎn)有更快的訪問速度摄咆。而HTTP傳輸時(shí)延對web的訪問速度的影響很大人断,在絕大多數(shù)情況下是起決定性作用的,這是由TCP/IP協(xié)議的一些特點(diǎn)決定的涩金。物理層上的原因是光速有限暇仲、信道有限熔吗,協(xié)議上的原因有丟包佳晶、慢啟動(dòng)、擁塞控制等中跌。
這就是你使用CDN的第一個(gè)也是最重要的原因:為了加速網(wǎng)站的訪問菇篡。
除了加速網(wǎng)站的訪問之外驱还,CDN還有一些作用:
- 為了實(shí)現(xiàn)跨運(yùn)營商、跨地域的全網(wǎng)覆蓋
互聯(lián)不互通闷沥、區(qū)域ISP地域局限咐容、出口帶寬受限制等種種因素都造成了網(wǎng)站的區(qū)域性無法訪問。CDN加速可以覆蓋全球的線路路狮,通過和運(yùn)營商合作,部署IDC資源涂籽,在全國骨干節(jié)點(diǎn)商展蒂,合理部署CDN邊緣分發(fā)存儲節(jié)點(diǎn),充分利用帶寬資源柳骄,平衡源站流量箕般。阿里云在國內(nèi)有500+節(jié)點(diǎn)丝里,海外300+節(jié)點(diǎn),覆蓋主流國家和地區(qū)不是問題臼婆,可以確保CDN服務(wù)的穩(wěn)定和快速幌绍。
- 為了保障你的網(wǎng)站安全
CDN的負(fù)載均衡和分布式存儲技術(shù),可以加強(qiáng)網(wǎng)站的可靠性颁独,相當(dāng)無無形中給你的網(wǎng)站添加了一把保護(hù)傘伪冰,應(yīng)對絕大部分的互聯(lián)網(wǎng)攻擊事件贮聂。防攻擊系統(tǒng)也能避免網(wǎng)站遭到惡意攻擊。
- 為了異地備援
當(dāng)某個(gè)服務(wù)器發(fā)生意外故障時(shí)病往,系統(tǒng)將會(huì)調(diào)用其他臨近的健康服務(wù)器節(jié)點(diǎn)進(jìn)行服務(wù)骄瓣,進(jìn)而提供接近100%的可靠性,這就讓你的網(wǎng)站可以做到永不宕機(jī)畔勤。
- 為了節(jié)約成本
投入使用CDN加速可以實(shí)現(xiàn)網(wǎng)站的全國鋪設(shè)庆揪,你根據(jù)不用考慮購買服務(wù)器與后續(xù)的托管運(yùn)維,服務(wù)器之間鏡像同步吝羞,也不用為了管理維護(hù)技術(shù)人員而煩惱内颗,節(jié)省了人力、精力和財(cái)力恨溜。
- 為了讓你更專注業(yè)務(wù)本身
CDN加速廠商一般都會(huì)提供一站式服務(wù)找前,業(yè)務(wù)不僅限于CDN躺盛,還有配套的云存儲、大數(shù)據(jù)服務(wù)周叮、視頻云服務(wù)等躯枢,而且一般會(huì)提供7x24運(yùn)維監(jiān)控支持槐臀,保證網(wǎng)絡(luò)隨時(shí)暢通水慨,你可以放心使用。并且將更多的精力投入到發(fā)展自身的核心業(yè)務(wù)之上朝抖。
原理
通俗原理(必須懂)
通過域名解析IP分析(加分)
當(dāng)用戶點(diǎn)擊網(wǎng)站頁面上的內(nèi)容URL治宣,經(jīng)過本地DNS系統(tǒng)解析侮邀,DNS 系統(tǒng)會(huì)最終將域名的解析權(quán)交給 CNAME 指向的 CDN 專用 DNS 服務(wù)器。
CDN 的 DNS 服務(wù)器將 CDN 的全局負(fù)載均衡設(shè)備 IP 地址返回用戶铝宵。
用戶向 CDN 的全局負(fù)載均衡設(shè)備發(fā)起內(nèi)容 URL 訪問請求华畏。
CDN 全局負(fù)載均衡設(shè)備根據(jù)用戶 IP 地址亡笑,以及用戶請求的內(nèi)容URL,選擇一臺用戶所屬區(qū)域的區(qū)域負(fù)載均衡設(shè)備惜纸,告訴用戶向這臺設(shè)備發(fā)起請求绝骚。
-
基于以下這些條件的綜合分析之后,區(qū)域負(fù)載均衡設(shè)備會(huì)向全局負(fù)載均衡設(shè)備返回一臺緩存服務(wù)器的IP地址:
根據(jù)用戶 IP 地址粪牲,判斷哪一臺服務(wù)器距用戶最近止剖;
根據(jù)用戶所請求的 URL 中攜帶的內(nèi)容名稱穿香,判斷哪一臺服務(wù)器上有用戶所需內(nèi)容;
+查詢各個(gè)服務(wù)器當(dāng)前的負(fù)載情況焙蚓,判斷哪一臺服務(wù)器尚有服務(wù)能力洒宝。
全局負(fù)載均衡設(shè)備把服務(wù)器的 IP 地址返回給用戶雁歌。
用戶向緩存服務(wù)器發(fā)起請求,緩存服務(wù)器響應(yīng)用戶請求比庄,將用戶所需內(nèi)容傳送到用戶終端。如果這臺緩存服務(wù)器上并沒有用戶想要的內(nèi)容扒最,而區(qū)域均衡設(shè)備依然將它分配給了用戶华嘹,那么這臺服務(wù)器就要向它的上一級緩存服務(wù)器請求內(nèi)容耙厚,直至追溯到網(wǎng)站的源服務(wù)器將內(nèi)容拉到本地。
DNS 服務(wù)器根據(jù)用戶 IP 地址俯渤,將域名解析成相應(yīng)節(jié)點(diǎn)的緩存服務(wù)器IP地址型宝,實(shí)現(xiàn)用戶就近訪問。使用 CDN 服務(wù)的網(wǎng)站梨树,只需將其域名解析權(quán)交給 CDN 的全局負(fù)載均衡(GSLB)設(shè)備岖寞,將需要分發(fā)的內(nèi)容注入 CDN仗谆,就可以實(shí)現(xiàn)內(nèi)容加速了。
常用的CDN緩存軟件
Varnish :可以認(rèn)為是內(nèi)存緩存藻雪,速度一流狸吞,但是內(nèi)存緩存也限制了其容量捷绒,緩存頁面和圖片一般是挺好的贯要;
squid是功能最全面的比較傳統(tǒng)的web cache server,有自己的存儲引擎字逗。,但是架構(gòu)太老葫掉,性能不怎樣些举。
nginx本來是反向代理/web服務(wù)器,用了插件可以做做這個(gè)副業(yè)俭厚,但是本身不支持的功能比較多
適用場景
-
網(wǎng)站站點(diǎn)/應(yīng)用加速
通俗講就是static 內(nèi)容加速户魏,靜態(tài)內(nèi)容加速,如:html image js css 等
視音頻點(diǎn)播/大文件下載分發(fā)加速
基本上都是視頻點(diǎn)播挪挤,MP4叼丑、flv等視頻文件,例如國內(nèi)的優(yōu)酷扛门、土豆鸠信、騰訊視頻、愛奇藝都是一樣星立。
- 視頻直播加速
視頻直播加速,流媒體切片葬凳、轉(zhuǎn)碼绰垂、碼流轉(zhuǎn)換等等。
熊貓TV沮明、斗魚辕坝、淘寶直播
- 移動(dòng)應(yīng)用加速
移動(dòng)APP更新文件(apk文件)分發(fā),移動(dòng)APP內(nèi)圖片荐健、頁面酱畅、短視頻、UGC等內(nèi)容的優(yōu)化加速分發(fā)江场。
ios纺酸、安卓 端 APP 、微信小程序址否、支付寶小程序等餐蔬。
題外
流量劫持
其實(shí),CDN本身就是一種DNS劫持佑附,只不過是良性的樊诺。 不同于黑客強(qiáng)制DNS把域名解析到自己的釣魚IP上,CDN則是讓DNS主動(dòng)配合音同,把域名解析到臨近的服務(wù)器上词爬。
劫持通常分為兩類:
域名劫持,又稱DNS劫持权均,通常是指域名指向到非正常IP(惡意IP)顿膨,該惡意IP通過反向代理的方式锅锨,在能返回網(wǎng)頁正常內(nèi)容的情況,可能插入惡意代碼恋沃、監(jiān)聽網(wǎng)民訪問必搞、劫持敏感信息等操作。通常驗(yàn)證一個(gè)域名是否被劫持的方法是PING一個(gè)域名囊咏,如果發(fā)現(xiàn)PING出來的IP不是您的服務(wù)器真實(shí)IP恕洲,則可以確定被劫持了(當(dāng)然如果使用了知道創(chuàng)宇云安全等安全加速平臺,得到的IP為平臺IP梅割,并非劫持)
數(shù)據(jù)劫持研侣,通常由電信運(yùn)營商中某些員工等勾結(jié)犯罪分子,在公網(wǎng)中進(jìn)行數(shù)據(jù)支持炮捧,插入庶诡,此類情況極隱蔽,不會(huì)改變用戶域名解析IP咆课,而是直接數(shù)據(jù)流經(jīng)運(yùn)營商寬帶時(shí)在網(wǎng)頁中挺入內(nèi)容末誓,此類情況,建議網(wǎng)頁啟用HTTPS加密书蚪,可以解決這一問題(通信是加密的喇澡,運(yùn)營商無法插入惡意內(nèi)容)
高仿、洗流量
CDN 可以通過分流 殊校,洗掉來自Ddos 大部分的攻擊 晴玖。