CDN含義與DNS的聯絡
一、CDN的含義
CDN也可以稱為內容分發網路。CDN利用了多地部署快取節點,再有中心智慧排程、分發這一手法來降低網路延遲,提高網站訪問速度。簡單來講CDN就是用來加速的,但跟我們的加速器不同,它是端對端的一個加速。主要目的在加快使用者訪問速度,減輕寬頻壓力。
打個比方,假設我們人在廣東,想要訪問一個源站在北京的網站,是不是就可能會出現訪問較慢的情況,但如果部署了CDN,在廣東就有快取節點,那使用者的訪問速度一下就上來了,是不是使用者留存率也高了,客戶轉化率也同步上升了。
二、如何理解DNS
我們平常上網訪問網站,我們的計算機是不能夠直接識別網站的域名的,需要依靠DNS伺服器把域名轉譯成ip地址,我們的計算機才能夠訪問我們的域名,這其中的環節比較複雜,DNS伺服器在裡面就是佔主要作用。
當我們向DNS伺服器發起域名解析請求時,DNS伺服器首先會檢測本地是否存在快取,如果有,則直接返回IP地址,如果沒有,則會以遞迴形式層層訪問直至IP返回。
例如,我們要訪問,首先我們會先向全球的根伺服器發起請求,詢問cn域名的地址,然後再向負責cn域名的名稱伺服器傳送請求,找到jiandun.cn,這樣層層遞迴,最終找到我們需要的IP地址。
三、CDN和DNS的區別
上面我們說到CDN實際是讓我們使用者能夠就近訪問這樣一個功能,但現在我們要解決的是如何才能知道使用者是就近訪問呢,這就需要DNS配合了。
我們在平常使用DNS服務時,可以根據使用者使用的遞迴伺服器進行簡單的定位,是哪個地方的遞迴伺服器,CDN系統就理應把他理解為這個地區的使用者。然後排程到該地區附近的快取節點。
但也會存在使用者實際IP跟遞迴伺服器並不一致,中間如果存在運營商中轉的情況,那麼這次分配將會是一次錯誤的排程。
四、HTTP排程
針對上面的問題我們還有一種排程方式——HTTP排程。
當我們的使用者訪問伺服器時,可以先分析使用者的IP地址,然後伺服器給使用者做一個302重定向,將離使用者最近的伺服器快取好,使用者再次訪問時就是最適合的節點了。
這種定位更準確,但因為中間存在了多一次請求跟返回,所以會比DNS排程延遲高一些。
實際運用我們是兩者同時利用起來,HTTP排程主要是來確定使用者定位的。
五、快取的兩種方式
大家可能很好奇,既然節點能夠快取資源,那麼節點的資源如何更新呢?
第一種方法是,伺服器主動請求,CDN節點被動接受。第二種是使用者發現請求的資源並不存在了,CDN節點主動放棄客戶請求,更新快取,相當於CDN節點被動快取。
第一種方法很容易出現404錯誤,所以大多CDN使用的都是第二種方法。
六、CDN工作流程
當使用者請求一個檔案時,CDN的工作過程如下:
1.DNS請求當地local DNS
2.當地local DNS遞迴地查詢伺服器的gslb
3.伺服器根據local DNS 分配最適合的節點,返回IP
4.使用者獲得最適合的接入IP,訪問最適合的節點。
5.如果該節點沒有使用者想要獲取的內容,則透過內部路由訪問上一節點,直到找到檔案或到達源站為止。
6.CDN節點快取該資料,下次請求該檔案可以直接返回。
瞭解了CDN與DNS的種種聯絡,相信大家對網站加速也有了初步認識,那麼我們運維人員在平時的維護工作中該如何選擇適合自己網站的CDN呢?像我們熟知的大廠阿里雲、cloud.tencent.com騰訊雲,這些對我們運維人員是否友好,如果預算不夠,是否應該嘗試一些劍盾雲、白山雲之類的中小廠呢?大家可以自行探索有好的CDN可以互相推薦使用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69998889/viewspace-2942121/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DNS與網站訪問有什麼聯絡?-VeCloudDNS網站Cloud
- SRE的含義及與 DevOps 如何關聯dev
- cookie與session的區別與聯絡CookieSession
- Session與Cookie的區別與聯絡SessionCookie
- 同步與阻塞的區別與聯絡
- hive與hbase的聯絡與區別Hive
- onchange與onpropertychange的聯絡與區別!
- BS與CS的聯絡與區別
- CDN加速快取的定義與作用快取
- JRE與JDK的區別與聯絡JDK
- define與typedef區別與聯絡
- Session和Cookie的聯絡與區別SessionCookie
- Hive之 hive與hadoop的聯絡HiveHadoop
- servletcontext與application的聯絡ServletContextAPP
- CGI與Servlet的區別和聯絡Servlet
- Session和Cookie的區別與聯絡SessionCookie
- ORACLE SGA與共享內聯絡Oracle
- Kafka與ActiveMQ的區別與聯絡詳解KafkaMQ
- 詳解Kafka與ActiveMQ的區別與聯絡!KafkaMQ
- B/S與C/S的聯絡與區別
- 關於HashSet與TreeSet的區別與聯絡
- typeof、instanceof與isPrototypeOf()的差異與聯絡
- Oracle FailSafe與rac的聯絡與區別OracleAI
- Android與Java ME的區別與聯絡AndroidJava
- COM與DCOM的區別與聯絡 (轉)
- Generator 函式的含義與用法函式
- Linux和Ubuntu的區別與聯絡LinuxUbuntu
- connection session process的聯絡與區別Session
- COM/DCOM的區別與聯絡 (轉)
- Oracle FailSafe與rac的聯絡與區別(zt)OracleAI
- 熱修復問題被拒解決(含蘋果聯絡方式)蘋果
- Apache與Tomcat 區別聯絡ApacheTomcat
- javaSE中的==和equals的聯絡與區別Java
- IP地址,子網掩碼、預設閘道器,DNS伺服器之間的聯絡與區別DNS伺服器
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- ipv4與ipv6的聯絡與區別
- 程式和執行緒的區別與聯絡執行緒
- js中this指向的問題與聯絡深入探究JS