開頭
這篇文章通過 FCC 上海線下和成都微信的分享,整理成文字稿順便湊一下更新,考慮到吃瓜讀者們不知道都了解到啥程度,以及我科普作者的身份(自己定的),我決定從入門到放棄的介紹一下,大緻涉及:
由于每個地方都事無巨細講起來非常費勁,費勁就容易跳票,而且會導緻篇幅過長,所以其實都是科普向的,如果想要深入,在每個地方都會給出鍊接,可以進行針對性的深入閱讀。
如果有說的不對的地方請各位大佬指摘,粗體部分為超鍊接。
什麼是 CDN
從一個簡單的栗子說起:
非洲農業不發達,人人都要金坷垃」——相信大家基本上都看過來自美國聖地亞哥的視頻,美國人、非洲人和日本人在一起搶來搶去。如果金坷垃隻在一個地方生産,那麼非洲的運輸成本和生産者的産能壓力都很大。
那麼很簡單,我們在世界的每個需要金坷垃的國家都開代工廠,都生産金坷垃——我們的 CDN 就是生産金坷垃的公司,而一個個「節點」就是代工廠。
CDN,中文名叫做「内容分發網絡」,它的作用是減少傳播時延,找最近的節點,實際上,盡管互聯網幫助我們實現了地球村,但是從中國到日本和從中國到台灣的時延仍舊是不一樣的,這一點可以從 ping 和 traceroute 中看出。
CDN 的優點
訪問加速
CDN 作為前端性能經典手段,相信大家已經無腦使用了,正如前面所說的,減少了時延,從很大程度上就能作為加速手段了。實際上,真正的 CDN 并不是前面舉例的一個國家一個節點,甚至是一個運營商,一個省份乃至地區都會有節點。
減輕源站(服務器)負載
一個非常簡單就能想明白的問題,如果 CDN 已經能幫我返回數據了,那麼請求就不會到達源站,源站(服務器)的負載就減輕了。可以看看這篇文章(談一談騰訊雲服務器被DDOS攻擊解決辦法)
訪問原理
從我們發起請求,到到達 CDN 節點,到底經過了哪些東西,CDN 是怎麼加速我們的請求的呢?
這張圖也是我愛技術網從網上找來的。
首先我們在地址欄鍵入一個網址,浏覽器發現本地沒有關于這個網址的 DNS 緩存,所以向網站的 DNS 服務器發起請求。
網站的 DNS 服務器設置了 CNAME,指向了某個 CDN 服務器,也就是我們常見的阿裡雲、騰訊雲、Cloudflare 之類的,去請求 CDN 中的智能 DNS 均衡負載系統。
均衡負載系統解析域名,把對用戶響應最快的節點返回給用戶,然後用戶向該節點發出請求。
如果是第一次訪問該内容,CDN 服務器會向源站請求數據并緩存,否則的話,直接在緩存節點中找到該數據,将請求結果發給用戶。
對于最簡單的 CDN 系統而言,隻要一台 DNS 調度服務器和一個節點服務器即可,但在複雜的應用中,會存在多級緩存,多台 Cache 來協同工作。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!