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

时间:2019-07-31 来源:www.indiatripmasti.com

?

  传统的DNS(DomainNameSystem)使开发人员经常面临域名劫持和不准确的调度问题。

HTTPDNS使用HTTP协议替换常用的UDP协议,完成客户端与递归DNS之间的域名解析过程,使HTTPDNS服务器本身可以作为递归DNS,使域名解析请求直接发送到阿里云HTTPDNS服务器,可以绕过LocalDNS操作。业务方面,避免了LocalDNS引起的域名劫持和调度不准确的问题。产品原理如下所示:

图1架构示意图

虽然HTTPDNS在域名劫持和调度方面比传统DNS有质的飞跃,但它仍然存在以下缺点:

(1)[权限不足DNS]传统权威DNS的功能非常有限,不同供应商提供的功能不均衡,存在优化空间;

(2)[无法优化结果]当HTTPDNS充当递归DNS功能时,无法更改权威DNS解析的结果;

(3)[缺乏管理]客户域名解析缺乏集中管理,大客户的域名解析通常分布在多个DNS提供商之间。

SDNS不仅可以帮助开发人员进一步优化调度质量,还可以结合功能计算功能,扩展HTTPDNS的服务边界,提供用户定义的处理逻辑,使业务更加方便灵活。

2.1什么是SDNS?

SDNS(软件定义名称系统,简称SDNS)是一种软件定义的解析。基于HTTPDNS,它创造性地引入了自定义解析功能。其主要特点是:

(1)支持客户端自定义参数输入;

(2)HTTPDNS服务器结合了自定义功能处理功能,支持客户实现复杂的自定义解析功能;

(3)将自定义分析结果返回给客户端。

2.2 SDNS的三项功能

SDNS在功能方面已经完成了三次飞跃:

(1)自定义能力

域名解析过程可以根据自己的业务需求和实际检测数据来改进权威分析结果,以实现最佳业务。

(2)服务扩展能力

不再局限于域名解析调度。例如,可以组合诸如功能计算之类的云服务来丰富和扩展其业务能力。

(3)系统调度能力

由于可以定义域名解析过程,因此可以修改权威结果,并可以添加其他数据信息。客户端可以在现有服务的基础上集成各种权威DNS服务,避免多权限DNS不规则引起的调度质量。问题。

2.3SDNS使用指南

基于服务与功能计算的集成,SDNS可以实现多种功能。

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

(1)获取客户IP的位置和运营商信息;

(2)修改域名解析结果和TTL时间;

(3)添加自定义数据输出并将其与分析结果一起返回。

SDNS可以将运行时上下文输入到函数计算(FC)的函数中,允许客户端定义处理数据的逻辑。处理后的结果将合并回SDNS解析过程。

SDNS的系统架构如下:

图2架构示意图

阿里云SDNS的核心实现自定义解析是功能计算服务的引入。

图3自定义解析函数的示意图

HTTPDNS通过在以下五个阶段之间提供钩点并引入函数计算,在这些钩点处提供自定义函数函数。

阶段名称

描述

HTTPDNS_LOCATE_IP

在地址池中找到IP位置和运营商

HTTPDNS_CHECK_CACHE

使用域名和位置结果信息作为密钥,在缓存中搜索解析结果。如果存在有效的解析结果,请跳转到HTTPDNS_WRITE_RESPONSE阶段;如果没有进入HTTPDNS_RESOLVE阶段

HTTPDNS_RESOLVE

实际上执行递归解析逻辑

HTTPDNS_WRITE_CACHE

将解析结果写入缓存

HTTPDNS_WRITE_RESPONSE

将解析结果写入响应并将其返回给调用者

DemoHook函数实现了两个函数:

(1)在返回的结果中添加IP;

(2)在返回的结果中添加了“额外”字段。

详细使用说明:

2.4SDNS应用场景

[场景1]缩短域名的有效时间

基于SDNS,可以缩短OTT时间。遇到网络攻击时,及时调整OTT时间,及时将业务切换到阿里云高保护,确保业务安全,优化自身成本。

案例:

客户服务受到DDOS的攻击,甚至服务延迟也无法使用。客户可以使用SDNS服务快速将服务切换到高防御IP,以完成清理并确保服务的可用性。

[场景2]定向调度流量

以现场直播为例,北京地区正准备发起大规模的直播。服务器上的巨大交通压力将导致拥堵和延迟追赶。访问SDNS后,非实时流量被安排到其他服务区域,以避免由于流量急剧增加而导致的问题。定向调度可以有效缓解交通压力,保证和增强直播体验。

[场景3]智能调度

传统DNS不区分请求源,并选择其中一个随机服务IP池返回访问者。该调度方法将对最终用户体验产生不利影响。

智能调度可以根据请求的IP地址所在的区域和运营商返回最近的服务器IP。此外,对于分布式服务(通常是诸如CDN服务),也可以减少最终用户对服务器的访问的等待时间。

通常,DNS安排在不同的区域。在CDN场景中,根据区域自动填充调度路径。非CDN场景需要由用户手动填写。 SDNS在CDN场景中提供OTT功能,并且可以在多个CDN之间切换以优化调度结果。

情况下:

过去,aliyun.com的分析肯定会返回aliyun.com的CDN供应商A的分析结果。现在基于智能调度,客户可以计划路径并且可以返回制造商A的n次和制造商B的m次。结合信息扩展字段附加,您还可以通知该选择的上下文,这对于客户来说是方便的执行CDN供应商绩效跟踪。

图4智能调度示意图

[场景4]自定义行

当DNS请求的IP地址属于特定IP地址段时,返回相应的服务器IP。

图5自定义行示意图

[场景5]自定义参数分析

基于自定义参数输入的调度,例如根据用户帐户的调度(例如,不同用户的上下文信息存储在不同的服务器中,并且默认的HTTPDNS调度策略不适合)。

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

同时,基于自定义参数,还可以实现服务的A/BTest的灰度级和新服务的发布。

[场景6]质量前检测

基于SDNS,您可以事先检查域名解析结果的性能和可用性,并在返回结果之前进行优化。如果返回的IP质量较差,您可以切换到高质量的IP。

SDNS是HTTPDNS在开放性方面的转变,打破了原有的封闭式服务模式,并使企业研发团队成为可能。基于SDNS,研发团队可以进一步提高调度准确性,改善业务覆盖范围,并帮助构建更强大的智能调度系统,为最终用户提供终极体验。

相关链接:

(1)HTTPDNS:

(2)SDNS指令:

(3)编写自定义分析函数:

(4)移动研发平台EMAS:

作者:godhope

阅读原文

本文是云栖社区的原创内容,未经许可,不得转载。