原文地址:What Is a CDN and How Does It Work?
CDN –您會不斷看到這個(gè)縮寫單詞藐唠。 也許在URL中,也許在登錄頁面中,但從未被關(guān)注過-什么是內(nèi)容交付網(wǎng)絡(luò)仁期,它們的作用是什么殴胧?
我們將在這篇概述文章中進(jìn)行說明,并在后續(xù)帖子中演示兩個(gè)受歡迎的文章凡怎。
CDN基礎(chǔ)
CDN是傳遞內(nèi)容的計(jì)算機(jī)網(wǎng)絡(luò)实蓬。
更具體地說,這是一堆服務(wù)器全谤,它們存在于某些Web內(nèi)容的原始服務(wù)器和用戶發(fā)出請求的服務(wù)器之間肤晓,所有這些服務(wù)器的目的都是通過減少延遲來更快地交付內(nèi)容。 這是他們的主要目的啼县。
這些在地理位置上較近的服務(wù)器(也稱為PoP或存在點(diǎn))也緩存可緩存的內(nèi)容材原,從而減輕了原始服務(wù)器的許多負(fù)擔(dān)。 不同的CDN類型提供不同類型的服務(wù)季眷,并且它們可以具有不同的網(wǎng)絡(luò)拓?fù)?/a>:分散的CDN旨在使分散的服務(wù)器數(shù)量盡可能多 盡可能遍布世界各地余蟹。 Akamai就是這樣的CDN之一。 合并的CDN具有較少的點(diǎn)子刮,但為網(wǎng)絡(luò)性能威酒,吞吐量和DDoS抵抗而構(gòu)建的點(diǎn)較大窑睁。
CDN的類型
我們說過,CDN的主要目的是減少延遲并加快渲染速度葵孤。 但是担钮,在現(xiàn)代世界中,2MB圖像和500kb JavaScript庫在網(wǎng)站上需要3分鐘才能啟動尤仍,這種延遲幾乎無關(guān)緊要箫津。 但是隨著時(shí)間的推移而發(fā)展,CDN也有其他用途宰啦。
面向內(nèi)容的CDN
最初苏遥,CDN僅用于靜態(tài)內(nèi)容(JS,CSS赡模,HTML)田炭。 您必須在創(chuàng)建/上傳內(nèi)容時(shí)向他們推送內(nèi)容(他們不知道他們需要使用您的內(nèi)容來更新其緩存,即使有人請求也是如此)漓柑。
然后教硫,他們添加了origin pulling,使事情變得更加自動化–這意味著用戶請求CDN的URL辆布,然后 CDN自動請求原始網(wǎng)站的URL瞬矩,緩存返回的內(nèi)容。 此外谚殊,有效性成為重要的因素丧鸯。 現(xiàn)在蛤铜,許多CDN都緩存了網(wǎng)站的“最后存在”狀態(tài)嫩絮,因此,如果原始內(nèi)容變少了围肥,用戶仍然可以訪問CDNed內(nèi)容剿干,從而產(chǎn)生了穩(wěn)定的幻象,直到一切恢復(fù)正常為止穆刻。
此外置尔,現(xiàn)代CDN經(jīng)常會提供自動優(yōu)化層,這些層會根據(jù)請求的圖像大小自動調(diào)整圖像大小并保存以備將來使用氢伟。 這意味著榜轿,如果您的網(wǎng)站有2MB的標(biāo)題圖片,并且有人在300px寬的屏幕上請求它朵锣,那么CDN會復(fù)制一個(gè)大小為30kb谬盐,寬度為300px的副本,并在將來將其提供給所有移動用戶诚些,從而自動使網(wǎng)站速度更快 飞傀。
面向安全的CDN
CDN中增加的最后一層實(shí)用性是DDoS和僵尸程序防護(hù)皇型。 像Incapsula這樣的CDN專門從事此工作。
由于CDN是網(wǎng)站基礎(chǔ)結(jié)構(gòu)的最外層砸烦,并且是流量的第一個(gè)接收者弃鸦,因此CDN可以及早發(fā)現(xiàn)DDoS攻擊,并使用稱為Scrubber的特殊DDoS保護(hù)服務(wù)器將其阻止幢痘,而未等它們到達(dá)原始服務(wù)器就可將其擊潰唬格。
此外,通過使用從眾多客戶那里獲得的眾包知識颜说,CDN可以了解可疑IP西轩,垃圾郵件發(fā)送者,破壞者甚至爬蟲的類型及其行為脑沿。 例如藕畔,如果在站點(diǎn)A上識別到某個(gè)爬蟲,在站點(diǎn)B受同一CDN保護(hù)的情況下庄拇,便也會停止該爬蟲在站點(diǎn)B上工作注服,因?yàn)榱髁窟^濾器會識別出以前看到的模式。
而且措近,盡管CDN確實(shí)允許其客戶上傳自定義證書溶弟,但他們也提供自己的證書。 這有兩個(gè)好處:
- 當(dāng)證書中出現(xiàn)一個(gè)很大的漏洞時(shí)瞭郑,CDN通常會快速做出響應(yīng)辜御,因?yàn)樗鼈儞p失的最多(所有客戶)。 因此屈张,通常在大多數(shù)人甚至不知道安全漏洞之前就已經(jīng)有修復(fù)程序擒权。
- 連接速度更快,因?yàn)槿绻S多網(wǎng)站使用相同的CDN阁谆,那么您已經(jīng)通過其SSL證書與CDN建立了有效的連接和相互信任碳抄,并且不必為每個(gè)使用該CDN的站點(diǎn)重復(fù)此過程。 證書场绿。 這對單個(gè)網(wǎng)站的影響不如對整個(gè)網(wǎng)站的影響大剖效。
最大的玩家
CDN領(lǐng)域中一些最大的參與者是Akamai,AWS Cloudfront焰盗,Cloudinary璧尸,Incapsula,MaxCDN熬拒,F(xiàn)astly等公司爷光。
除了列出完整的類別,我們將列出其中每個(gè)類別都可以成為冠軍的類別:
爬蟲和DDoS防護(hù)
盡管在其他方面也不錯(cuò)梦湘,但I(xiàn)ncapsula在抓取和DDoS保護(hù)方面無與倫比瞎颗。 憑借龐大的數(shù)據(jù)庫件甥,該數(shù)據(jù)庫不僅包含有問題的代理IP地址,而且還包含機(jī)器人和爬蟲的鼠標(biāo)以及瀏覽模式哼拔,可以阻止大多數(shù)自動攻擊消失在他們的軌道上引有。
速度與全球影響力
Akamai,甚至Facebook都使用的CDN倦逐,在全球可用性方面擁有良好的記錄荷并。 他們分散的網(wǎng)絡(luò)拓?fù)淠P鸵约霸谑澜缟献钬毨У貐^(qū)(其他CDN缺乏的可用性)的可用性硼砰,使得即使在低連通性區(qū)域中,也可以使用Akamai平滑地加載內(nèi)容。 緊隨其后的是來自亞馬遜的AWS Cloudfront淤年。
選擇與否:您的目標(biāo)是從中國到美國吼句,從芬蘭到南極洲的全球性業(yè)務(wù)柳恐。
負(fù)擔(dān)能力
Amazon Cloudfront是付費(fèi)計(jì)劃中最便宜的(我們不算免費(fèi)計(jì)劃胎撇,因?yàn)檫@些計(jì)劃通常缺少重要功能),并且可以說是僅次于Akamai的最大覆蓋范圍秉犹,而且價(jià)格也不是那么便宜(分散的拓?fù)渚S護(hù)起來很昂貴)蛉谜。
選擇與否:價(jià)格是一個(gè)問題。
熱鏈接
熱鏈接是指當(dāng)有人在您網(wǎng)站上托管的圖像上選擇“復(fù)制圖像地址”崇堵,并直接將其直接包含在原始URL中的情況下型诚。 這通常是內(nèi)容竊賊的草和懶惰工作,但是如果模仿者成功地在影響力較大的社交媒體網(wǎng)站(例如Facebook或Reddit)上共享其網(wǎng)站鸳劳,并且服務(wù)器遭受了麻煩狰贯,則可能會導(dǎo)致大筆開支。 MaxCDN和KeyCDN都提供了很好的熱鏈接保護(hù)赏廓。
選擇與否:您有一個(gè)畫廊涵紊,旅行博客或任何其他圖像豐富的網(wǎng)站,這些網(wǎng)站可能會發(fā)生熱鏈接楚昭。
其他
我們鼓勵(lì)您自己出去調(diào)查選擇適合自己的栖袋。 有不計(jì)其數(shù)的職位將CDN相互比較,每個(gè)CDN的每個(gè)計(jì)劃在提供的選項(xiàng)上都與下一個(gè)有所不同抚太。 覆蓋全面非常困難,而且具體方面在不斷變化昔案。
實(shí)現(xiàn)過程
實(shí)現(xiàn)CDN通常需要在注冊商(您租用您的域名的公司)的控制面板中更改一些DNS記錄尿贫。 這導(dǎo)致所有流量首先到達(dá)CDN,進(jìn)而又到達(dá)您的網(wǎng)站踏揣。 由于這一切都是在后臺進(jìn)行(通過IP)庆亡,因此該過程對用戶是透明的。
有時(shí)捞稿,網(wǎng)站會在其主域中添加一個(gè)特殊的子域又谋,以在其上托管圖像拼缝,JavaScript,CSS和其他靜態(tài)內(nèi)容彰亥。 如果您在打開諸如Facebook之類的網(wǎng)站時(shí)打開瀏覽器開發(fā)控制臺的“網(wǎng)絡(luò)”選項(xiàng)卡咧七,或者只是注意瀏覽器的狀態(tài)欄,您會注意到其中包含cdn的許多URL –這就是該站點(diǎn)僅在請求 它的某些內(nèi)容來自CDN任斋。
為什么不通過CDN請求所有內(nèi)容继阻? 因?yàn)殪o態(tài)內(nèi)容通常很大-2MB圖像,500kb JS等废酷,所以值得快速提供瘟檩,這是原因a)它不會經(jīng)常更改并且可以長時(shí)間緩存,這是原因b)消除了靜態(tài)內(nèi)容的巨大負(fù)擔(dān)澈蟆。 應(yīng)用程序的主服務(wù)器墨辛,可以是動態(tài)的。
總結(jié)
在本文中趴俘,您了解了什么是CDN及其工作方式背蟆。 您了解了CDN的不同類型及其潛在的工作范圍,以及該領(lǐng)域的最大參與者哮幢。
在兩篇后續(xù)文章中带膀,我們將介紹Cloudinary和Cloudflare,在我們的主要Performance-Month-Project中橙垢,我們實(shí)際上將其中之一實(shí)現(xiàn)到了我們的真實(shí)應(yīng)用中垛叨,以便您可以在實(shí)際示例中看到它們。 敬請關(guān)注柜某!