除了解析域名,DNS還能干嗎?
一個(gè)http請(qǐng)求,典型的執(zhí)行流程是怎么樣的呢?
可以看到,典型流程為:(1)客戶端請(qǐng)求dns-server,發(fā)起域名解析;(2)dns-server返回域名對(duì)應(yīng)的外網(wǎng)ip(1.2.3.4);(3)客戶端通過(guò)外網(wǎng)ip(1.2.3.4),訪問(wèn)反向代理;(4)反向代理通過(guò)內(nèi)網(wǎng)ip(192.168.x.x),將請(qǐng)求分發(fā)給web-server;(5)web-server對(duì)請(qǐng)求進(jìn)行處理;其中,第一個(gè)步驟,將域名轉(zhuǎn)化ip的過(guò)程,發(fā)生在應(yīng)用系統(tǒng)的外部,是通過(guò)DNS實(shí)現(xiàn)的。
除了域名解析,在架構(gòu)設(shè)計(jì)時(shí),還能利用DNS做一些什么事情呢?
一、用戶就近訪問(wèn)
DNS可以實(shí)現(xiàn),用戶所需資源的就近訪問(wèn):(1)電信用戶想要訪問(wèn)某一個(gè)服務(wù)器資源;(2)瀏覽器向dns-server發(fā)起域名解析請(qǐng)求;(3)dns-server識(shí)別出訪問(wèn)者是電信用戶;(4)dns-server將電信機(jī)房的nginx外網(wǎng)ip返回給訪問(wèn)者;(5)訪問(wèn)者就近訪問(wèn);根據(jù)用戶ip來(lái)返回最近的服務(wù)器ip,稱為“智能DNS”,CDN以及多機(jī)房多活中最常用。
二、反向代理水平擴(kuò)展
典型的互聯(lián)網(wǎng)架構(gòu)中,可以通過(guò)增加web-server來(lái)擴(kuò)充web層的性能,但反向代理nginx仍是整個(gè)系統(tǒng)的唯一入口,如果系統(tǒng)吞吐超過(guò)nginx的性能極限,難以擴(kuò)容,此時(shí)就需要dns-server來(lái)配合水平擴(kuò)展。
具體做法是:在dns-server對(duì)于同一個(gè)域名可以配置多個(gè)nginx的外網(wǎng)ip,每次DNS解析請(qǐng)求,輪詢返回不同的ip,這樣就能實(shí)現(xiàn)nginx的水平擴(kuò)展,這個(gè)方法叫“DNS輪詢”。三、web-server負(fù)載均衡
既然“dns輪詢”可以將同一個(gè)域名的流量均勻分配到不同的nginx,那么也可以利用它來(lái)做web-server的負(fù)載均衡:(1)架構(gòu)中去掉nginx層;(2)將多個(gè)web-server的內(nèi)網(wǎng)ip直接改為外網(wǎng)ip;(3)在dns-server將域名對(duì)應(yīng)的外網(wǎng)ip進(jìn)行輪詢解析;通過(guò)DNS來(lái)實(shí)施負(fù)載均衡有什么優(yōu)缺點(diǎn)呢?
優(yōu)點(diǎn):(1)利用第三方DNS實(shí)施,服務(wù)端架構(gòu)不用動(dòng);(2)少了一層網(wǎng)絡(luò)請(qǐng)求;
不足:(1)DNS只具備解析功能,不能保證對(duì)應(yīng)外網(wǎng)ip的可用性,而nginx做反向代理時(shí),與web-server之間有?;钐綔y(cè)機(jī)制,當(dāng)web-server掛掉時(shí),能夠自動(dòng)遷移流量;(2)當(dāng)web-server需要擴(kuò)容時(shí),通過(guò)DNS擴(kuò)容生效時(shí)間長(zhǎng),而nginx是服務(wù)端完全自己可控的部分,web-server擴(kuò)容更實(shí)時(shí)更方便;
因?yàn)樯厦鎯蓚€(gè)原因,架構(gòu)上一般都使用高可用反向代理。
總結(jié)
架構(gòu)設(shè)計(jì)中,除了域名解析,DNS還有其他用武之地:
(1)智能DNS,根據(jù)用戶ip來(lái)就近訪問(wèn)服務(wù)器;
(2)DNS輪詢,水平擴(kuò)展反向代理層;
(3)利用DNS實(shí)施負(fù)載均衡;
掃碼關(guān)注“架構(gòu)師之路”視頻號(hào)
視頻號(hào)要有100個(gè)關(guān)注,才能開通認(rèn)證,希望大家成為前100個(gè)朋友。感謝,感恩。
評(píng)論
圖片
表情
