偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

CDN 為什么這么設(shè)計?

網(wǎng)絡 網(wǎng)絡管理
CDN 網(wǎng)絡的建設(shè)成本還是很大的,只有大公司會自建,一般我們都會買三方服務,而且國內(nèi)和海外的 CDN 都是分開的,如果主要服務國內(nèi)用戶,那只買國內(nèi)的 CDN 服務即可。有了這套覆蓋全國、全球的 CDN 節(jié)點網(wǎng)絡之后,我們才能更快地打開網(wǎng)站。

過去幾十年,計算機網(wǎng)絡把幾乎全世界的計算機都連接了起來,我們只要把靜態(tài)資源和動態(tài)的代碼部署到服務器上,然后啟動服務監(jiān)聽某個端口,這樣世界各地的計算機就都能訪問該網(wǎng)站。

但是這樣有個問題,資源最終還是通過物理層網(wǎng)絡線路和設(shè)備傳輸?shù)?,每?jīng)過一段線路、一個網(wǎng)絡設(shè)備都有一些耗時,所以客戶端和服務器相距越遠,網(wǎng)站打開速度就越慢。

這就像你從海南買了一件東西,如果你人在廣州的話,那可能很快就收到了,因為傳輸距離近,但如果你在北京的話,那可能就要多等幾天了,因為中間經(jīng)過的線路、節(jié)點都比較多。

但這樣肯定不行的,用戶體驗會很差。怎么解決這個問題呢?

離得越遠網(wǎng)站打開速度就越慢,很容易想到,如果部署到很多個地方,當用戶訪問網(wǎng)絡的時候,訪問最近的那個不就行了?

這就像快遞都有一些中轉(zhuǎn)的倉庫,可以存放一些貨物,如果你人在北京,要買一個海南的東西,恰好北京的倉庫里有,那豈不是很快就可以收到了。

思路是沒問題,但是怎么實現(xiàn)呢?

用戶是通過域名訪問網(wǎng)站的,那能不能通過 DNS 服務器來實現(xiàn)這個功能呢?

前面寫過一篇 ??DNS 原理的文章??,這里簡單回顧下:

圖片

客戶端訪問某個域名的時候,會先查找本地 hosts 文件,如果能查到 ip 就直接訪問。

否則會向本地 DNS 服務器發(fā)請求,這個是聯(lián)通、移動等運營商提供的每個城市都有的 DNS 服務器。由它去域名服務器發(fā)送解析域名的請求,然后把結(jié)果返給客戶端。

域名是分層解析的,有根域名服務器、頂級域名服務器、權(quán)威域名服務器三層,比如 image.baidu.com 會先向根域名服務器發(fā)請求查詢 com 的頂級域名服務器的 ip,然后再向 com 頂級域名服務器查詢 image.baidu.com 的權(quán)威域名服務器的 ip。查詢到權(quán)威域名服務器之后,任意層級的域名都會在這里解析(所以叫權(quán)威域名服務器)。

看到這個權(quán)威域名服務器的時候,不知道大家是否就想到怎么實現(xiàn) CDN 網(wǎng)絡了。

能不能在權(quán)威域名服務器這一層根據(jù)客戶端的 ip 做一下負載均衡呢?比如北京來的 DNS 請求就返回北京機房的服務器的 ip,上海來的 DNS 請求就返回上海機房的服務器的 ip。

確實可以這樣實現(xiàn)內(nèi)容的就近分發(fā),這樣的負載均衡網(wǎng)絡就叫做 CDN (Conent Delivery Network)

但是實現(xiàn)這樣一個 CDN 網(wǎng)絡需要在全國建立多個機房,成本太高了,所以只有像百度、阿里、騰訊這類大公司才會自建 CDN,一般情況下我們都會買第三方的 CDN 服務來用。

這些公司建好了 CDN 網(wǎng)絡,實際上自己也是用不完的,也會對外提供 CDN 加速服務。

第三方的 CDN 服務自然也要提供一個 DNS 服務器,也就是實現(xiàn)根據(jù) ip 返回不同城市的服務器的 ip 的那個。

比如這是百度云 CDN 的原理圖:

圖片

用戶向本地 DNS 服務器發(fā)請求之后,經(jīng)歷根域名、頂級域名的 DNS 解析,最終會轉(zhuǎn)給權(quán)威 DNS 服務器。這時候只要權(quán)威 DNS 服務器再轉(zhuǎn)給 baidu 的 DNS 服務器就可以了,這樣就能接入 CDN 服務。

baidu 的 DNS 服務器實現(xiàn)了負載均衡,會根據(jù)請求 ip  所在的城市,返回不同城市的服務器的 ip。也就實現(xiàn)了就近分發(fā)的網(wǎng)絡加速功能。

那這個從權(quán)威 DNS 到 baidu 的 DNS 的轉(zhuǎn)發(fā)是怎么實現(xiàn)的呢?

DNS 的記錄有很多種類型,比如:

A 代表 address,記錄域名對應的 ip。

CNAME 代表域名還有一個別名,可以向那個域名來查 ip。

MX 代表件名后綴對應的域名或者 IP

看到這個 CNAME 類型,大家應該就想到怎么實現(xiàn)轉(zhuǎn)發(fā)了。

只要自己在 DNS服務器上配一條 CNAME 的記錄,指向 CDN 服務器的域名就可以了。

比如你用某云的 CDN 的時候,第一步也是要配置下自己的 DNS 服務器的 CNAME 指向它:

圖片

這樣,當你訪問某個域名的時候,解析域名的權(quán)威服務器會返回 CDN 服務的 DNS 服務器的域名,然后再向這臺 CDN 的 DNS 服務器發(fā)送解析域名的請求,這時候它就可以根據(jù) ip 所在城市來返回一個就近城市的服務器給你。

當然,也可以再做一層 CNAME 轉(zhuǎn)發(fā),比如 CDN 的 DNS 服務器把域名解析轉(zhuǎn)給城市的 DNS 服務器,然后城市的 DNS 服務器再根據(jù)不同機器的負載情況來返回一臺離得近而且負載比較小的服務器的 ip 給客戶端。

這樣客戶端就能從最近的服務器下載靜態(tài)資源,從而更快地打開網(wǎng)站。

如果訪問的資源沒有的時候,會向源站服務器發(fā)請求來拿對應的資源并且緩存下來,之后再此訪問就不用訪問源站了。

這個緩存時間是怎么指定的呢?

圖片

CDN 服務會有一個控制臺,可以設(shè)置不同資源的緩存時間,當然,請求的 header 里也有 expries 和 Cache-Control 來控制緩存時間,這倆的生效的優(yōu)先級也是可以設(shè)置的。

這樣的 CDN 服務國內(nèi)和國外是分開的,如果網(wǎng)站目標用戶只是國內(nèi)的,那只需要買下國內(nèi)的 CDN 服務,國外用戶訪問慢點就慢點,如果網(wǎng)站國外用戶也很多,那還需要買下國外的 CDN 服務。

比如某云的國內(nèi) CDN 節(jié)點分布是這樣的:

圖片

海外的話則是另一套 CDN 網(wǎng)絡:

圖片

總結(jié)

為了加快網(wǎng)站打開速度,我們會使用 CDN 服務,它并不是一個網(wǎng)絡協(xié)議,只是基于 DNS 協(xié)議實現(xiàn)的加速功能的網(wǎng)絡。

它的原理就是域名的權(quán)威 DNS 服務器把請求轉(zhuǎn)給 CND 的負載均衡的 DNS 服務器,然后根據(jù) ip返回不同城市的 DNS 服務器,再根據(jù)負載來選擇一臺就近的服務器 的 ip 返回。

這樣客戶端就能從最近的負載最小的服務器拿到資源。

CDN 的緩存設(shè)置可以根據(jù) header 來,也可以在控制臺設(shè)置一些規(guī)則,這兩者生效的優(yōu)先級也可以設(shè)置。

CDN 網(wǎng)絡的建設(shè)成本還是很大的,只有大公司會自建,一般我們都會買三方服務,而且國內(nèi)和海外的 CDN 都是分開的,如果主要服務國內(nèi)用戶,那只買國內(nèi)的 CDN 服務即可。

有了這套覆蓋全國、全球的 CDN 節(jié)點網(wǎng)絡之后,我們才能更快地打開網(wǎng)站。

責任編輯:武曉燕 來源: 神說要有光
相關(guān)推薦

2022-05-30 10:23:59

HTTPHTTP 1.1TCP

2011-01-28 08:55:44

網(wǎng)頁設(shè)計Web

2022-05-23 10:11:36

HTTP緩存

2020-02-27 21:03:30

調(diào)度器架構(gòu)效率

2024-02-26 21:15:20

Kafka緩存參數(shù)

2013-03-04 10:10:36

WebKit瀏覽器

2018-08-16 08:03:21

Python語言解釋器

2019-08-30 14:58:47

JavaScript程序員編程語言

2022-06-02 08:03:19

PyCharmPython代碼

2020-02-27 15:44:41

Nginx服務器反向代理

2017-01-23 13:08:46

大數(shù)據(jù)客戶畫像技術(shù)

2020-09-27 08:12:09

Nginx反向代理負載均衡

2024-01-10 17:04:13

通信模塊通信技術(shù)通信模組

2020-11-10 22:53:54

oracle數(shù)據(jù)庫

2012-08-17 10:01:07

云計算

2020-03-30 15:05:46

Kafka消息數(shù)據(jù)

2020-06-16 14:13:50

Kubernetes容器Linux

2014-05-26 17:00:51

2024-03-07 10:21:56

2015-05-18 15:08:08

多種程序設(shè)計語言程序設(shè)計語言
點贊
收藏

51CTO技術(shù)棧公眾號