0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

什么是CDN ?CDN工作原理是什么?

程序員cxuan ? 來源:JavaGuide ? 作者:Guide ? 2022-10-21 15:34 ? 次閱讀

什么是 CDN ?

CDN全稱是 Content Delivery Network/Content Distribution Network,翻譯過的意思是內(nèi)容分發(fā)網(wǎng)絡。

我們可以將內(nèi)容分發(fā)網(wǎng)絡拆開來看:

內(nèi)容 :指的是靜態(tài)資源比如圖片、視頻、文檔、JS、CSS、HTML。

分發(fā)網(wǎng)絡 :指的是將這些靜態(tài)資源分發(fā)到位于多個不同的地理位置機房中的服務器上,這樣,就可以實現(xiàn)靜態(tài)資源的就近訪問比如北京的用戶直接訪問北京機房的數(shù)據(jù)。

所以,簡單來說,CDN 就是將靜態(tài)資源分發(fā)到多個不同的地方以實現(xiàn)就近訪問,進而加快靜態(tài)資源的訪問速度,減輕服務器以及帶寬的負擔。

類似于京東建立的龐大的倉儲運輸體系,京東物流在全國擁有非常多的倉庫,倉儲網(wǎng)絡幾乎覆蓋全國所有區(qū)縣。這樣的話,用戶下單的第一時間,商品就從距離用戶最近的倉庫,直接發(fā)往對應的配送站,再由京東小哥送到你家。

e841f26c-50fa-11ed-a3b6-dac502259ad0.png

京東倉配系統(tǒng)

你可以將 CDN 看作是服務上一層的特殊緩存服務,分布在全國各地,主要用來處理靜態(tài)資源的請求。

e85dadf4-50fa-11ed-a3b6-dac502259ad0.png

CDN 簡易示意圖

我們經(jīng)常拿全站加速和內(nèi)容分發(fā)網(wǎng)絡做對比,不要把兩者搞混了!全站加速(不同云服務商叫法不同,騰訊云叫 ECDN、阿里云叫 DCDN)既可以加速靜態(tài)資源又可以加速動態(tài)資源,內(nèi)容分發(fā)網(wǎng)絡(CDN)主要針對的是靜態(tài)資源。

e87aac42-50fa-11ed-a3b6-dac502259ad0.png

絕大部分公司都會在項目開發(fā)中交使用 CDN 服務,但很少會有自建 CDN 服務的公司?;诔杀?、穩(wěn)定性和易用性考慮,建議直接選擇專業(yè)的云廠商(比如阿里云、騰訊云、華為云、青云)或者 CDN 廠商(比如網(wǎng)宿、藍汛)提供的開箱即用的 CDN 服務。

很多朋友可能要問了:既然是就近訪問,為什么不直接將服務部署在多個不同的地方呢?

成本太高,需要部署多份相同的服務。

靜態(tài)資源通常占用空間比較大且經(jīng)常會被訪問到,如果直接使用服務器或者緩存來處理靜態(tài)資源請求的話,對系統(tǒng)資源消耗非常大,可能會影響到系統(tǒng)其他服務的正常運行。

同一個服務在在多個不同的地方部署多份(比如同城災備、異地災備、同城多活、異地多活)是為了實現(xiàn)系統(tǒng)的高可用而不是就近訪問。

CDN 工作原理是什么?

搞懂下面 3 個問題也就搞懂了 CDN 的工作原理:

靜態(tài)資源是如何被緩存到 CDN 節(jié)點中的?

如何找到最合適的 CDN 節(jié)點?

如何防止靜態(tài)資源被盜用?

靜態(tài)資源是如何被緩存到 CDN 節(jié)點中的?

你可以通過預熱的方式將源站的資源同步到 CDN 的節(jié)點中。這樣的話,用戶首次請求資源可以直接從 CDN 節(jié)點中取,無需回源。這樣可以降低源站壓力,提升用戶體驗。

如果不預熱的話,你訪問的資源可能不再 CDN 節(jié)點中,這個時候 CDN 節(jié)點將請求源站獲取資源,這個過程是大家經(jīng)常說的回源。

命中率和回源率是衡量 CDN 服務質(zhì)量兩個重要指標。命中率越高越好,回源率越低越好。

如果資源有更新的話,你也可以對其刷新,刪除 CDN 節(jié)點上緩存的資源,當用戶訪問對應的資源時直接回源獲取最新的資源,并重新緩存。

如何找到最合適的 CDN 節(jié)點?

GSLB (Global Server Load Balance,全局負載均衡)是 CDN 的大腦,負責多個 CDN 節(jié)點之間相互協(xié)作,最常用的是基于 DNS 的 GSLB。

CDN 會通過 GSLB 找到最合適的 CDN 節(jié)點,更具體點來說是下面這樣的:

瀏覽器向 DNS 服務器發(fā)送域名請求;

DNS 服務器向根據(jù) CNAME( Canonical Name ) 別名記錄向 GSLB 發(fā)送請求;

GSLB 返回性能最好(通常距離請求地址最近)的 CDN 節(jié)點(邊緣服務器,真正緩存內(nèi)容的地方)的地址給瀏覽器;

瀏覽器直接訪問指定的 CDN 節(jié)點。

e8c167d6-50fa-11ed-a3b6-dac502259ad0.png

CDN 原理示意圖

為了方便理解,上圖其實做了一點簡化。GSLB 內(nèi)部可以看作是 CDN 專用 DNS 服務器和負載均衡系統(tǒng)組合。CDN 專用 DNS 服務器會返回負載均衡系統(tǒng) IP 地址給瀏覽器,瀏覽器使用 IP 地址請求負載均衡系統(tǒng)進而找到對應的 CDN 節(jié)點。

GSLB 是如何選擇出最合適的 CDN 節(jié)點呢?GSLB 會根據(jù)請求的 IP 地址、CDN 節(jié)點狀態(tài)(比如負載情況、性能、響應時間、帶寬)等指標來綜合判斷具體返回哪一個 CDN 節(jié)點的地址。

如何防止資源被盜刷?

如果我們的資源被其他用戶或者網(wǎng)站非法盜刷的話,將會是一筆不小的開支。

解決這個問題最常用最簡單的辦法設置Referer 防盜鏈,具體來說就是根據(jù) HTTP 請求的頭信息里面的 Referer 字段對請求進行限制。我們可以通過 Referer 字段獲取到當前請求頁面的來源頁面的網(wǎng)站地址,這樣我們就能確定請求是否來自合法的網(wǎng)站。

CDN 服務提供商幾乎都提供了這種比較基礎的防盜鏈機制。

e8d21324-50fa-11ed-a3b6-dac502259ad0.png

騰訊云 CDN Referer 防盜鏈配置

不過,如果站點的防盜鏈配置允許 Referer 為空的話,通過隱藏 Referer,可以直接繞開防盜鏈。

通常情況下,我們會配合其他機制來確保靜態(tài)資源被盜用,一種常用的機制是時間戳防盜鏈。相比之下,時間戳防盜鏈的安全性更強一些。時間戳防盜鏈加密的 URL 具有時效性,過期之后就無法再被允許訪問。

時間戳防盜鏈的 URL 通常會有兩個參數(shù)一個是簽名字符串,一個是過期時間。簽名字符串一般是通過對用戶設定的加密字符串、請求路徑、過期時間通過 MD5 哈希算法取哈希的方式獲得。

時間戳防盜鏈 URL 示例:

http://cdn.wangsu.com/4/123.mp3?wsSecret=79aead3bd7b5db4adeffb93a010298b5&wsTime=1601026312

wsSecret :簽名字符串。

wsTime: 過期時間。

e8ea6ae6-50fa-11ed-a3b6-dac502259ad0.png

時間戳防盜鏈的實現(xiàn)也比較簡單,并且可靠性較高,推薦使用。并且,絕大部分 CDN 服務提供商都提供了開箱即用的時間戳防盜鏈機制。

e909df66-50fa-11ed-a3b6-dac502259ad0.png

七牛云時間戳防盜鏈配置

除了 Referer 防盜鏈和時間戳防盜鏈之外,你還可以 IP 黑白名單配置、IP 訪問限頻配置等機制來防盜刷。

總結

CDN 就是將靜態(tài)資源分發(fā)到多個不同的地方以實現(xiàn)就近訪問,進而加快靜態(tài)資源的訪問速度,減輕服務器以及帶寬的負擔。

基于成本、穩(wěn)定性和易用性考慮,建議直接選擇專業(yè)的云廠商(比如阿里云、騰訊云、華為云、青云)或者 CDN 廠商(比如網(wǎng)宿、藍汛)提供的開箱即用的 CDN 服務。

GSLB (Global Server Load Balance,全局負載均衡)是 CDN 的大腦,負責多個 CDN 節(jié)點之間相互協(xié)作,最常用的是基于 DNS 的 GSLB。CDN 會通過 GSLB 找到最合適的 CDN 節(jié)點。

為了防止靜態(tài)資源被盜用,我們可以利用Referer 防盜鏈+時間戳防盜鏈。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    8849

    瀏覽量

    84954
  • CDN
    CDN
    +關注

    關注

    0

    文章

    310

    瀏覽量

    28735

原文標題:美團二面:什么是 CDN ?CDN 工作原理是什么?

文章出處:【微信號:cxuangoodjob,微信公眾號:程序員cxuan】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用CDN安全嗎?CDN如何達到基本防護功能呢?

    網(wǎng)絡的普及為生活帶來極大便利,民眾能夠在不出門的情況下透過網(wǎng)絡完成各種大小事務。線上服務已成為日常生活中不可或缺的一部分,提供線上服務的供應商為了因應龐大的客戶流量,會選擇部署CDN
    的頭像 發(fā)表于 08-30 13:03 ?218次閱讀
    使用<b class='flag-5'>CDN</b>安全嗎?<b class='flag-5'>CDN</b>如何達到基本防護功能呢?

    華納云:如何理解CDN

    內(nèi)容分發(fā)網(wǎng)絡(CDN)是一種網(wǎng)絡架構,旨在提高用戶對網(wǎng)站、應用程序或其他互聯(lián)網(wǎng)內(nèi)容的訪問速度和性能。CDN 的主要原理是通過在全球范圍內(nèi)部署分布式服務器,將內(nèi)容緩存并提供給用戶距離Z近的服務器,從而
    的頭像 發(fā)表于 08-23 15:20 ?196次閱讀

    CDN網(wǎng)站加速

    CDN網(wǎng)站加速是什么呢? CDN,英文全名為Content?Delivery?Network(也有人稱“Content?Distribution?Network”)的縮寫,即是我們中文所指的內(nèi)容傳遞
    的頭像 發(fā)表于 08-08 15:02 ?206次閱讀
    <b class='flag-5'>CDN</b>網(wǎng)站加速

    什么情況下的網(wǎng)站要使用CDN加速呢?

    速度慢等問題。 原理就是在客戶端和源站中多加一層節(jié)點,用以加快用戶的訪問速度,讓用戶和離自己最近的節(jié)點層做交互。 CDN網(wǎng)站加速的工作流程 當用戶訪問已經(jīng)加入CDN服務的網(wǎng)站時,首先通過DNS重定向技術確定最接近用戶的最佳
    的頭像 發(fā)表于 07-26 16:29 ?207次閱讀

    CDN是什么?了解用CDN服務連到網(wǎng)站加速的原理與優(yōu)勢

    為什么通過CDN能讓網(wǎng)站變得更加快速呢?有想過為什么我們在中國使用網(wǎng)絡,卻能夠快速、穩(wěn)定的連上海外的網(wǎng)站嗎?今天就來與各位聊聊CDN加速的原理,看看CDN是如何幫助網(wǎng)站加速,而除了加速之外
    的頭像 發(fā)表于 07-21 10:54 ?334次閱讀

    融合CDN是什么?為什么需要融合CDN?其應用方法與原理是什么?

    你了解融合CDN是什么嗎?為什么需要融合CDN?你可能有聽過融合CDN,但你知道它的應用方法與原理嗎?本文將帶你一次了解什么是融合CDN,詳細介紹融合
    的頭像 發(fā)表于 07-11 14:49 ?264次閱讀

    IP地址與CDN技術

    內(nèi)容分發(fā)網(wǎng)絡(CDN)就是通過內(nèi)容分配到離用戶最優(yōu)的服務器來提高訪問速度。而IP地址如何分配與管理就是CND技術的基礎。本文將來探討介紹CDN中的IP地址分配與管理,以及如何通過CDN優(yōu)化網(wǎng)絡性能
    的頭像 發(fā)表于 07-10 11:30 ?284次閱讀

    CDN節(jié)點是什么

    CDN 節(jié)點是什么 CDN 主要依靠部署在各地的邊緣服務器,利用全局負載技術將用戶的訪問指向距離最近且正常工作的緩存服務器上,用戶訪問網(wǎng)站時由緩存服務器直接響應用戶請求。CDN 節(jié)點作
    的頭像 發(fā)表于 07-06 13:45 ?986次閱讀
    <b class='flag-5'>CDN</b>節(jié)點是什么

    高防CDN是如何應對DDoS和CC攻擊的

    高防CDN(內(nèi)容分發(fā)網(wǎng)絡)主要通過分布式的網(wǎng)絡架構來幫助網(wǎng)站抵御DDoS(分布式拒絕服務)和CC(挑戰(zhàn)碰撞)攻擊。 下面是高防CDN如何應對這些攻擊的詳細描述: 1. DDoS攻擊防護 DDoS攻擊
    的頭像 發(fā)表于 06-07 14:29 ?269次閱讀

    服務器cdn防御一般是個人安裝還是企業(yè)安裝

    服務器CDN防御一般是企業(yè)安裝,而不是個人安裝。 什么是CDN CDN,即內(nèi)容分發(fā)網(wǎng)絡(Content Delivery Network),是一種將內(nèi)容分發(fā)到全球多個節(jié)點的網(wǎng)絡架構。CDN
    的頭像 發(fā)表于 02-03 10:58 ?556次閱讀

    海外融合CDN之火傘云

    在當今互聯(lián)網(wǎng)全球化的時代,出海業(yè)務已經(jīng)成為許多企業(yè)的必然選擇。在海外市場上,快速、穩(wěn)定的內(nèi)容傳輸對于企業(yè)的成功至關重要。然而,如何合理的運用多家CDN供應商的資源實現(xiàn)智能化的調(diào)度,以及如何與業(yè)務更緊
    的頭像 發(fā)表于 01-13 16:01 ?337次閱讀

    CDN加速原理詳解

    一、CDN加速是什么意思 CDN是Content Delivery Network)英文首字母的縮寫,中文翻譯為內(nèi)容分發(fā)網(wǎng)絡,由于CDN是為加快網(wǎng)絡訪問速度而被優(yōu)化的網(wǎng)絡覆蓋層,因此被形象地稱為
    的頭像 發(fā)表于 01-12 16:06 ?933次閱讀
    <b class='flag-5'>CDN</b>加速原理詳解

    了解Goooood?狗帝融合CDN: 類型和部署選項

    Goooood?狗帝融合CDN為企業(yè)提供多種部署選項,以優(yōu)化內(nèi)容交付并增強用戶體驗。無論是面向全球受眾,針對特定區(qū)域,還是提供無縫的游戲體驗,Goooood?狗帝融合CDN都提供了正確的解決方案
    的頭像 發(fā)表于 01-08 14:34 ?403次閱讀

    優(yōu)化內(nèi)容傳遞,借助 Goooood?狗帝 融合CDN:一種綜合解決方案

    Goooood?狗帝 融合CDN 是內(nèi)容傳遞優(yōu)化的強大解決方案。通過利用多個 CDN 的網(wǎng)絡,它提升了全球范圍內(nèi)企業(yè)的性能、可靠性和可擴展性。
    的頭像 發(fā)表于 01-08 14:31 ?389次閱讀

    恒訊科技分析:香港服務器CDN配置教程

    配置香港服務器的CDN(內(nèi)容分發(fā)網(wǎng)絡)涉及多個步驟,主要目標是通過分發(fā)內(nèi)容至全球各個節(jié)點,提高網(wǎng)站性能和降低加載時間。下面是一個簡要的香港服務器CDN配置教程: 步驟1:選擇CDN服務提供商 選擇
    的頭像 發(fā)表于 12-14 17:25 ?531次閱讀