除了域名解析,DNS 在架構(gòu)設(shè)計(jì)中的三大妙用!
一般來(lái)說(shuō),DNS有什么用?

如上圖所示,DNS一般用作域名解析,將域名轉(zhuǎn)化為NG的外網(wǎng)IP,以便于NG將HTTP請(qǐng)求路由給內(nèi)網(wǎng)的web-server集群。
在架構(gòu)設(shè)計(jì)的過(guò)程中,DNS還有其他用途嗎?
至少還能干這三件事。
其一:用戶就近訪問(wèn)。

通過(guò)智能DNS技術(shù),可以很容易的實(shí)現(xiàn),用戶對(duì)所需資源的就近訪問(wèn)。
如上圖所示,不同用戶訪問(wèn)同一個(gè)資源:
- 電信用戶,DNS可以返回電信機(jī)房的IP;
- 聯(lián)通用戶,DNS可以返回聯(lián)通機(jī)房的IP;
- 教育網(wǎng)用戶,DNS可以返回教育網(wǎng)機(jī)房的IP;
如此一來(lái),所用用戶的訪問(wèn)速度都會(huì)加快。
智能DNS技術(shù)是CDN以及多機(jī)房多活架構(gòu)中必不可少的部分。
其二:反向代理的水平擴(kuò)展。
在第3集《延時(shí)與吞吐量》的視頻中曾經(jīng)留了一個(gè)尾巴:
說(shuō)Nginx一般是系統(tǒng)的入口,假如Nginx的吞吐量是10W次每秒,google首頁(yè)的Nginx,要如何抗住100W次每秒的并發(fā)呢?
有小伙伴說(shuō)LVS,有小伙伴說(shuō)F5,都沒(méi)錯(cuò),但這兩種本質(zhì)上都是scale up方案,性能總有極限,治標(biāo)不治本。
scale out方案的正解方案是:DNS輪詢。

如上圖所示,在DNS側(cè),對(duì)于同一個(gè)域名配置多個(gè)nginx的外網(wǎng)ip,每次DNS解析域名請(qǐng)求,輪詢返回不同的ip,這樣就能實(shí)現(xiàn)nginx的水平擴(kuò)展,達(dá)到:1臺(tái)NG抗10W吞吐,10臺(tái)NG抗100W吞吐的目的。
其三:web-server的負(fù)載均衡。

在反向代理技術(shù)出現(xiàn)之前,可以借助“DNS輪詢”的功能,將流量均勻分配到不同的web-server上去。這個(gè)方案的好處是架構(gòu)少了一層網(wǎng)絡(luò)請(qǐng)求,壞處是“DNS輪詢”并不能保障后端web-server的可用性。
而反向代理除了能保證負(fù)載均衡,同時(shí)還兼具?;钐綔y(cè)的能力,故在反向代理技術(shù)出現(xiàn)后,就不用DNS輪詢來(lái)做負(fù)載均衡了。
稍作總結(jié),在架構(gòu)設(shè)計(jì)過(guò)程中,DNS除了解析域名,還可以:
- 其一,智能DNS,根據(jù)用戶ip來(lái)就近訪問(wèn)服務(wù)器;
- 其二,DNS輪詢,水平擴(kuò)展反向代理層;
- 其三,利用DNS實(shí)施負(fù)載均衡;
知其然,知其所以然。
思路比結(jié)論更重要。




























