1. 程式人生 > 程式設計 >程式設計師關於CDN相關事項你瞭解多少?(上篇)

程式設計師關於CDN相關事項你瞭解多少?(上篇)

享學課堂特邀作者:老顧

轉載請宣告出處!

前言

很多文章就介紹過高併發,秒殺等流量大的解決方案,提到過快取redis,訊息中介軟體等,今天老顧介紹一下另一個重要的知識點,這就是一直隱姓埋名的 CDN 了,注意不是 CSDN,而是 CDN!其全稱是 Content Delivery Network,即內容分發網路

網路耗時

使用者訪問我們的系統,會經歷網路傳輸,會消耗時間;我們來看看哪些地方決定了耗時

伺服器頻寬

網站伺服器接入網際網路的網路頻寬,這個頻寬決定了能為請求提供的訪問速度和併發訪問量

網路骨幹

網際網路的長途傳輸要道,出沒於IDC、骨幹網、都會網路、接入網等,會出現“時延”和“擁塞”。

運營商

網際網路覆蓋四大運營商,各運營商的網路獨立運營,各個運營商之間的互聯頻寬成為瓶頸

最後一公里

使用者電腦接入的網路,也被分為不同的接入方式ADSL或FTTX等,以及頻寬;不同的方式頻寬,不同費用。

控制時延

根據研究發現:當人們獲得網路資訊時,好感度隨時間流逝下降的最為迅速。

0.1 s:使用者幾乎感覺不到系統是否不連貫性。

1.0 s:使用者明顯注意到時延的發生,但是在該時間內思維依然是連貫的。

10 s:超過該時間的時延會使使用者失去等待意願。

控制時延無疑是現代資訊科技的重要指標。

CDN引入

在一般的系統中,使用者訪問一個網頁,網頁裡面包含圖片,CSS,JS等靜態內容

,以及一些動態的資料資訊。設計的比較好點系統都會做到動靜分離

使用者流量一旦大了之後,靜態資源伺服器的壓力也是非常大的,這些資源的特點是不會經常改變。一般涉及到不會改變的資源,我們能想到的就是用快取技術提高系統吞吐量,抗壓。

使用者時延的體驗感,是每個系統都要考慮的。集合上面的需求,在整個體系架構中,就引入了CDN這個技術。

CDN的意圖就是儘可能的減少資源在轉發、傳輸、鏈路抖動等情況下順利保障資訊的連貫性。 解決因分佈、頻寬、伺服器效能帶來的訪問延遲問題適用於站點加速、點播、直播等場景。使使用者可就近取得所需內容,解決 Internet網路擁擠的狀況,提高使用者訪問網站的響應速度和成功率。

CDN流程

上圖的主要流程如下:

1.使用者向瀏覽器輸入www.web.com這個域名,瀏覽器第一次發現本地沒有dns快取,則向網站的DNS伺服器請求

2.網站的DNS域名解析器設定了CNAME,指向了www.web.cdn.com(即請求指向了CDN網路中的智慧DNS負載均衡系統)

3.智慧DNS負載均衡系統解析域名,把對使用者響應速度最快的IP節點返回給使用者

4.使用者向該IP節點(CDN伺服器)發出請求;

5.由於是第一次訪問,CDN伺服器會向源web站點請求資料,並快取內容

6.請求結果發給使用者。

核心技術點CNAME對映,上面流程的總結就是,使用者發起域名請求,DNS會選擇最近CDNS節點給使用者,直接從這個CDN節點上面獲取資料。

CDN節點

每個CDN節點由兩部分組成:負載均衡裝置和快取記憶體伺服器

負載均衡裝置負責每個節點中各個Cache的負載均衡,保證節點的工作效率;同時負載均衡裝置還負責收集節點與周圍環境的資訊,保持與全域性負載DNS的通訊,實現整個系統的負載均衡。

快取記憶體伺服器(Cache)負責儲存客戶網站的大量資訊,就像一個靠近使用者的網站伺服器一樣響應本地使用者的訪問請求。

CDN的管理系統是整個系統能夠正常運轉的保證。它不僅能對系統中的各個子系統和裝置進行實時監控,對各種故障產生相應的告警,還可以實時監測到系統中總的流量和各節點的流量,並儲存在系統的資料庫中,使網管人員能夠方便地進行進一步分析。

總結

CDN的引入大大的提升了系統的吞吐量,以及使用者的體驗感;還起到了資料備份的作用。不過也會產生一些問題,尤其是快取資訊,有時候經常會出現資訊更新了,CDN節點的資訊還是舊資料。

這個就需要我們小夥伴們要了解一些瀏覽器、代理伺服器和源站點之間的快取協議是什麼樣的,怎麼去控制快取?

老顧下一篇會繼續介紹,謝謝!!!

你的贊和關注是我繼續創作的動力~