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

作為一名程序員,你真正了解CDN技術(shù)嗎?

開發(fā) 項(xiàng)目管理
將時(shí)光倒回到幾年前,在那時(shí)候我的老家縣城里,如果你從京東APP上購(gòu)物下單,起碼需要等上個(gè)幾天時(shí)間,才能將商品送到你的手中。

 

[[282634]]

本文導(dǎo)讀:

  • 物流倉(cāng)庫(kù)配送如何加速
  • 靜態(tài)資源文件部署方式
  • 靜態(tài)資源加速之CDN技術(shù)
  • 解析過程中的名詞解釋
  • 最后的總結(jié)

1、物流倉(cāng)庫(kù)配送如何加速

我們還是從生活中購(gòu)物的例子來展開。

將時(shí)光倒回到幾年前,在那時(shí)候我的老家縣城里,如果你從京東APP上購(gòu)物下單,起碼需要等上個(gè)幾天時(shí)間,才能將商品送到你的手中。

因?yàn)樗麄兊奈锪鱾}(cāng)庫(kù)中心當(dāng)時(shí)并沒有在縣城里來建設(shè),所以一般可能從地市或者省會(huì)(看做區(qū)域倉(cāng)庫(kù))物流倉(cāng)庫(kù)去查找是否有庫(kù)存,如果區(qū)域物流倉(cāng)庫(kù)還是沒有庫(kù)存,則可能會(huì)從北京物流倉(cāng)庫(kù)(看做中心倉(cāng)庫(kù))發(fā)貨,一旦中心倉(cāng)庫(kù)也無貨,那就只能從廠商進(jìn)貨了(看做源站)。

但是,現(xiàn)在不一樣了,不管你是身在一線城市還是在老家,從京東網(wǎng)站上購(gòu)物(默認(rèn)以自營(yíng)商品為主)下單,基本隔天就能收到貨了,快遞小哥送貨效率都是一樣的。

這就是京東強(qiáng)大的物流優(yōu)勢(shì),將物流倉(cāng)庫(kù)擴(kuò)建到離老百姓最近的地方,使得用戶購(gòu)物體驗(yàn)得到了非常大的提升。

通過這個(gè)案例,我們就理解了商品送貨的加速過程。

商品有普通商品,大件商品等,這些商品最開始都是備貨到中心物流倉(cāng)庫(kù),中心物流倉(cāng)庫(kù)可以認(rèn)為是幾乎是最全的商品倉(cāng)庫(kù)中心。

當(dāng)區(qū)域物流倉(cāng)庫(kù)建設(shè)好之后,就可以將這些商品提前備貨到區(qū)域倉(cāng)庫(kù),進(jìn)一步提高商品送達(dá)時(shí)間。

當(dāng)倉(cāng)庫(kù)在縣城里建設(shè)后,就可以將這些商品提前備貨到縣城倉(cāng)庫(kù),只要倉(cāng)庫(kù)離你越來越近,你下單后不需要費(fèi)那么大的周折,從區(qū)域或中心倉(cāng)庫(kù)發(fā)貨了,甚至你都可以去當(dāng)?shù)貍}(cāng)庫(kù)某個(gè)點(diǎn)上門自提了。

如下圖所示:

 

作為一名程序員,你真正了解CDN技術(shù)嗎?

 

縣城倉(cāng)庫(kù)就是離用戶最近的倉(cāng)庫(kù),也就是在用戶與中心倉(cāng)庫(kù)之間通過增加多級(jí)中間倉(cāng)庫(kù),就近發(fā)貨,加快送貨速度,提升了用戶體驗(yàn)。

2、靜態(tài)資源文件部署方式

那么,如果在網(wǎng)絡(luò)上,當(dāng)你訪問一個(gè)購(gòu)物商城時(shí),點(diǎn)擊進(jìn)入商品詳情頁(yè),可以看到會(huì)有大量圖片以及廣告視頻,這些都屬于靜態(tài)資源,那么這些靜態(tài)資源用戶是如何訪問到的?

最開始,我們考慮部署個(gè) Nginx 集群,每臺(tái)機(jī)器上都會(huì)存儲(chǔ)這些靜態(tài)資源,可以通過某個(gè)服務(wù)將文件上傳到其中一臺(tái)機(jī)器,然后 rsync 方式分發(fā)到其他 Nginx 機(jī)器上。對(duì)于小的靜態(tài)資源文件這么做沒有問題。

但是,對(duì)于圖片、視頻這些資源可能從幾M到幾百M(fèi)不等,是不建議放到 Nginx 集群上的,而且也不建議使用分布式緩存,分布式緩存本身也不建議存儲(chǔ)過大的Key。假設(shè)你的確這么做了,把 Nginx 集群或者分布式緩存都部署在北京機(jī)房,當(dāng)用戶訪問這些資源時(shí),由于要經(jīng)過多個(gè)骨干網(wǎng)絡(luò)上的傳輸,會(huì)導(dǎo)致網(wǎng)絡(luò)延遲高,給你在視覺上感覺就是圖片無法加載,視頻播放卡頓的現(xiàn)象。

此時(shí),我想你也不會(huì)有興趣在繼續(xù)等下去了,對(duì)于電商網(wǎng)站來說用戶就此流失了。

通常,我們可以將小的靜態(tài)資源文件使用 Nginx 集群當(dāng)做源站,而對(duì)于流媒體音視頻數(shù)據(jù),會(huì)使用單獨(dú)的分布式存儲(chǔ)作為源站。所謂源站,即你的靜態(tài)數(shù)據(jù)原始存儲(chǔ)的地方。為了達(dá)到高可用的、高穩(wěn)定性的目的,結(jié)合企業(yè)成本考量,一般要部署成 BGP 多線機(jī)房。

BGP 機(jī)房示意圖如下所示:

 

作為一名程序員,你真正了解CDN技術(shù)嗎?

 

所謂的 BGP,它可以實(shí)現(xiàn)讓網(wǎng)站在各運(yùn)營(yíng)商線路之間實(shí)現(xiàn)互聯(lián)互通,做到所有互聯(lián)運(yùn)營(yíng)商的用戶訪問網(wǎng)站都很快,結(jié)合用戶網(wǎng)絡(luò)選擇最優(yōu)質(zhì)的網(wǎng)絡(luò)鏈路。因此,BGP 機(jī)房帶寬的成本更高。

BGP 機(jī)房帶寬成本一般在80~400元/M,所以假設(shè)每 1M 流量按照 100元算,那么 1G 流量就是 10 萬塊的,如果是幾十或者上百 G流量,這個(gè)成本可想而知了。

3、靜態(tài)資源加速之 CDN 技術(shù)

在上面的案例中,我們知道了用戶訪問靜態(tài)資源,會(huì)直接訪問 BGP 源站,帶寬成本是很昂貴的。一個(gè)網(wǎng)站用戶會(huì)分布在全國(guó)各地,甚至是分布在全球,如何讓用戶更快的訪問這些靜態(tài)資源呢?

我們也可以借鑒物流倉(cāng)庫(kù)的例子來理解,跟物流倉(cāng)庫(kù)類似,當(dāng)然是這些靜態(tài)資源離用戶越近,訪問就越快了。由此,CDN 技術(shù)應(yīng)運(yùn)而生了。

什么是 CDN 技術(shù)?

CDN 的全稱是 (Content Delivery Network/Content Distribution Network),即內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN解決的問題是在網(wǎng)絡(luò)中增加一層CACHE(緩存)層,將源站的資源分發(fā)到距離用戶最近的網(wǎng)絡(luò)"邊緣"節(jié)點(diǎn)上,使用戶就近訪問內(nèi)容,提高網(wǎng)站響應(yīng)速度,避免網(wǎng)絡(luò)擁塞,保證了用戶訪問資源的速度和體驗(yàn)。

增加 CDN 節(jié)點(diǎn)后,如下圖所示:

 

作為一名程序員,你真正了解CDN技術(shù)嗎?

 

CDN 的分發(fā)架構(gòu):

跟物流倉(cāng)庫(kù)做個(gè)類比:中心倉(cāng)庫(kù)物流就是相當(dāng)于 CDN 中心節(jié)點(diǎn),區(qū)域物流倉(cāng)庫(kù)相當(dāng)于 CDN 區(qū)域節(jié)點(diǎn),縣城物流倉(cāng)庫(kù)中心就相當(dāng)于 CDN 邊緣節(jié)點(diǎn)。

CDN 分發(fā)架構(gòu)示意圖:

 

作為一名程序員,你真正了解CDN技術(shù)嗎?

 

當(dāng)前 CDN 技術(shù)應(yīng)用是非常普遍的,有實(shí)力的公司,也會(huì)自建 CDN,而且有自己的CDN研發(fā)團(tuán)隊(duì)支撐,提供了更加穩(wěn)定可靠的 CDN 服務(wù)。但是大多數(shù)公司,還是會(huì)選擇專業(yè)的 CDN 廠商,如果你的服務(wù)部署在云上,可以選擇阿里云、騰訊云提供的 CDN 服務(wù)。此外,還可以選擇老牌的 CDN 廠商,如網(wǎng)宿和藍(lán)汛。

CDN 工作原理

那么用戶是如何訪問到離他最近的 CDN 節(jié)點(diǎn)的呢?

我們還是用一張圖來整體理解下,更加直觀:

 

作為一名程序員,你真正了解CDN技術(shù)嗎?

 

上述這張圖解決了兩個(gè)問題:

訪問域名如何映射到 CDN 地址的

如何找到離用戶最近的 CDN 節(jié)點(diǎn)

接下來,我們根據(jù)上面兩個(gè)問題,結(jié)合圖示來詳解下這個(gè)流程。

1. 訪問域名如何映射到CDN地址

當(dāng)你通過瀏覽器訪問 static.example.com 域名時(shí),假設(shè)這就是個(gè)靜態(tài)域名,并且做了 CDN 靜態(tài)資源加速。

1)首先會(huì)經(jīng)過本地 DNS 解析器,查看下本機(jī) /etc/hosts 文件是否存在域名對(duì)應(yīng)的IP,如果找到,直接使用該 IP 發(fā)起請(qǐng)求。否則,執(zhí)行步驟2)。

2)由于本地 DNS 服務(wù)器解析,如果在本地 DNS 緩存中找到域名對(duì)一個(gè)IP,則直接用該 IP 訪問。否則,繼續(xù)步驟3)。

3)本地 DNS 服務(wù)器會(huì)向根域名服務(wù)器發(fā)起請(qǐng)求,根域名服務(wù)器返回頂級(jí) DNS 域名服務(wù)器地址,讓你去它那里查找。

4)本地 DNS 服務(wù)器會(huì)向頂級(jí) DNS 域名服務(wù)器發(fā)起請(qǐng)求,.com 頂級(jí)域名服務(wù)器返回權(quán)威 DNS 域名服務(wù)器地址,讓你去它那里查找。

5)本地 DNS 服務(wù)器繼續(xù)向 example.com 權(quán)威 DNS 域名服務(wù)器發(fā)起請(qǐng)求,權(quán)威 DNS 域名服務(wù)器一看這個(gè)域名我能解析,發(fā)現(xiàn)是有做過CDN加速域名配置,它會(huì) CNAME 到 static.xxx.example.cdn.com 域名。

到此,其實(shí)我們通過訪問靜態(tài)域名 static.example.com 經(jīng)過一番波折,終于找到了 CDN 域名地址。

如果你不需要找離用戶最近的節(jié)點(diǎn),通過 static.xxx.example.cdn.com 域名就可以找到正確的 IP 地址了。

2. 如何找到離用戶最近的 CDN 節(jié)點(diǎn)

結(jié)合上圖,繼續(xù)解析如果找到距離用戶最近的 CDN 節(jié)點(diǎn)。

1)本地 DNS 服務(wù)器會(huì)將 static.xxx.example.cdn.com 會(huì)向第一層 GSLB 全局負(fù)載均衡發(fā)起請(qǐng)求,第一層全局負(fù)載均衡會(huì)根據(jù)用戶所在運(yùn)營(yíng)商網(wǎng)絡(luò)分析,比如移動(dòng)運(yùn)營(yíng)商,返回 CNAME 到如 static.yd.example.cdn.com 域名地址。

2)本地 DNS 服務(wù)器會(huì)繼續(xù)向第二層 GSLB 全局負(fù)載均衡發(fā)起請(qǐng)求,第二層全局負(fù)載均衡依據(jù) DNS 地理位置判斷,返回 SLB CDN 負(fù)載均衡地址。

3)本地 DNS 服務(wù)器從返回的多個(gè) CDN 節(jié)點(diǎn) IP 中,可以通過本地簡(jiǎn)單輪詢的方式去選擇一個(gè) CDN IP 訪問。

此時(shí),最終通過 GSLB 全局負(fù)載均衡找到的這些 CDN 節(jié)點(diǎn),就是離用戶最近的 CDN 節(jié)點(diǎn)了。

3.什么是 GSLB?

GSLB(Global Server Load Balance),即全局負(fù)載均衡,它的含義是對(duì)于部署在不同地域的服務(wù)器之間做負(fù)載均衡。一方面可以讓流量均衡負(fù)載到它下面的服務(wù)器上,另一方面能根據(jù)地理位置判斷,找到離用戶最近的服務(wù)器。

找到了離用戶最近的 CDN 節(jié)點(diǎn),并不一定能直接從該 CDN 節(jié)點(diǎn)上獲取對(duì)應(yīng)的資源,如果資源不存在,會(huì)繼續(xù)從上級(jí)區(qū)域或中心 CDN 節(jié)點(diǎn)查找,如果都不存在,最終就會(huì)回源到源站獲取資源,然后設(shè)置 CDN 緩存失效時(shí)間。

一般對(duì)于一些小的靜態(tài)資源文件,存儲(chǔ)在源站,由 CDN 節(jié)點(diǎn)主動(dòng)拉取方式來訪問的。

對(duì)于大的音視頻流媒體文件,可以通過 CDN 廠商提供的接口提前將資源寫入到 CDN 某一個(gè)節(jié)點(diǎn)上,再由 CDN 內(nèi)部機(jī)制將資源分發(fā)到其他 CDN 節(jié)點(diǎn)上。

但是,即使主動(dòng)同步資源,也是存在延時(shí)的,最終可能會(huì)導(dǎo)致回源,而回源帶寬成本又是很大的。所以,我們?cè)谑褂?CDN 的時(shí)候就有必要關(guān)注 CDN 命中率和源站帶寬情況。

4、解析過程中的名詞解釋

CNAME( Canonical Name ):

它可以將一個(gè)域名解析到另外一個(gè)域名。

舉個(gè)例子:

當(dāng)你使用 docs.example.com 去訪問一些資源時(shí),希望通過 docs-xyz.example.com 也能訪問相同的這些資源,你可以在 DNS 解析服務(wù)商添加一條 CNAME 記錄,將 docs-xyz.example.com 指向 docs.example.com,添加后,所有訪問 docs-xyz.example.com 的請(qǐng)求都會(huì)被轉(zhuǎn)發(fā)到 docs.example.com 域名。

CNAME 域名:

接入 CDN 時(shí),在 CDN 廠商控制臺(tái)添加完加速域名后,會(huì)得到一個(gè) CDN 給你分配的 CNAME 域名, 需要在你的 DNS 解析服務(wù)商添加 CNAME 記錄,將自己的加速域名指向這個(gè) CNAME域名,這樣該域名所有的請(qǐng)求才會(huì)都將轉(zhuǎn)向 CDN 的節(jié)點(diǎn),達(dá)到加速效果。

DNS (Domain Name System):

域名解析服務(wù)。

將域名解析為網(wǎng)絡(luò)上可識(shí)別的IP地址。服務(wù)器之間認(rèn)識(shí)的都是IP,但用戶習(xí)慣記憶的都是域名,所以域名與IP地址之間關(guān)系是一對(duì)一的。它們之間的轉(zhuǎn)換工作,就稱為域名解析,由專門的解析器來完成域名解析,可參見上述圖中的 DNS 解析過程。

5、最后的總結(jié)

大家可能覺得作為一名工程師,離上述提到的 CDN 技術(shù)很遙遠(yuǎn),忽略 CDN 技術(shù)的重要性,好像都是運(yùn)維干的事情,與我何干。這個(gè)想法是錯(cuò)誤的,咱們的思維不能太過于局限,如果你做一些直播、視頻相關(guān)技術(shù),多多少少肯定能接觸到這塊的技術(shù)。

你有沒有考慮過抖音、快手上的短視頻的整個(gè)流程,A城市用戶上傳視頻后,經(jīng)過轉(zhuǎn)碼分發(fā)后,B城市用戶很快就能看到了,視頻播放也是非常流暢,這其中也是得益于 CDN 分發(fā)技術(shù)的應(yīng)用。

本文通過引入物流倉(cāng)庫(kù)的例子與 CDN 技術(shù)做個(gè)類比,對(duì)于 CDN 分發(fā)架構(gòu)有了感官認(rèn)識(shí)。

同時(shí)對(duì) CDN 解析工作原理做了進(jìn)一步剖析,大家通過 CDN 工作原理分析的那張圖好好理解一下,里面包含了 DNS 解析的詳細(xì)過程,DNS GSLB 是如何查找離用戶最近節(jié)點(diǎn)的。

CDN 是各大系統(tǒng)的門面,更擅長(zhǎng)緩存靜態(tài)數(shù)據(jù)、圖片、流媒體數(shù)據(jù)。CDN 作為一種特殊的緩存,它的命中率和高可用性也是我們需要重點(diǎn)關(guān)注的。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-12-05 18:22:12

Go程序員Zig

2013-02-22 10:21:06

2011-11-09 13:52:04

程序員

2009-11-04 11:54:33

程序員職業(yè)水準(zhǔn)

2019-01-28 11:54:28

程序員技能溝通

2015-05-15 10:39:44

Java 冠軍程序員?

2011-04-11 17:41:35

C++程序員

2014-12-26 10:13:41

程序員

2010-12-20 09:26:44

SQL索引

2015-07-28 10:39:34

程序員知識(shí)

2017-09-21 09:44:00

編程程序員軟件開發(fā)

2021-06-30 10:48:30

VueReact前端

2011-05-03 08:54:36

2012-12-12 09:52:18

程序員

2021-02-21 13:49:48

Java程序員開發(fā)

2018-02-02 16:41:01

程序員編程Web

2010-10-28 13:21:47

2014-10-10 13:57:17

程序員

2019-11-20 10:12:32

程序員 東漢崗位

2022-09-30 10:32:59

API文檔
點(diǎn)贊
收藏

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