天天看點

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

1. 什麼是 HTTPDNS ?

傳統的 DNS(Domain Name System)使開發者常面臨着域名劫持、排程不精準的問題。

HTTPDNS 使用 HTTP 協定替換常用的 UDP 協定,完成用戶端和遞歸 DNS 之間的域名解析過程,使得 HTTPDNS 伺服器自身可以充當遞歸 DNS ,這樣域名解析請求直接發送到阿裡雲的 HTTPDNS 伺服器,可以繞過Local DNS營運商 ,避免由于 Local DNS 造成的域名劫持和排程不精準問題。産品原理如下圖所示:

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖1 架構原理圖

2.SDNS 軟體定義解析

雖然,HTTPDNS 在域名劫持和排程上,相對傳統 DNS 已經有了質的飛躍,但是還存在如下不足:

(1)【權威 DNS 存在不足】傳統權威 DNS 的功能非常有限,且不同供應商提供的能力參差不齊,有優化空間;

(2)【無法優化結果】HTTPDNS 充當遞歸DNS的功能時,無法改變權威 DNS 解析的結果;

(3)【缺乏管理】客戶域名解析缺乏集中管理,大型客戶的域名解析往往分布在多個 DNS 供應商。

而 SDNS 不僅可以幫助開發者進一步優化排程品質,而且可以結合函數計算等能力,擴充 HTTPDNS 的服務邊界,提供了使用者自定義的處理邏輯,讓業務更加友善靈活。

2.1 什麼是 SDNS ?

SDNS(Software-Defined Name System,簡稱SDNS)即軟體定義解析,是在 HTTPDNS 的基礎上,創造性的引入了自定義解析功能。其主要特性有:

(1)支援用戶端自定義參數輸入;

(2)HTTPDNS 伺服器端結合自定義函數處理能力,支援客戶實作複雜的自定義解析功能;

(3)傳回自定義解析結果給用戶端。

2.2 SDNS 的三大能力

SDNS 在功能上完成了三個方面的飛躍:

(1)自定義能力

  • 域名解析過程,可以基于自身業務訴求和實際檢測資料情況,改進權威解析結果,實作業務最優。

(2)服務擴充能力

  • 不再局限于域名解析排程。例如可以結合函數計算等雲服務,豐富和擴充自身業務能力。

(3)系統排程能力

  • 由于域名解析過程可以定義,可以修改權威的結果,增加額外的資料資訊,客戶可以在現有服務的基礎上,整合各個權威 DNS 服務,規避由于多權威 DNS 不規範所導緻的排程品質不夠高的問題。

2.3 SDNS 使用指南

基于跟函數計算進行業務的整合,SDNS 可以實作多種能力。

SDNS 可以在解析的過程中,在指定的階段執行由客戶編寫的函數計算(FC)的函數邏輯,并提供以下能力:

(1)擷取客戶IP所在的所在地域及營運商資訊;

(2)修改域名解析結果及 TTL 時間;

(3)添加自定義的資料輸出,與解析結果一起傳回。

SDNS 可以将運作時上下文輸入給函數計算(FC)的函數,允許客戶定義邏輯來處理這些資料。并将處理後的結果合并回SDNS 解析流程中。

SDNS 的系統架構如下:

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖2 架構原理圖

阿裡雲 SDNS 實作自定義解析的核心是引入函數計算服務。

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖3 自定義解析功能原理圖

HTTPDNS 通過為以下5個階段之間提供 Hook 點,并通過引入函數計算在這些 Hook 點實作自定義函數功能。

階段名 說明
HTTPDNS_LOCATE_IP 在位址庫中定位該IP所在地域及營運商
HTTPDNS_CHECK_CACHE 以域名和定位結果資訊作為 key,搜尋緩存中的解析結果,如果有有效解析結果則跳轉至 HTTPDNS_WRITE_RESPONSE 階段;如果沒有進入 HTTPDNS_RESOLVE 階段
HTTPDNS_RESOLVE 實際執行遞歸解析邏輯
HTTPDNS_WRITE_CACHE 将解析結果寫入緩存
HTTPDNS_WRITE_RESPONSE 将解析結果寫入響應中并傳回給調用端

Demo Hook 函數實作了兩個功能:

(1)為傳回結果增加一個 IP;

(2)為傳回結果增加了“extra”字段。

'use strict';
exports.handler = function (event, context, callback) {
  // 解析傳入的入參
  
  /* 
  event = {
  "domainName": "www.aliyun.com.",  // 注意字尾有個點
  "clientIp": "42.120.75.128",
  "location": {
    "continent": "asia",
    "country": "china",
    "isp": "bgp",  // <cmcc|unicom|chinanet|bgp|unknown>
    "city": "zhejiang"
  },
  "ips": ["140.205.135.3"],
  "ttl": 60
}
  */
  event = JSON.parse(event.toString());
  // callback 第一個參數是exception,第二個參數是出參,會被自動JSON化
  callback(null, {
    ips: event.ips.concat(['188.177.166.155']),
    ttl: event.ttl * 2,
    extra: "some-thing-send-to-user"
  });
};           

詳細使用說明:

https://help.aliyun.com/document_detail/121293.html

2.4 SDNS的應用場景

【場景一】縮短域名生效時間

基于 SDNS ,可以縮短 OTT 時間,當遭遇到網絡攻擊後,及時調整 OTT 時間,将業務及時切換到阿裡雲高防,既保障了業務安全,又優化了自身成本。

案例:

客戶服務遭到 DDOS 攻擊,出現服務延遲甚至不可用。客戶可以使用 SDNS 服務,在遭到攻擊時,通過調整 OTT 生效時間,快速地将服務切換至高防 IP 完成清洗,保障服務的可用性。

【場景二】定向排程流量

以直播為例,北京地區準備開展一次大型直播,伺服器面臨巨大流量壓力會導緻擁塞和延時追趕。接入 SDNS 後,非直播流量排程到其它服務地區,避免流量陡增造成的問題,直播結束後再切回。定向排程能有效緩解流量壓力,保障和提升直播的體驗。

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

【場景三】智能排程

傳統 DNS 不對請求來源進行區分,從随機服務 IP 池中選擇其中一個傳回給通路者。這種排程方式,會對最終使用者的體驗,造成不良影響。

智能排程可以根據解析請求的 IP 位址所歸屬的地域、營運商傳回就近的伺服器 IP。另外,對于分布式服務(典型的如 CDN 服務),還可以降低最終使用者通路伺服器的延遲。

一般 DNS 會分地域排程,在CDN 場景下,根據地域自動填充排程路徑;非 CDN 場景則需使用者手動填寫。SDNS 在 CDN 場景下提供 OTT 能力,可以在多個 CDN 之間互相切換,進而實作對排程結果的優化。

案例:

過去解析 aliyun.com ,一定會傳回 aliyun.com 的 CDN 廠商A的解析結果。現在基于智能排程,客戶能夠規劃路徑,可以傳回n次廠商A,m次廠商B。結合資訊擴充字段 extras,還可以告知本次選擇的上下文,友善用戶端做 CDN 廠商性能跟蹤。
阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖4 智能排程示意圖

【場景四】自定義線路

當 DNS 請求的 IP 位址歸屬特定 IP 位址段時,傳回對應的伺服器 IP。

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖5 自定義線路示意圖

【場景五】自定義參數解析

基于自定義參數輸入進行排程,如根據使用者賬号排程(比如不同使用者的上下文資訊存儲于不同的伺服器中,采用預設的 HTTPDNS 排程政策不合适)。

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

圖6  自定義參數排程示意圖

同時,基于自定義參數,還可以實作業務的A/B Test 和新服務釋出的灰階。

【場景六】前置品質檢測

基于 SDNS,可以前置檢查域名解析結果的性能和可用性,并在結果傳回前優化,如果傳回 IP 品質不佳則可以切換至優質的 IP。

阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破阿裡雲 EMAS HTTPDNS 聯合函數計算重磅推出 SDNS 服務,三大能力獲得突破

總結

SDNS 是 HTTPDNS 在開放性上的一次躍遷,打破了原有的封閉服務模式,賦能企業研發團隊。基于 SDNS,研發團隊可以進一步提高排程精準度,提升業務覆寫面,助力打造更強大、更智能的排程體系,為最終使用者提供極緻的體驗。

相關連結:

(1)HTTPDNS:

https://www.aliyun.com/product/httpdns

(2)SDNS使用說明:

https://help.aliyun.com/document_detail/120654.html

(3)編寫自定義解析函數:

(4)移動研發平台EMAS:

https://aliyun.com/product/emas

繼續閱讀