乐趣区

关于android:阿里云-EMAS-HTTPDNS-联合函数计算重磅推出-SDNS-服务三大能力获得突破

1. 什么是 HTTPDNS?

传统的 DNS(Domain Name System)使开发者常面临着域名劫持、调度不精准的问题。

HTTPDNS 应用 HTTP 协定替换罕用的 UDP 协定,实现客户端和递归 DNS 之间的域名解析过程,使得 HTTPDNS 服务器本身能够充当递归 DNS,这样域名解析申请间接发送到阿里云的 HTTPDNS 服务器,能够绕过 Local DNS 运营商,防止因为 Local DNS 造成的域名劫持和调度不精准问题。产品原理如下图所示:

图 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)服务扩大能力

  • 不再局限于域名解析调度。例如能够联合函数计算等云服务,丰盛和扩大本身业务能力。

(2)系统调度能力

  • 因为域名解析过程能够定义,能够批改权威的后果,减少额定的数据信息,客户能够在现有服务的根底上,整合各个权威 DNS 服务,躲避因为多权威 DNS 不标准所导致的调度品质不够高的问题。

2.3 SDNS 的利用场景

【场景一】性能扩大

目前 SDNS 曾经跟函数计算进行业务整合,能够将函数计算的相干能力整合进 HTTPDNS。

SDNS 能够在解析的过程中,在指定的阶段执行由客户编写的函数计算 (FC) 的函数逻辑,并提供以下能力:

(1)获取客户 IP 所在的所在地区及运营商信息;

(2)批改域名解析后果及 TTL 工夫;

(3)增加自定义的数据输入,与解析后果一起返回。

  • 基于函数计算,扩大业务能力

SDNS 能够将运行时上下文输出给函数计算 (FC) 的函数,容许客户定义逻辑来解决这些数据。并将解决后的后果合并回 SDNS 解析流程中。

SDNS 的零碎架构如下:

 

图 2 架构原理图

阿里云 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 = 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

【场景二】缩短域名失效工夫

基于 SDNS,能够缩短 OTT 工夫,当遭逢到网络攻击后,及时调整 OTT 工夫,将业务及时切换到阿里云高防,既保障了业务平安,又优化了本身老本。

案例:

客户服务受到 DDOS 攻打,呈现服务提早甚至不可用。客户能够应用 SDNS 服务,在受到攻打时,通过调整 OTT 失效工夫,疾速地将服务切换至高防 IP 实现荡涤,保障服务的可用性。

【场景三】定向调度流量

以直播为例,北京地区筹备发展一次大型直播,服务器面临微小流量压力会导致拥塞和延时追赶。接入 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 厂商性能跟踪。

 

图 4 智能调度示意图

【场景五】自定义线路

当 DNS 申请的 IP 地址归属特定 IP 地址段时,返回对应的服务器 IP。

图 5 自定义线路示意图

【场景六】自定义参数解析

基于自定义参数输出进行调度,如依据用户账号调度(比方不同用户的上下文信息存储于不同的服务器中,采纳默认的 HTTPDNS 调度策略不适合)。

图 6 自定义参数调度示意图

同时,基于自定义参数,还能够实现业务的 A /B Test 和新服务公布的灰度。

【场景七】前置品质检测

基于 SDNS,能够前置查看域名解析后果的性能和可用性,并在后果返回前优化,如果返回 IP 品质不佳则能够切换至优质的 IP。

总结

SDNS 是 HTTPDNS 在开放性上的一次跃迁,突破了原有的关闭服务模式,赋能企业研发团队。基于 SDNS,研发团队能够进一步提高调度精准度,晋升业务覆盖面,助力打造更弱小、更智能的调度体系,为最终用户提供极致的体验。

相干链接:

(1)HTTPDNS:https://www.aliyun.com/product/httpdns

(2)SDNS 应用阐明:https://help.aliyun.com/document_detail/120654.html

(3)编写自定义解析函数:https://help.aliyun.com/document_detail/121293.html

(4)挪动研发平台 EMAS:https://aliyun.com/product/emas


更多材料:

[1] 流量劫持与防备

[2] 挪动 APP 继续交付系列之云构建价值剖析

[3] 挪动互联网时代,如何优化你的网络 —— 域名解析篇

[4] 如何利用 HTTPDNS 升高 DNS 解析开销

[5] App 如何实现就近接入?如何改善调度不准问题?

[6] 如何解决域名解析不失效问题?

[7] 那些年挪动 App 域名解析踩过的坑

[8] 阿里云 HTTPDNS 自定义域名解析介绍

[9] 阿里云 HTTPDNS 如何编写自定义解析函数

钉钉搜寻 35248489,退出阿里云云原生利用研发平台 EMAS 技术交换群,探讨最新最热门的利用研发技术和实际。(或钉钉扫码退出)

退出移动版