2024最快最穩定的dns排行「阿里巴巴dns設置」

微服務架構已經成為中小型企業必備的項目支撐能力,尤其互聯網BATJ企業在04年已經非常成熟,在大規模的核心業務實戰中總結了很多大規模服務調度與大數據集的處理方案。微服務架構中涉及到很多模塊,本文以微服務架構的服務註冊與發現產品來講講,如何基於DNS做服務發現。

服務註冊與發現

微服務體系中,服務註冊與服務發現是兩個最核心的模塊。業務服務調用訂單服務時,需要通過服務發現模塊找到訂單服務的IP和端口列表,而訂單服務的實例在啟動時需要把提供服務的IP和端口註冊到服務註冊中心。一個典型的結構如下圖:

微服務架構DNS服務註冊與發現實現原理

服務註冊

目前,流行的註冊中心比較多,常見的有zookeeper、ectd、consul、eureka等。服務註冊通常有三種:自註冊、第三方註冊、註冊中心主動同步。

  • 自註冊: 就是服務提供方在啟動服務時自己把提供服務的IP和端口發送到註冊中心,並通過心跳方式維持健康狀態;服務下線時,自己把相應的數據刪除。典型的像使用ZK客戶端發布微服務。
  • 第三方註冊: 第三方註冊是指,存在一個第三方的系統負責在服務啟動或停止時向註冊中心增加或刪除服務數據。典型的用法是devops系統或容器調度系統主動調註冊中心接口註冊服務;
  • 註冊中心主動同步 與第三方註冊方式類似,主動註冊方式是指註冊中心和調度或發布系統打通,主動同步最新的服務IP列表;一個例子是kubernetes體系中,coredns訂閱api server數據。

服務發現

在真正發起服務調用前,調用方需要從註冊中心拿到相應服務可用的IP和端口列表,即服務發現。服務發現從對應用的侵入性上可以分為兩大類:

  • SDK服務發現方式,需要調用方依賴相應的SDK,顯式調用SDK代碼才可以實現服務調用,即對業務有侵入性,典型例子如eureka、zookeeper等。
  • DNS本身是一種域名解析系統,可以滿足簡單的服務發現場景,如雙方約定好端口、序列化協議等等。但是,這遠遠不能滿足真正的微服務場景需求。

基於DNS的服務發現

DNS協議是目前最為通用的協議之一,幾乎所有操作系統都會有DNS客戶端實現。所以,其天然具有跨語言特性。這也是快速接入微服務體系最快的一個方式。要基於DNS做服務發現,首先註冊中心的數據應該可以通過DNS的數據格式暴露出來。讓任何系統的DNS 客戶端都可以通過DNS協議獲取服務列表。

備註:僅僅是服務發現系統提供DNS協議接入

基於DNS的服務發現方式,大致可以歸結兩類:

獨立DNS服務器

獨立DNS Server模式的基本架構如下圖:

微服務架構DNS服務註冊與發現實現原理

如上圖所示,這種架構中,需要獨立的DNS服務器。DNS服務器從註冊中心獲取所有已註冊的服務及對應的IP端口列表。調用方Service A 通過DNS查詢某個服務下的IP列表,然後發起調用。

這種類型的服務發現方式優缺點分別如下:

  • 優點 集中的DNS服務器,便於升級維護
  • 缺點 對DNS服務器性能要求高這種情況下一般需要LVS設備為DNS服務器集群做請求轉發,存在單點問題

DNS Filter

DNS Filter模式我們定義為把DNS服務器集成到服務調用方機器或容器里,如下圖所示:

微服務架構DNS服務註冊與發現實現原理

這種模式中,首先要保證ServiceA的DNS查詢都被攔截到本機的DNS服務器上(127.0.0.1:53),在獲取到服務的IP列表後發起調用。由於這種方式把DNS服務器前置到實際調用的機器上,所以它解決了獨立DNS服務器模式的單點問題,完全P2P的模式。但由於需要在應用機器上安裝DNS服務器,其維護和升級成本較前者高一些。

基於DNS的服務發現實踐

阿里巴巴早在2014年就開始了基於DNS做服務發現的嘗試了,現在已經形成了較為成熟的模式。阿里內部以VIPServer作為註冊中心,並開發了DNS Filter,部署在應用容器內。目前已經有超過100w+個機器或容器上安裝了DNS Filter,支持了幾乎所有REST服務發現。

註冊中心 VIPServer

VIPServer是阿里中間件軟負載團隊自研的服務註冊中心,VIPServer同時支持三種模式的服務註冊,並且均有相當規模的應用。除此之外,VIPServer具備如下特性:

  • 主動與被動健康檢查 VIPServer同時支持主動與被動健康檢查。 主動健康檢查是指VIPserver服務端主動定期發送健康檢查探測包,探測服務提供方是否可以正常提供服務。 用戶可以配置多種健康檢查方式,自定義探測端口和探測URL(HTTP)。 主動探測的好處在於服務提供方不用做任何改動即可快融入微服務架構。被動健康檢查則是指服務提供方主動註冊自己的IP、端口和服務名等信息,並通過心跳方式保持活性。
  • 多種負載均衡策略 同時,VIPServer支持多種負載均衡策略,包括權重、同機房、同地域、同環境等等,是異地多活項目的核心系統之一。
  • 多重容災保護策略 VIPServer提供了多種容災保護策略,可以有效減少人為或者底層系統(網絡等)異常帶來的影響。這些容災保護包括: 客戶端緩存,即使VIPServer服務端掛掉也不影響應用的正常調用;服務端保護閾值,有效防止應用因壓力過大而發生雪崩;客戶端容災目錄,提供人工干預服務IP列表的能力;客戶端空列表保護,有效防止人為誤刪IP列表操作或VIPServer服務端異常

DNS-F客戶端

出於性能的考慮,我們採用了第二種DNS Filter的服務發現模式。為此,我們單獨開發了DNS-F客戶端,DNS-F客戶端跟應用部署在同一個主機或容器內。其工作原理如下圖所示:

微服務架構DNS服務註冊與發現實現原理
  • 首先,應用ServiceA通過DNS查詢獲取到ServiceB的可用IP列表
  • DNS-F會攔截到ServiceA的查詢請求,判斷自己是否該查詢的答案,如果有(服務已在VIPServer中註冊)則直接返回IP列表;
  • 如果查詢的服務在VIPServer中沒有註冊,DNS-F把DNS查詢轉發給系統的nameserver,由真正的DNS系統解析;

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235004.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-12 11:50
下一篇 2024-12-12 11:50

相關推薦

發表回復

登錄後才能評論