架構與思維:DNS在架構中的使用

原创 架构与思维

1 介紹DNS(Domain Name System,域名系統)是一種服務,它是域名和IP地址相互映射的一個分散式資料庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP位址數串。
簡單來說,DNS就是一個將我們輸入的網址(如www.baidu.com )轉換成對應的IP位址(例如192.0.2.1)的系統。這個過程是自動且透明的,用戶在瀏覽器中輸入網址後,瀏覽器會向DNS伺服器發起查詢請求,DNS伺服器會根據網域解析出對應的IP位址,然後瀏覽器再根據這個IP位址去存取目標伺服器.

2 實作原理DNS系統的工作原理大致如下:2.1 遞迴查詢當客戶端(如瀏覽器)需要解析一個網域名稱時,它會先向本機DNS伺服器(如ISP提供的DNS伺服器)發起查詢請求。如果本地DNS伺服器快取中沒有該網域的記錄,它會向根DNS伺服器發起查詢。根DNS伺服器會傳回頂級網域(TLD,如.com、.net等)的DNS伺服器位址。然後,本地DNS伺服器會向這些頂級網域DNS伺服器發起查詢,頂級網域DNS伺服器再傳回下一級DNS伺服器的位址,直到找到最終的IP位址。這個過程中,本地DNS伺服器會遞歸地查詢,直到找到結果或確定查詢失敗。

遞迴查詢是由DNS伺服器主動幫主機查詢的查詢模式。 ‌

2.2 迭代查詢與遞迴查詢不同,迭代查詢中,本地DNS伺服器在收到客戶端的查詢請求後,會向根DNS伺服器發起查詢,但根DNS伺服器不會直接傳回IP位址,而是傳回下一級DNS伺服器的位址。本地DNS伺服器會再次向這個位址發起查詢,以此類推,直到找到最終的IP位址。在這個過程中,每個DNS伺服器只負責傳回下一級DNS伺服器的位址,而不是直接回傳IP位址。迭代查詢則是客戶端自行逐步查詢,‌直到獲得結果或遍歷所有可能的查詢路徑。 ‌

2.3 強大的網域解析能力DNS不僅支援A記錄(將網域名稱對應到IPv4位址),也支援AAAA記錄(將網域名稱對應到IPv6位址)、CNAME記錄(別名記錄,將網域名稱對應到另一個網域)、 MX記錄(郵件交換記錄,指定處理該網域郵件的郵件伺服器)等多種記錄類型,以滿足不同的需求。

3 在互聯網架構中的作用我們先看一個Http請求,從客戶端開始調用,到服務端響應,它的整個LifeCycle,以及DNS起到的作用

流程步驟如下:Client存取網域名稱 www.taobao.com 要求至 DNS 伺服器DNS伺服器回傳網域對應的外網IP位址:10.88.0.1,這是代理服務Nginx的位址Client繼續存取外網IP 10.88.0.1向Nginx進行連結Nginx配置了n個Service(多副本模式)的內網IP,如 192.168.0.100、192.168.0.101、192.168.0.102Nginx的負載平衡透過流量調度策略(如 RR)對IP List進行輪詢請求最後落在某一個Service進行處理,取得運算結果這是DNS最基本的能力,那除了DNS的A記錄解析,在網路架構中,他還有哪些貢獻?

3.1 反向代理和動態擴展反向代理是一種位於伺服器和客戶端之間的代理伺服器。客戶端將請求傳送給反向代理,然後由代理伺服器根據一定的規則將請求轉送給後端伺服器。後端伺服器將回應傳回代理伺服器,再由代理伺服器將回應轉送給客戶端。反向代理程式對客戶端是透明的,客戶端無需知道實際伺服器的位址,只需將反向代理當作目標伺服器一樣發送請求就可以了。
用戶在Client只需要記住www.taobao.com,不需要知道他後面負載了多少真實的服務,這就為擴展提供了很多便利,所以原來的架構可以優化為:

對同一個網域配置多個Nginx Service 的IP,每當DNS解析請求,RR輪詢返回不同的Nginx IP位址,實現動態擴展的能力。

3.2 負載平衡DNS輪詢是一種簡單的負載平衡方法,透過改變DNS解析結果中的IP位址順序,將使用者請求分散到不同的伺服器上。在我們的上圖中,Nginx承擔了這一層職責,我們可以嘗試免去Nginx後看看效果怎麼樣!

看著是去掉了一層網路請求,但是這種也存在一些問題。無法實現智慧的負載平衡這種技能支援簡單的輪詢,無法支援更智慧的 Weighted Round Robin、IP Hash、Least Connections等負載策略無法實現探活和故障轉移使用Nginx做反向代理時,可以對Service進行存活探測,當服務掛掉的時候,進行流量遷移,實現故障轉移和停損的目標。 3.3 智慧路由與加速智慧DNS: 智慧DNS可以根據使用者的地理位置、網路狀況等因素,將使用者請求解析到最適合的伺服器上,進而提高存取速度和使用者體驗。
CDN(內容傳遞網路): CDN利用DNS技術將使用者的請求解析到距離使用者最近的快取節點上,從而加快內容的傳輸速度,減少網路延遲。如下圖,雖然潮州在廣東,但明顯離廈門更近,所以流量分送到廈門機房:

4 總結動態擴展反向代理層支援簡易輪詢模式的負載平衡,但無法探活 和 Fail Over智慧型Dns路由和CDN加速