www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 小林coding
[導(dǎo)讀]大家好,我是小林。我寫技術(shù)文章畫的圖片是保存到GitHub的,沒(méi)別的原因,就是因?yàn)槊赓M(fèi),但是GitHub訪問(wèn)的速度大家都懂的,訪問(wèn)的速度很慢。所以我會(huì)用CDN來(lái)加速圖片的訪問(wèn),也就是我的圖床的方案是GitHubjsdelivrCDN,使用很簡(jiǎn)單,只需要把域名地址替換一下就行。那為什么訪問(wèn)GitHub會(huì)很慢呢?GitHub離國(guó)內(nèi)就近的服務(wù)器是在新加波,距離我這有2600公里,也就是說(shuō),訪問(wèn)GitHub上的一張圖片,一個(gè)數(shù)據(jù)包就要走2600公里這么遠(yuǎn)!而且,互聯(lián)網(wǎng)從邏輯上看是一張大網(wǎng),但實(shí)際上是由許多小網(wǎng)絡(luò)組成的,每個(gè)網(wǎng)絡(luò)絡(luò)中還存在許多的路由器、網(wǎng)關(guān),數(shù)據(jù)每經(jīng)過(guò)一個(gè)節(jié)點(diǎn),都要處理一下,在二層、三層...

大家好,我是小林。

我寫技術(shù)文章畫的圖片是保存到 GitHub 的,沒(méi)別的原因,就是因?yàn)槊赓M(fèi),但是 GitHub 訪問(wèn)的速度大家都懂的,訪問(wèn)的速度很慢。所以我會(huì)用 CDN 來(lái)加速圖片的訪問(wèn),也就是我的圖床的方案是 GitHub jsdelivr CDN,使用很簡(jiǎn)單,只需要把域名地址替換一下就行。那為什么訪問(wèn) GitHub 會(huì)很慢呢?GitHub 離國(guó)內(nèi)就近的服務(wù)器是在新加波,距離我這有 2600 公里,也就是說(shuō),訪問(wèn) GitHub 上的一張圖片,一個(gè)數(shù)據(jù)包就要走 2600 公里這么遠(yuǎn)!而且,互聯(lián)網(wǎng)從邏輯上看是一張大網(wǎng),但實(shí)際上是由許多小網(wǎng)絡(luò)組成的,每個(gè)網(wǎng)絡(luò)絡(luò)中還存在許多的路由器、網(wǎng)關(guān),數(shù)據(jù)每經(jīng)過(guò)一個(gè)節(jié)點(diǎn),都要處理一下,在二層、三層解析轉(zhuǎn)發(fā),這也會(huì)消耗一定的時(shí)間,帶來(lái)延遲。把這些因素再放到全球來(lái)看,地理距離、運(yùn)營(yíng)商網(wǎng)絡(luò)、路由轉(zhuǎn)發(fā)的影響就會(huì)成倍增加,也就是訪問(wèn) GitHub 慢的一個(gè)原因。那我是怎么知道 GitHub 服務(wù)器在哪的呢?很簡(jiǎn)單,ping www.github.com 后,就會(huì)顯示出服務(wù)器的 ip 地址,然后把 ip 地址用百度搜索,就能查到該服務(wù)器是在哪里的了。圖片資源是靜態(tài)資源,所以要解決訪問(wèn)慢的問(wèn)題,就可以用 CDN 加速。在我加上 jsdelivr CDN 后,GitHub 的圖片就會(huì)被緩存到 CDN 服務(wù)器上,而深圳正好就有一臺(tái) jsdelivr 的 CDN 服務(wù)器。這樣我訪問(wèn) GitHub 圖片不用再大老遠(yuǎn)跑去新加波的服務(wù)器,而是遵循就近訪問(wèn)原則,直接訪問(wèn)離深圳的這臺(tái) CDN 服務(wù)器,大大加快了訪問(wèn)速度。這次,我們就來(lái)好好聊一聊 CDN。開(kāi)車?yán)玻?h3>什么是 CDN?CDN 的全稱叫 Content Delivery Network,中文名叫「內(nèi)容分發(fā)網(wǎng)絡(luò)」,它是解決由于長(zhǎng)距離而網(wǎng)絡(luò)訪問(wèn)速度慢的問(wèn)題。
怎么做到的呢?
簡(jiǎn)單來(lái)說(shuō),CDN 將內(nèi)容資源分發(fā)到位于多個(gè)地理位置機(jī)房中的服務(wù)器上,這樣我們?cè)谠L問(wèn)內(nèi)容資源的時(shí)候,不用訪問(wèn)源服務(wù)器。而是直接訪問(wèn)離我們最近的 CDN 節(jié)點(diǎn) ,這樣一來(lái)就省去了長(zhǎng)途跋涉的時(shí)間成本,從而實(shí)現(xiàn)了網(wǎng)絡(luò)加速。
CDN 能加速什么類型的內(nèi)容?
CDN 加速的是內(nèi)容資源是靜態(tài)資源。所謂的「靜態(tài)資源」是指數(shù)據(jù)內(nèi)容靜態(tài)不變,任何時(shí)候來(lái)訪問(wèn)都是一樣的,比如圖片、音頻。與之相反的「動(dòng)態(tài)資源」,是指數(shù)據(jù)內(nèi)容是動(dòng)態(tài)變化的,每次訪問(wèn)都不一樣,比如用戶信息等。不過(guò),動(dòng)態(tài)資源如果也想被緩存加速,就要使用動(dòng)態(tài) CDN,其中一種方式就是將數(shù)據(jù)的邏輯計(jì)算放在 CDN 節(jié)點(diǎn)來(lái)做,這種方式就被稱為邊緣計(jì)算。
CDN 是怎么從源服務(wù)器獲取資源的呢?
CDN 加速策略有兩種方式,分別是「推模式」和「拉模式」。大部分 CDN 加速策略采用的是「拉模式」,當(dāng)用戶就近訪問(wèn)的 CDN 節(jié)點(diǎn)沒(méi)有緩存請(qǐng)求的數(shù)據(jù)時(shí),CDN 會(huì)主動(dòng)從源服務(wù)器下載數(shù)據(jù),并更新到這個(gè) CDN 節(jié)點(diǎn)的緩存中。可以看出,拉模式屬于被動(dòng)緩存的方式,與之相反的 「推模式」就屬于主動(dòng)緩存的方式。如果想要把資源在還沒(méi)有用戶訪問(wèn)前緩存到 CDN 節(jié)點(diǎn),則可以采用「推模式」,這種方式也叫 CDN 預(yù)熱。通過(guò) CDN 服務(wù)提供的 API 接口,把需要預(yù)熱的資源地址和需要預(yù)熱的區(qū)域等信息提交上去,CDN 收到后,就會(huì)觸發(fā)這些區(qū)域的 CDN 節(jié)點(diǎn)進(jìn)行回源來(lái)實(shí)現(xiàn)資源預(yù)熱。

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

找到離用戶最近的 CDN 節(jié)點(diǎn)是由 CDN 的全局負(fù)載均衡器(Global Sever Load Balance,GSLB負(fù)責(zé)的。那 GSLB 是在什么時(shí)候起作用的呢?在回答這個(gè)問(wèn)題前,我們先來(lái)看看在沒(méi)有 CDN 的情況下,訪問(wèn)域名時(shí)發(fā)生的事情。在沒(méi)有 CDN 的情況下,當(dāng)我們?cè)L問(wèn)域名時(shí),DNS 服務(wù)器最終會(huì)返回源服務(wù)器的地址。比如,當(dāng)我們?cè)跒g覽器輸入 www.xiaolin.com 域名后,在本地 host 文件找不到域名時(shí),客戶端就會(huì)訪問(wèn)本地 DNS 服務(wù)器。這時(shí)候:
  • 如果本地 DNS 服務(wù)器有緩存該網(wǎng)站的地址,則直接返回網(wǎng)站的地址;

  • 如果沒(méi)有就通過(guò)遞歸查詢的方式,先請(qǐng)求根 DNS,根 DNS 返回頂級(jí) DNS(.com)的地址;再請(qǐng)求 .com 頂級(jí) DNS 得到 xiaolin.com 的域名服務(wù)器地址,再?gòu)?xiaolin.com 的域名服務(wù)器中查詢到 www.xiaolin.com 對(duì)應(yīng)的 IP 地址,然后返回這個(gè) IP 地址,同時(shí)本地 DNS 緩存該 IP 地址,這樣下一次的解析同一個(gè)域名就不需要做 DNS 的迭代查詢了。

但加入 CDN 后就不一樣了。會(huì)在 xiaolin.com 這個(gè) DNS 服務(wù)器上,設(shè)置一個(gè) CNAME 別名,指向另外一個(gè)域名 www.xiaolin.cdn.com,返回給本地 DNS 服務(wù)器。接著繼續(xù)解析該域名,這個(gè)時(shí)候訪問(wèn)的就是 xiaolin.cdn.com 這臺(tái) CDN 專用的 DNS 服務(wù)器,在這個(gè)服務(wù)器上,又會(huì)設(shè)置一個(gè) CNAME,指向另外一個(gè)域名,這次指向的就是 CDN 的 GSLB。接著,本地 DNS 服務(wù)器去請(qǐng)求 CDN 的 GSLB 的域名,GSLB 就會(huì)為用戶選擇一臺(tái)合適的 CDN 節(jié)點(diǎn)提供服務(wù),選擇的依據(jù)主要有以下幾點(diǎn):
  • 看用戶的 IP 地址,查表得知地理位置,找相對(duì)最近的 CDN 節(jié)點(diǎn);

  • 看用戶所在的運(yùn)營(yíng)商網(wǎng)絡(luò),找相同網(wǎng)絡(luò)的 CDN 節(jié)點(diǎn);

  • 看用戶請(qǐng)求 URL,判斷哪一臺(tái)服務(wù)器上有用戶所請(qǐng)求的資源;

  • 查詢 CDN 節(jié)點(diǎn)的負(fù)載情況,找負(fù)載較輕的節(jié)點(diǎn);

GSLB 會(huì)基于以上的條件進(jìn)行綜合分析后,找出一臺(tái)最合適的 CDN 節(jié)點(diǎn),并返回該 CDN 節(jié)點(diǎn)的 IP 地址給本地 DNS 服務(wù)器,然后本地 DNS 服務(wù)器緩存該 IP 地址,并將 IP 返回給客戶端,客戶端去訪問(wèn)這個(gè) CDN 節(jié)點(diǎn),下載資源。這次就說(shuō)到這啦,我們下次見(jiàn)!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉