CDN实现原理
cdn簡介
由于用戶訪問源站業務有性能瓶頸,通過cdn技術把源站的內容緩存到多個節點。用戶向源站域名發起請求時,請求會被調度至最接近用戶的服務節點,直接由服務節點直接快速響應,有效降低用戶訪問延遲,提升可用性。
了解cdn需要先了解一下知識點:
- dns解析原理
- CNAME作用
dns解析流程
說再多也不如實際應用,讓我們從例子中了解dns解析流程
?
$ nslookup www.moehot.com Server: 10.0.0.1 Address: 10.0.0.1#53Non-authoritative answer: Name: www.moehot.com Address: 139.196.3.197nslookup 是dns解析的命令,server 10.0.0.1是公司內部的dns服務器的ip. 139.196.3.197是請求域名的ip。
詳細的流程使用dig命令查看
?
$ dig +trace www.moehot.com ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> +trace www.moehot.com ;; global options: +cmd . 518382 IN NS a.root-servers.net. . 518382 IN NS b.root-servers.net. . 518382 IN NS c.root-servers.net. . 518382 IN NS d.root-servers.net. . 518382 IN NS e.root-servers.net. . 518382 IN NS g.root-servers.net. . 518382 IN NS h.root-servers.net. . 518382 IN NS i.root-servers.net. . 518382 IN NS j.root-servers.net. . 518382 IN NS k.root-servers.net. . 518382 IN NS l.root-servers.net. . 518382 IN NS m.root-servers.net. . 518382 IN NS root1.sc163.net. . 518382 IN NS root2.sc163.net. . 518382 IN NS b.root-servers.net. . 518382 IN NS c.root-servers.net. . 518382 IN NS d.root-servers.net. . 518382 IN NS e.root-servers.net. . 518382 IN NS g.root-servers.net. . 518382 IN NS h.root-servers.net. . 518382 IN NS i.root-servers.net. . 518382 IN NS j.root-servers.net. . 518382 IN NS k.root-servers.net. . 518382 IN NS l.root-servers.net. . 518382 IN NS m.root-servers.net. . 518382 IN NS root1.sc163.net. . 518382 IN NS root2.sc163.net. . 518382 IN NS a.root-servers.net. ;; Received 631 bytes from 10.0.0.1#53(10.0.0.1) in 54 mscom. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766 com. 86400 IN RRSIG DS 8 1 86400 20190224210000 20190211200000 16749 . owDDrAEA9JJUhzbHNnVNjPpqTqeJrWMScHU4Wskrp9gnkBKI8+1PeBfP 6uIUeVT+0w/Vcfh03p7mw0w5DS0ub8wQUfBTfY37s1MhE45fWueTyUGt l9aMEsma0UHZV1TL2njmDhgr7koN935hhjiSv26wymuBx5CpOvF2y7ql ih4JGsWPnHLrsfnqjq9njmP/3RQnpXrJDP/+reb5DTpdqLEf9TM/OHbt 1UpkG6rMUx4Jz53pIksji/CUfbYPiuH8FrUnVJ5thn0o+o2ZPpQqSisA 9C9dYDl1o75CDC3FShp56EjfeGmm6ncY8Kz5Irer1HUjOjiudN4cCjWU NnljsQ== ;; Received 1174 bytes from 202.12.27.33#53(m.root-servers.net) in 4386 msmoehot.com. 172800 IN NS dns9.hichina.com. moehot.com. 172800 IN NS dns10.hichina.com. CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190216054237 20190209043237 16883 com. ZpsxE9/jbJ0Ues0CJFIz9X5DvvsTgUlhLjpRIrQcXbo9z+avYuhL5O7J MxzY0KbxK2hGWK2q5zesaB+9ye1v7LuEVn8OzHtyjxGxjr7sXqWiU+0W 3lFK8q2EdNOulZJrmJ/nSZGNZ3aXRpeFWLD2LYs1Eipw5D6KmBAWAy/w xvE= HMIQOH986C2QQFJRPQJH18GTCL9922SH.com. 86400 IN NSEC3 1 1 0 - HMISVQBER3LFS6UELQ3DN9VT6QI4LL28 NS DS RRSIG HMIQOH986C2QQFJRPQJH18GTCL9922SH.com. 86400 IN RRSIG NSEC3 8 2 86400 20190218055540 20190211044540 16883 com. R3GJVt5SSPC7MQUJTs6h0OC9qQnj2WZU2Y/ec+xbj39/Wuo/TwunvKYz NIr20VkkhMOeX/s8cfA3XheNMBdwufxLZNYTt3ptBySZdmiRKYFi/9HG jUfEcBF2tVVE/ae5qzftgIm7O+AUYxkwWMKBL4+XC3A3sV8I0Fv2fd+Y iDk= ;; Received 887 bytes from 192.42.93.30#53(g.gtld-servers.net) in 152 mswww.moehot.com. 600 IN A 139.196.3.197 ;; Received 59 bytes from 140.205.41.26#53(dns10.hichina.com) in 36 ms讓我們來一步步分析解析流程:
- 首先會查看本地緩存查詢是否有對應的域名解析ip
- 沒有的情況下,向配置的dns服務器發起請求(10.0.0.1為公司內部dns服務器ip)
- Received 631 bytes from 10.0.0.1#53(10.0.0.1) in 54 ms -- 10.0.0.1會返回根域名服務器的地址(根域名服務器有多個,所以返回很多域名)
- Received 1174 bytes from 202.12.27.33#53(m.root-servers.net) -- 本機向根域名發起解析請求,根域名服務器返回.com頂級域名服務器地址
- Received 887 bytes from 192.42.93.30#53(g.gtld-servers.net) -- 本機向com.域名服務器發起請求,返回moehot.com.域名服務器地址
- 最后向moehot.com.域名發起請求得到www.moehot.com. 的ip地址
CNAME作用
CNAME 即:別名記錄。這種記錄允許您將多個名字映射到另外一個域名。通常用于同時提供WWW和MAIL服務的計算機。例如,有一臺計算機名為“host.mydomain.com”(A記錄)。它同時提供WWW和MAIL服務,為了便于用戶訪問服務。可以為該計算機設置兩個別名(CNAME):WWW和MAIL。這兩個別名的全稱就http://www.mydomain.com/和“mail.mydomain.com”。實際上他們都指向“host.mydomain.com”。
在cdn中實現原理是:給源站域名添加CNMAE,別名為加速節點的域名。當用戶向源站發起請求時,dns服務器解析源站域名時會發現有CNMAE記錄,這時dns服務器會向CNAME域名發起請求,請求會被調度至加速節點的域名。
騰訊云cdn實例
假設您的業務源站域名為 www.test.com ,當域名接入 CDN 開始使用加速服務后,您
的用戶發起 HTTP 請求,實際的處理流程如圖所示:
image.png
- 用戶向 www.test.com 下的某圖片資源,如 1.jpg 發起請求,先要向 Local DNS 發
起域名解析請求; - 當 Local DNS 解析 www.test.com 時,會發現已經配置了 CNAME
www.test.com.cdn.dnsv1.com,解析請求會發送至 Tencent DNS(GSLB),GSLB 為騰
訊云自主研發的調度體系,會為請求分配最佳節點 IP; - Local DNS 獲取 Tencent DNS 返回的解析 IP;
- 用戶測獲取解析 IP;
- 用戶向獲取的 IP 發起對資源 1.jpg 的訪問請求;
- 若該 IP 對應的節點緩存有 1.jpg,則會將數據直接返回給用戶(10),此時請求結
束。若該節點未緩存 1.jpg,則節點會向業務源站發起對 1.jpg 的請求(6、7、8),
獲取資源后,結合用戶自定義配置的緩存策略(可參考用戶指南中緩存時間設置章
節內容),將資源存儲(9),并返回給用戶(10),此時請求結束。
作者:openthewindow
鏈接:https://www.jianshu.com/p/14dede92b02f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
- 上一篇: 如何在家中自制安全的家用厨具?
- 下一篇: 搭建DNS域名解析服务器和本地配置HOS