国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識(shí) > 得物技術(shù)淺談網(wǎng)絡(luò)優(yōu)化——域名解析原理&實(shí)踐

得物技術(shù)淺談網(wǎng)絡(luò)優(yōu)化——域名解析原理&實(shí)踐

時(shí)間:2023-02-22 02:48:02 | 來源:建站知識(shí)

時(shí)間:2023-02-22 02:48:02 來源:建站知識(shí)

得物技術(shù)淺談網(wǎng)絡(luò)優(yōu)化——域名解析原理&實(shí)踐:
域名劫持,解析失敗,調(diào)度不精準(zhǔn),沒有異地容災(zāi),域名解析變更生效不實(shí)時(shí),這些問題是否一直困擾著你?作為網(wǎng)絡(luò)請(qǐng)求最前置的環(huán)節(jié),域名解析的穩(wěn)定與精準(zhǔn)程度直接決定了 App 的訪問體驗(yàn)效果。跟隨本文來一起了解域名解析,探索移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下域名解析的最佳實(shí)踐方案。


域名(英語:Domain Name),又稱網(wǎng)域,是由一串用點(diǎn)分隔的名字組成的 Internet 上某一臺(tái)計(jì)算機(jī)或計(jì)算機(jī)組的名稱,用于在數(shù)據(jù)傳輸時(shí)對(duì)計(jì)算機(jī)的定位標(biāo)識(shí)(有時(shí)也指地理位置)。

由于 IP 地址具有不方便記憶并且不能顯示地址組織的名稱和性質(zhì)等缺點(diǎn),人們?cè)O(shè)計(jì)出了域名,并通過網(wǎng)域名稱系統(tǒng)(DNS,Domain Name System)來將域名和 IP 地址相互映射,使人更方便地訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的 IP 地址數(shù)串?!?來源自百度百科“域名”詞條

作為一次網(wǎng)絡(luò)通信最前置的環(huán)節(jié),域名解析的重要性不言而喻。在傳統(tǒng)的基于瀏覽器的網(wǎng)站訪問場(chǎng)景下,域名解析環(huán)節(jié)由瀏覽器內(nèi)核實(shí)現(xiàn),網(wǎng)站開發(fā)者無需關(guān)心域名解析的細(xì)節(jié)。But there are always two sides to every coin,一旦域名解析環(huán)節(jié)發(fā)生異常,開發(fā)者面對(duì)這樣的黑盒架構(gòu)就會(huì)顯得束手無策,一個(gè)很典型的例子即域名劫持問題,關(guān)于這一點(diǎn)我們?cè)诤笪臅?huì)有更詳細(xì)的介紹。

傳統(tǒng)域名解析流程

我們來看一看一次傳統(tǒng)的域名解析流程具體是如何發(fā)生的:

如上圖所示,以訪問 http://www.taobao.com 為例,一次完整的域名解析流程包括:

  1. 客戶端向 Local DNS 發(fā)起域名解析請(qǐng)求;
  2. Local DNS 在獲取到域名解析請(qǐng)求后首先從 Root hints 獲取根域名服務(wù)器的地址;
  3. 獲取了根域名服務(wù)器地址后,Local DNS 向根域名服務(wù)器發(fā)起 DNS 解析請(qǐng)求,根域名服務(wù)器返回com 頂級(jí)域名服務(wù)器地址;
  4. 隨后 Local DNS 向 com 域名服務(wù)器發(fā)起解析請(qǐng)求,并得到 http://taobao.com 二級(jí)域名服務(wù)器的地址;
  5. Local DNS向 http://taobao.com 二級(jí)域名服務(wù)器發(fā)起解析請(qǐng)求,并最終獲得了 http://www.taobao.com 的 IP 地址信息;
  6. Local DNS將遞歸查詢獲得的IP地址信息緩存并返回給客戶端;


注意:Local DNS 服務(wù)器包含緩存模塊,在實(shí)際域名解析過程中 Local DNS 服務(wù)器會(huì)首先查詢緩存,緩存命中且解析結(jié)果 TTL 未過期的情況下直接返回,否則才啟動(dòng)遞歸查詢的流程。

傳統(tǒng)的域名解析面臨的問題

域名劫持

域名劫持一直是困擾許多開發(fā)者的問題之一,其表現(xiàn)即域名 A 應(yīng)該返回的 DNS 解析結(jié)果 IP1 被惡意替換為了 IP2,導(dǎo)致 A 訪問失敗或訪問了一個(gè)不安全的站點(diǎn)。下面我們是幾種常見的域名劫持的場(chǎng)景。

一種可能的域名劫持方式即黑客侵入了寬帶路由器并對(duì)終端用戶的 Local DNS 進(jìn)行篡改,指向黑客自己偽造的 Local DNS,進(jìn)而通過控制 Local DNS 的邏輯返回錯(cuò)誤的 IP 信息進(jìn)行域名劫持。

另一種我們最常碰到的域名劫持現(xiàn)象是緩存污染。我們知道在接收到域名解析請(qǐng)求時(shí),Local DNS 首先會(huì)查找緩存,如果緩存命中就會(huì)直接返回緩存結(jié)果,不再進(jìn)行遞歸 DNS 查詢。這時(shí)候如果 Local DNS 針對(duì)部分域名的緩存進(jìn)行更改,比如將緩存結(jié)果指向第三方的廣告頁,就會(huì)導(dǎo)致用戶的訪問請(qǐng)求被引導(dǎo)到這些廣告頁地址上。

解析生效滯后

部分業(yè)務(wù)場(chǎng)景下開發(fā)者對(duì)域名解析結(jié)果變更的生效時(shí)間非常敏感(這部分變更操作是開發(fā)者在權(quán)威 DNS上完成的),比如當(dāng)業(yè)務(wù)服務(wù)器受到攻擊時(shí),我們需要最快速地將業(yè)務(wù) IP 切換到另一組集群上,這樣的訴求在傳統(tǒng)域名解析體系下是無法完成的。

Local DNS 的部署是由各個(gè)地區(qū)的各個(gè)運(yùn)營商獨(dú)立部署的,因此各個(gè) Local DNS 的服務(wù)質(zhì)量參差不齊。在對(duì)域名解析緩存的處理上,各個(gè)獨(dú)立節(jié)點(diǎn)的實(shí)現(xiàn)策略也有區(qū)別,比如部分節(jié)點(diǎn)為了節(jié)省開支忽略了域名解析結(jié)果的 TTL 時(shí)間限制,導(dǎo)致用戶在權(quán)威 DNS 變更的解析結(jié)果全網(wǎng)生效的周期非常漫長(zhǎng)(我們已知的最長(zhǎng)生效時(shí)間甚至高達(dá) 48 小時(shí))。這類延遲生效可能直接導(dǎo)致用戶業(yè)務(wù)訪問的異常。

延遲大

DNS 首次查詢或緩存過期后的查詢,需要遞歸遍歷多個(gè) DNS 服務(wù)器以獲取最終的解析結(jié)果,這增加了網(wǎng)絡(luò)請(qǐng)求的前置延時(shí)時(shí)間。特別是在移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下,移動(dòng)網(wǎng)絡(luò)質(zhì)量參差不齊,弱網(wǎng)環(huán)境的 RTT 時(shí)間可能高達(dá)數(shù)百毫秒,對(duì)于一次普通的業(yè)務(wù)請(qǐng)求而言,上述延時(shí)是非常沉重的負(fù)擔(dān)。另一方面,弱網(wǎng)環(huán)境下的解析超時(shí)、解析失敗等現(xiàn)象屢見不鮮,如何合理優(yōu)化 DNS 解析對(duì)于整體網(wǎng)絡(luò)訪問質(zhì)量的提升至關(guān)重要。

HTTPDNS

傳統(tǒng)域名解析面臨的諸多問題與挑戰(zhàn)本質(zhì)根源在于 Local DNS 的服務(wù)質(zhì)量不可控,如果有一個(gè)更安全、穩(wěn)定、高效的遞歸 DNS 服務(wù)幫助我們代理了域名解析的過程,這些問題就可以徹底地得到解決。

HTTPDNS 在這樣的背景下應(yīng)運(yùn)而生。我們一起來看看 HTTPDNS 的基本概念以及它是如何解決傳統(tǒng) DNS 解析面臨的問題的。

防域名劫持

HTTPDNS 使用 HTTP 協(xié)議進(jìn)行域名解析,代替現(xiàn)有基于 UDP 的 DNS 協(xié)議,域名解析請(qǐng)求直接發(fā)送到 HTTPDNS 服務(wù)端,從而繞過運(yùn)營商的 Local DNS。

HTTPDNS 代替了傳統(tǒng)的 LocalDNS 完成遞歸解析的功能,基于 HTTP 協(xié)議的設(shè)計(jì)可以適用于幾乎所有的網(wǎng)絡(luò)環(huán)境,同時(shí)保留了鑒權(quán)、HTTPS 等更高安全性的擴(kuò)展能力,避免惡意攻擊劫持行為。另一方面,商業(yè)化的 HTTPDNS 服務(wù)(比如阿里云 HTTPDNS、騰訊云 HTTPDNS)緩存管理有嚴(yán)格的 SLA 保障,避免了類似 Local DNS 的緩存污染的問題。

實(shí)時(shí)生效

在域名解析生效周期方面,HTTPDNS 也有著傳統(tǒng)域名解析體系所無法具備的能力。前面我們提到由于各個(gè)地區(qū)的 Local DNS 是獨(dú)立維護(hù)的,服務(wù)質(zhì)量參差不齊,緩存實(shí)現(xiàn)不一,因此導(dǎo)致的解析變更全網(wǎng)生效滯后的問題,在商業(yè)化的 HTTPDNS 服務(wù)上就不會(huì)存在(HTTPDNS 嚴(yán)格遵循 DNS TTL 限制進(jìn)行緩存更新)。另一方面,即便我們假設(shè) Local DNS 嚴(yán)格遵循域名 TTL 時(shí)間進(jìn)行緩存管理(這里我們假設(shè)運(yùn)維配置的域名 TTL 時(shí)間為 5min),當(dāng)我們的業(yè)務(wù)受到攻擊并需要快速進(jìn)行切換時(shí),Local DNS 也會(huì)遵循域名 TTL,在持續(xù) 5min 的時(shí)間段內(nèi)返回舊 IP 信息,這 5min 的業(yè)務(wù)影響對(duì)于中大型企業(yè)而言是一個(gè)不小的損失(對(duì)于電商類的大型企業(yè),5min 的訪問異??赡芤馕吨鴰装偃f的交易額下跌)。以阿里云 HTTPDNS 服務(wù),HTTPDNS 在快速生效方面有專有的方案,配合阿里云的權(quán)威 DNS 服務(wù)云解析(我們的域名都是部署在阿里云的權(quán)威 DNS 服務(wù)云解析上面),用戶在權(quán)威 DNS 變更的解析結(jié)果將快速同步給 HTTPDNS,覆蓋原有的緩存記錄,幫助用戶實(shí)現(xiàn)毫秒級(jí)的域名解析切換。

異地災(zāi)備

商業(yè)化的 HTTPDNS 服務(wù),都具備 99.99% 的高可用性, 確保域名解析服務(wù)穩(wěn)定可靠。

HTTPDNS 客戶端直接通過 IP 來進(jìn)行域名解析請(qǐng)求的,HTTPDNS SDK 內(nèi)部維護(hù)一個(gè) IP 輪詢池,當(dāng)某個(gè) IP 不可用時(shí),會(huì)自動(dòng)切換其他的 IP,并且 IP 輪詢池也會(huì)更新。

HTTPDNS 服務(wù)端方面,拿阿里云的 HTTPDNS 來說,在全球有數(shù)十個(gè)服務(wù)集群,各個(gè)服務(wù)集群互相備份,具備異地容災(zāi)備份功能,當(dāng)某個(gè)服務(wù)集群不可用時(shí),會(huì)自動(dòng)切換到其他的服務(wù)集群,可以確保解析和緩存正常。

域名解析最佳實(shí)踐

預(yù)解析

絕大多數(shù)的 APP 在應(yīng)用初始化階段都有一個(gè)啟動(dòng)期,我們可以在這個(gè)啟動(dòng)期做一些 preflight 工作,即在初始化階段我們可以針對(duì)業(yè)務(wù)的熱點(diǎn)域名在后臺(tái)發(fā)起異步的 HTTPDNS 解析請(qǐng)求。這部分預(yù)解析結(jié)果在后續(xù)的業(yè)務(wù)請(qǐng)求中可以直接使用,進(jìn)而消除首次業(yè)務(wù)請(qǐng)求的 DNS 解析開銷,提升 APP 首頁的加載速度。

懶加載

懶加載策略的實(shí)施可以讓我們真正實(shí)現(xiàn) DNS 的零延遲解析。所謂懶加載策略,核心的實(shí)現(xiàn)思路如下:



下圖描繪了預(yù)解析+懶加載的實(shí)現(xiàn)框架:

HTTPDNS 方案

一期

HTTPDNS 方案一共分為兩期,一期方案為模擬統(tǒng)計(jì)方案,暫不接入 HTTPDNS SDK,主要目的是進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。統(tǒng)計(jì)出我們需要解析的域名列表,以配置在 HTTPDNS 后臺(tái)。此外,還需要統(tǒng)計(jì)出我們的域名占比,方便后續(xù)的進(jìn)行預(yù)加載。最后,也是最重要的一點(diǎn),預(yù)估我們的費(fèi)用,通常商業(yè)化 HTTPDNS 服務(wù)都是按解析次數(shù)計(jì)費(fèi)的。

總體設(shè)計(jì)

服務(wù)端控制灰度下發(fā),命中灰度的情況下走 HTTPDNS 模擬器邏輯,沒有命中灰度的情況下走老邏輯?;叶葹?0 的時(shí)候全量走老邏輯,灰度為 100 的時(shí)候全量切 HTTPDNS 模擬器邏輯。

HTTPDNS 模擬器

我們需要一個(gè) HTTPDNS 模擬器,用來模擬 HTTPDNS SDK 的行為、數(shù)據(jù)統(tǒng)計(jì)、埋點(diǎn)上報(bào)。模擬器流程如下:

分流版本

模擬 HTTPDNS SDK 中域名解析結(jié)果的緩存時(shí)間,version 用于埋點(diǎn)區(qū)分,ttl 由各自的版本決定:

版本查詢流程:

埋點(diǎn)數(shù)據(jù)

每一次進(jìn)入 HTTPDNS 模擬器,最后都需要進(jìn)行埋點(diǎn)上報(bào),上報(bào)的字段有:

埋點(diǎn)統(tǒng)計(jì)



二期

二期會(huì)正式接入阿里云 HTTPDNS SDK,支持 HTTPDNS 域名解析。同時(shí),支持預(yù)解析、灰度控制、白名單等功能。

總體設(shè)計(jì)

配置中心控制 HTTPDNS 功能灰度下發(fā),以及 HTTPDNS 可配置的白名單?;叶瓤刂谱?HTTPDNS 域名解析流程的用戶占比,為 0 時(shí)全量走標(biāo)準(zhǔn) DNS 解析,為 100 時(shí) 全量走白名單判斷。命中灰度的情況下,在降級(jí)過濾器里面,白名單內(nèi)的走 HTTPDNS 流程,白名單外的走標(biāo)準(zhǔn) DNS 解析流程。

埋點(diǎn)

埋點(diǎn)時(shí)機(jī):命中標(biāo)準(zhǔn) DNS 的時(shí)候進(jìn)行埋點(diǎn),對(duì)解析異常情況進(jìn)行監(jiān)控。

結(jié)語

綜上可以看到,當(dāng)我們需要實(shí)現(xiàn)零延遲解析的效果時(shí),在客戶端還是有比較多的工作需要做的。當(dāng)然對(duì)于復(fù)雜的生產(chǎn)環(huán)境,埋點(diǎn)和監(jiān)控也是必不可少的環(huán)節(jié)。

文|走歌人

關(guān)注得物技術(shù),攜手走向技術(shù)的云端

關(guān)鍵詞:原理,實(shí)踐,技術(shù),淺談,網(wǎng)絡(luò)

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉