­

一文明白CDN加速是個啥

  • 2021 年 11 月 23 日
  • 筆記

作者:IT王小二
部落格://itwxe.com

不知不覺三個月沒更新了,這三個月諸事繁忙啊!最近沒那麼忙了,開始恢復更新。

一、CDN簡介

CDN(Content Delivery Network)是指內容分發網路,也稱為內容傳送網路,這個概念始於1996年,是美國麻省理工學院的一個研究小組為改善互聯網的服務品質而提出的。為了能在傳統IP網上發布豐富的寬頻媒體內容,他們提出在現有互聯網基礎上建立一個內容分發平台專門為網站提供服務,並於1999年成立了專門的CDN服務公司,為Yahoo提供專業服務。由於CDN是為加快網路訪問速度而被優化的網路覆蓋層,因此被形象地稱為「網路加速器」。

CDN的基本原理是廣泛採用各種快取伺服器,將這些快取伺服器分布到用戶訪問相對集中的地區或網路中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的快取伺服器上,由快取伺服器直接響應用戶請求。

CDN的基本思路是儘可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網路各處放置節點伺服器,CDN系統能夠實時地根據網路流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合資訊將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網路擁擠的狀況,提高用戶訪問網站的響應速度。 –摘自百度百科

二、通俗易懂理解CDN

看了上面的話不知道 CDN 用來幹啥的?不要緊,這不是有小二在嗎。小二這就給小夥伴們娓娓道來。

先不說 CDN,相信小夥伴們都在京東自營店買過東西吧,要是沒有的話扣 1 哈。

我信你個鬼

相信用過京東自營的小夥伴都知道,購買的商品基本隔天就到我們手中,這是為啥呢?

細心的小夥伴都可以看到發貨地址都離自己很近,京東將商品存儲在全國的八個大倉庫裡面,當我們從就京東自營店購買一個商品,那麼京東會從離你最近的倉庫發貨,就近發貨減少了道路的擁堵和長距離運輸,基本隔天就能收到商品,速度非常的快,再也不用漫長的等待。

那麼我們訪問一個網站時,如果站點伺服器是在廣州,而訪問的用戶在北京,那麼不同時間段的運營商網路狀態和經過長距離的網路傳輸,訪問速度會變慢,那麼訪問網站時有沒有辦法類似京東買商品可以快速到貨呢,當然有,解決辦法之一就是 CDN。

所以說人話, CDN 就是一個你的網站快取, 而 CDN 節點就類似京東在全國的八大倉庫,提前把網站內容存到了 CDN 節點,然後每個請求網站的用戶從就近節點獲取網站數據,大大減短了網路的長距離傳輸和網路擁堵的狀況下的訪問速度,類似下圖的效果。

用戶訪問CDN

同時不同 CDN 服務商還會針對電信、移動、聯通等網路專門設置 CDN 節點,減少網路服務商之間的切換。

三、CDN的好處

  • 隱藏伺服器源ip。
  • 連接所響應速度最快的節點提高訪問速度。
  • CDN節點快取減少網站伺服器訪問壓力。

四、CDN原理解析

因為小二是程式猿嘛,所以肯定要扯一扯 CDN 原理的。以我的域名 itwxe.com 為例看看一個請求走的解析路線,目前我的解析服務商是 DNSPod,CDN 使用的是百度雲加速。

不使用 CDN 時

不使用CDN時

  1. 用戶輸入訪問的域名 itwxe.com,作業系統向 LocalDNS 查詢域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查詢域名的授權伺服器 (這裡假設 LocalDNS 快取過期)。
  3. RootDNS 將域名授權 DNS 記錄返回給 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授權 DNS 記錄後,繼續向域名授權 DNS (DNSPod)查詢域名的 IP 地址。
  5. 域名授權 DNS (DNSPod)查詢域名記錄後,返回給 LocalDNS。
  6. LocalDNS 將得到的域名映射的 IP 地址,返回給用戶端。
  7. 用戶端得到域名 IP 地址後,訪問站點伺服器。
  8. 站點伺服器接收請求,將內容返回給客戶端。

使用 CDN 時

使用CDN時

  1. 用戶輸入訪問的域名 itwxe.com,作業系統向 LocalDNS 查詢域名的 IP 地址。
  2. LocalDNS 向 RootDNS 查詢域名的授權伺服器 (這裡假設 LocalDNS 快取過期)。
  3. RootDNS 將域名授權 DNS 記錄返回給 LocalDNS,我的是 DNSPod。
  4. LocalDNS 得到域名的授權 DNS 記錄後,繼續向域名授權 DNS (DNSPod)查詢域名的 IP 地址。
  5. 域名授權 DNS (DNSPod)查詢域名記錄後(一般是CNAME,例如我的是itwxe.com.cname.yunjiasu-cdn.net.),返回給 LocalDNS。
  6. LocalDNS 得到域名記錄後,向智慧調度 DNS 查詢域名的 IP 地址。
  7. 智慧調度 DNS 根據一定的演算法和策略,將最適合的 CDN 節點 IP 地址返回給 LocalDNS。
  8. LocalDNS 將得到的域名 IP 地址,返回給用戶端。
  9. 用戶得到域名 IP 地址後,訪問站點伺服器。
  10. 站點伺服器接收請求,將內容返回給客戶端。

使用 dig 命令可以看到請求的 cname 地址和 最終訪問的 CDN 節點 IP,如下圖訪問我的部落格訪問的節點。

image-20211122124106221

五、免費CDN服務商

有人說過:「免費的往往是最貴的」,所以…

下面列舉的免費 CDN 使用時一定要注意免費版官方的使用說明,沒有設置好 CDN 的情況下如果被 DDos 了可能一夜之間傾家蕩產。

下面列舉的免費 CDN 使用時一定要注意免費版官方的使用說明,沒有設置好 CDN 的情況下如果被 DDos 了可能一夜之間傾家蕩產。

下面列舉的免費 CDN 使用時一定要注意免費版官方的使用說明,沒有設置好 CDN 的情況下如果被 DDos 了可能一夜之間傾家蕩產。

重要的事情說三遍,下面小二開始正式說說目前免費 CDN 有哪些比較好用的。

國外

  • Cloudflare

cloudflare

官方網站://www.cloudflare.com/zh-cn/

國外最好用的 CDN,沒有之一,如果你的伺服器在國外且域名沒有備案,那麼需要使用 CDN 的市況下 Cloudflare 可以說是最好的選擇了,免費套餐即不限流量,還能抗 DDos 攻擊。當然如果你的伺服器在中國且域名已經備案了,那麼就使用中國的 CDN 吧,就不是加速 CDN,而是減速 CDN 了。

優點:免費套餐即不限流量,可以抗 DDos 攻擊。

缺點:在中國訪問速度不佳。

中國

如果需要使用中國的 CDN 服務商服務,那麼前提就是域名需要備案了,備案了才能使用中國的 CDN,下面介紹幾個常見的。

  • 百度雲加速

百度雲加速

官方網站://su.baidu.com/

小二第一個使用的,也是目前正在使用的 CDN 服務商,幾個月前還是 CDN 節點數量 6-9 個,流量10g/天,單個上傳文件大小 100M,現在沒想到都縮水這麼多了,不過目前使用速度還可以,免費又大碗。

順便說一下百度雲 CDN,百度雲 CDN 和百度雲加速不是同一個產品,百度雲 CDN 號稱可以24小時極速收錄,但是我試用了兩個月的免費套餐之後還是切換回了百度雲加速。原因是24小時極速收錄效果不佳,我問了客服,客服說也只是把訪問數據提交給收錄部門進行處理。

優點:免費套餐縮水後流量5G/天,速度還不錯。

缺點:隨著免費套餐縮水,CDN節點數量減少,很多功能需要付費使用,同時個人認證需要手持身份證拍照(略麻煩)。

  • 奇安信CDN

官方網站://wangzhan.qianxin.com/

這個是最近百度雲加速免費版套餐縮水和加了很多限制後小二朋友推薦給我的,小二後面會考慮 CDN 從百度雲加速切換到奇安信 CDN。因為目前奇安信 CDN 免費不限量,朋友部落格測試訪問速度還可以,媽媽再也不用擔心我會因為 DDos 攻擊傾家蕩產了。

優點:免費不限量,安全,不用擔心 DDos。

缺點:節點少,同時個人認證也需要手持身份證認證(不過朋友說上傳個奧特曼都行,只要你網站備案了,個人認證沒人審核的)。

  • 又拍雲

又拍雲

官方網站://www.upyun.com/

也是很多部落客正在使用的 CDN,申請加入又拍雲聯盟後將又拍雲鏈接附在網站底部,每個月就可以獲得 15GB 的 CDN 流量和 10GB 的存儲空間(即對象存儲),對象存儲自動走 CDN 流量,無需其他配置。

優點:速度快,節點多,有在線客服。

缺點:流量少,又拍雲節點經常被打,每年得申請一次又拍雲聯盟。

其他比較常見的還有 上海雲盾、多吉雲、七牛雲就不一一介紹了。

六、CDN的使用

每個服務商 CDN 的配置介面都不大一樣,不好寫怎麼配置,所以我大致說下 CDN 配置的思路。

1、首先保證域名A記錄解析源站IP可以正常訪問。

2、接入CDN主要有兩種方式,第一種是 NS 解析,第二種是 CNAME 解析,大部分情況使用 CNAME 解析就行了。

3、選擇 CNAME 解析後在選擇的 CDN 服務商處添加網站,然後添加解析記錄,添加解析記錄之後會生成一個 CNAME 域名值。

4、複製這個 CNAME 域名值,進入你的域名解析服務商介面處,將解析記錄解析成 CDN 生成的 CNAME 域名值。

配置成功之後就可以愉快的使用 CDN 了,當然這只是最基本的配置,還有很多需要注意的地方,例如快取策略,快取時間,免費套餐的訪問頻寬閾值,免費流量使用完之後的策略…都是需要注意的地方。

因為百度雲加速小二已經配置好了,不想還原設置重新設置,所以下面我就按上面的步驟以奇安信 CDN 為例說下怎麼配置 CDN。

1、首先保證域名解析源站能訪問這就不用說了吧。

2、奇安信 CDN 官網註冊帳號實名認證後,在域名列表頁面,輸入你的域名,選擇 CNAME 解析,點擊添加域名。

添加cdn主域名

3、添加域名後點擊添加子域名,添加記錄,小二選擇的是回源到 IP,所以添加兩條A記錄,如果是回源到域名,由別的域名提供IP,則添加 CNAME 記錄。小二添加了 itwxe.com 和 www.itwxe.com 兩條記錄,配置結果如下圖,最終會生成兩條記錄,這就是我們在域名解析處需要用到的兩條記錄。

添加cdn解析子域名

CDN解析記錄配置

4、在解析出得到兩條解析記錄後,進入域名解析配置介面,小二的域名是在騰訊雲購買的,解析服務商是 DNSPod,複製步驟三的兩條記錄添加到 DNSPod 中,同時需要注意的是需要一一對應,這樣就就完成了最簡單的 CDN 配置了。小二的示例如下圖。

域名解析

等待 DNSPod 解析更改生效,騰訊雲免費版DNS解析套餐更改記錄生效時間是 10 分鐘,此時可以再次使用 dig 命令,可以看到奇安信 CDN 已經生效了,不再是百度雲加速。

等了10分鐘,我也以為要成功了,畢竟小二可是老司機了,結果一訪問網站,發現訪問不了了!

以小二多年跳坑的經驗,九成是CDN節點和源站SSL證書之間證書的問題,待我上傳個 SSL 證書啥問題都解決了,當我以為故事到這裡就結束了,結果…

奇安信不支援泛域名證書設置

不支援泛域名的話還是老老實實百度雲加速吧,一個一個配置子域名可太累了…

當然配置 CDN 主要的流程就是上面的4個步驟,配置過程中有問題的客官歡迎留言評論。

都讀到這裡了,來個 點贊、評論、關注、收藏 吧!