自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你知道 DNS,那我猜你一定不知道 HTTPDNS

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
DNS 解析有很多問題,那怎么辦呢?再回到最初的起點:直接 IP 地址?顯然不合適啊。這就引出了 HTTPDNS 。

說起 DNS 協(xié)議,相信大家都能說出來幾句,不是很陌生。

它主要做兩個功能:根據(jù)名稱查到具體的地址;針對多個地址做負(fù)載均衡,而且可以在多個地址中選擇一個距離我最近的地方,讓我訪問。

看起來這種方式無懈可擊,但其實也有些問題。

[[323995]]

傳統(tǒng) DNS 存在的問題

1. 域名緩存問題

客戶端想要訪問一個網(wǎng)址的時候,其實它首先是去看本地的緩存里面有沒有這個地址,如果有就直接訪問,如果沒有才會去詢問上級領(lǐng)導(dǎo)。

但是這個時候就會有個問題:比如在阿粉上高中的時候,我知道學(xué)校旁邊有個超好吃的店,后來阿粉再想吃的時候,想都沒想,直接去了那家店,結(jié)果發(fā)現(xiàn)人家關(guān)門了,當(dāng)時阿粉的心情是非常失望。

[[323996]]

同樣,本地緩存也會出現(xiàn)這個問題,有的時候那個地址已經(jīng)換掉了,但是因為本地緩存中有原來的地址,所以不會向上一級詢問,將你導(dǎo)向原來的地址,結(jié)果就是訪問不到界面,由此帶來的用戶體驗不是很好。

還有個問題:假設(shè)我在北京海淀區(qū),淘寶的應(yīng)用因為某種原因沒有在海淀區(qū)設(shè)置數(shù)據(jù)中心,然后我訪問的時候,一直都是將我的訪問請求發(fā)送到朝陽區(qū)。后來呢,淘寶在海淀區(qū)增加了數(shù)據(jù)中心,但是當(dāng)我訪問的時候,本地緩存依舊會將我的請求,導(dǎo)向到朝陽區(qū)那邊,這樣造成的結(jié)果就是:

  • 對于客戶來說,讓他繞遠(yuǎn)路了。明明一個區(qū)域就可以解決的事情,偏偏要跨區(qū)域。就像明明在這里可以買到東西,偏偏讓你跑到另外的地方去買,你開心嘛?
  • 對于商家來說,也就是淘寶,我設(shè)置了新的數(shù)據(jù)中心,結(jié)果呢,客戶的請求沒能到這里,那我還費錢費力的去做這件事干嘛?又沒有提高用戶的體驗,對不對。

2. 出口 NAT 問題

在網(wǎng)關(guān)那里,很多機房都會在出口配置 NAT ( Network Address Translation ),即:網(wǎng)絡(luò)地址轉(zhuǎn)換。

也就是說,從這個網(wǎng)關(guān)出去的包,都會換成新的 IP 地址,當(dāng)請求返回的時候,在網(wǎng)關(guān)這里,再將 IP 地址轉(zhuǎn)換回去,這樣造成的結(jié)果就是,權(quán)威的 DNS 服務(wù)器,沒辦法通過這個地址,來判斷用戶到底是來自哪個運營商,而且極有可能因為誤判運營商,導(dǎo)致跨運營商訪問,從而導(dǎo)致網(wǎng)速極慢。

3. 解析延遲問題

DNS 的查詢過程,需要遞歸遍歷多個 DNS 服務(wù)器,才能得到最終的解析結(jié)果,這會帶來一定的時延,甚至是解析超時。

HTTPDNS 的工作模式

DNS 解析有很多問題,那怎么辦呢?再回到最初的起點:直接 IP 地址?顯然不合適啊。

這就引出了 HTTPDNS 。說白了就是,它不走傳統(tǒng)的 DNS 解析,而是走自己搭建基于 HTTP 協(xié)議的 DNS 服務(wù)器集群。這些集群分布在多個地點,當(dāng)客戶端需要 DNS 解析的時候,直接通過 HTTP 協(xié)議進行請求這個服務(wù)器集群,就可以得到最近的地址。這樣做就相當(dāng)于每個客戶端都是基于 HTTP 協(xié)議的,自己實現(xiàn)自己的域名解析,自己做一個自己專屬的地址簿,而不是使用統(tǒng)一的地址簿。

但是默認(rèn)的域名解析都是走 DNS ,所以如果想要使用 HTTPDNS 的話,就需要繞過默認(rèn)的 DNS 路徑,這樣就不能使用默認(rèn)的客戶端。

使用 HTTPDNS 的,一般都是手機應(yīng)用,所以只需要在手機端嵌入支持 HTTPDNS 的客戶端 SDK 就 OK 了。這樣就可以通過自己的 HTTPDNS 服務(wù)器和相關(guān)的 SDK ,實現(xiàn)了從依賴別人,到自己上網(wǎng)查詢,自己想去哪兒去哪兒,想干什么干什么,豈不是快哉~

[[323997]]

HTTPDNS 工作模式具體可以描述如下:當(dāng)手機要訪問一個地址的時候,我會先看本地緩存里面有沒有,如果有就直接訪問,這個緩存是手機應(yīng)用自己做的,至于如何更新,何時更新,那是手機應(yīng)用的客戶端的事情;如果沒有的話呢,就需要請求 HTTPDNS 服務(wù)器,在本地 HTTPDNS 服務(wù)器的 IP 列表中,選擇一個發(fā)出 HTTP 的請求,會返回一個要訪問的網(wǎng)站的 IP 列表。因為是直接的 HTTP 通信,所以 HTTPDNS 服務(wù)器能夠準(zhǔn)確知道這些信息,所以可以做到精準(zhǔn)的全局負(fù)載均衡。

寫到這里,這篇文章想要表達的是兩點:

  • 傳統(tǒng)的 DNS 有很多問題:比如域名緩存問題,出口 NAT 問題,解析延遲問題
  • 為了解決上述問題, HTTPDNS 通過客戶端 SDK 和服務(wù)端,通過 HTTP 的形式,直接調(diào)用解析 DNS 的方式,繞過了傳統(tǒng)的 DNS 的這些缺點,從而實現(xiàn)了智能的調(diào)度。

 

 

責(zé)任編輯:趙寧寧 來源: Java極客技術(shù)
相關(guān)推薦

2020-07-29 07:37:20

Git 修復(fù)項目

2015-10-21 11:09:08

Xcode7調(diào)試神技

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2019-07-23 15:56:56

Spring Boot部署servlet

2019-07-23 17:52:59

Spring BootJava開發(fā)

2011-09-15 17:10:41

2022-10-13 11:48:37

Web共享機制操作系統(tǒng)

2009-12-10 09:37:43

2021-02-01 23:23:39

FiddlerCharlesWeb

2010-08-23 09:56:09

Java性能監(jiān)控

2025-03-17 00:45:00

JavaScriptAPI頁面

2024-10-21 17:46:54

前端開發(fā)

2020-09-15 08:35:57

TypeScript JavaScript類型

2022-11-04 08:19:18

gRPC框架項目

2021-12-29 11:38:59

JS前端沙箱

2021-12-22 09:08:39

JSON.stringJavaScript字符串

2012-11-23 10:57:44

Shell

2015-06-19 13:54:49

2020-08-11 11:20:49

Linux命令使用技巧
點贊
收藏

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