阿里云 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)服务扩展能力
- 不再局限于域名解析调度。例如可以结合函数计算等云服务,丰富和扩展自身业务能力。
(3)系统调度能力
- 由于域名解析过程可以定义,可以修改权威的结果,增加额外的数据信息,客户可以在现有服务的基础上,整合各个权威 DNS 服务,规避由于多权威 DNS 不规范所导致的调度质量不够高的问题。
2.3 SDNS 使用指南
基于跟函数计算进行业务的整合,SDNS 可以实现多种能力。
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 = {
"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 后,非直播流量调度到其它服务地区,避免流量陡增造成的问题,直播结束后再切回。定向调度能有效缓解流量压力,保障和提升直播的体验。
【场景三】智能调度
传统 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
本文作者:godhope
本文为云栖社区原创内容,未经允许不得转载。
阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破的更多相关文章
- 阿里云杨敬宇:边缘计算行业通识与阿里云ENS的技术演进之路
近日,阿里云杨敬宇在CSDN阿里云核心技术竞争力在线峰会上进行了<5G基础设施-阿里云边缘计算的技术演进之路>主题演讲,针对5G时代下,行业和技术的趋势.边缘计算产业通识以及阿里云边缘计算 ...
- 揭秘阿里云EB级大数据计算引擎MaxCompute
日前,全球权威咨询与服务机构Forrester发布了<The Forrester WaveTM: Cloud Data Warehouse, Q4 2018>报告.这是Forrester ...
- 阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
摘要: 阿里云宣布弹性容器实例 ECI(Elastic Container Instance)正式商业化. 为了应对业务高峰,打算提前多久执行ECS扩展?买了ECS虚拟机,容器规格不能完美装箱怎么办? ...
- 在基于阿里云serverCentOS6.5下安装Subversion 1.6.5服务
近期阿里云搞了个1元免费提供云server的活动,偶心痒痒就申请了一个. 正好能够作为团队的SVNserver了,以下就来部署SVN服务吧. 一.安装基础环境 apr-1.5.0.tar.gz apr ...
- 阿里云学习之IOT物联网套件(客户端与服务端的后台数据传输)
设备端代码(mqttClient):https://help.aliyun.com/document_detail/42648.html?spm=5176.doc30579.6.569.ZEgA1g ...
- 记录阿里云ECS(Centos7.4)安装mysql 8.0.X服务
#*.rpm介绍 大多数二进制rpm包都包含在名称中倒数第二个字段中编译rpm的体系结构..rpm软件包有那么几种 *.src.rpm 源程序包,要先通过编译才能安装 *.noarch.rpm 该包适 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 【阿里云IoT+YF3300】5. Alink物模型之服务下发
名词解释: 服务:设备的功能模型之一,设备可被外部调用的能力或方法,可设置输入参数和输出参数.相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务. -摘自阿里云物联网产品文 ...
- 预警| Confluence 高危漏洞被大规模利用,阿里云WAF接入即可防护,支持免费应急服务
2019年4月4日,阿里云安全应急响应中心监测到Confluence 官方发布安全更新指出,Widget Connector 存在服务端模板注入漏洞,攻击者能利用此漏洞实现目录穿越遍历甚至远程命令执行 ...
随机推荐
- bzoj1706 relays 奶牛接力跑 线性代数
题目描述 FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T <= 100) ...
- Django项目:CRM(客户关系管理系统)--77--67PerfectCRM实现CRM课程出勤排名
# classtop_urls.py # ————————64PerfectCRM实现CRM课程排名详情———————— from django.conf.urls import url from b ...
- scrollLeft/scrollTop/scrollHeight
scrollHeight : It includes the element's padding, but not its border or margin.This property will ...
- 通过Angular-cli创建新项目
前提:已经安装Git 方法一:(推荐) 1.在需要创建项目的文件夹中右键打开 Git Bush Here ,在此输入 ng new ‘项目名’ --skip-install (如下my-app ...
- hibernate一对一关联手动改表后No row with the given identifier exists:
articleId手动改了一个并不存在的值 把被控端的id改成存在的就好了
- windows2008解决必须使用角色管理工具安装或配置 NET3.5 sp1问题
win2008系统安装网站环境系统的时候常常提示:必须使用角色管理工具 安装或配置microsoft.net framework 3.5 sp1 ,导致安装不成功. 原因在于windows2008系统 ...
- Spring Boot实战系列(7)集成Consul配置中心
本篇主要介绍了 Spring Boot 如何与 Consul 进行集成,Consul 只是服务注册的一种实现,还有其它的例如 Zookeeper.Etcd 等,服务注册发现在微服务架构中扮演这一个重要 ...
- java 中Vector的使用详解
Vector 可实现自动增长的对象数组. java.util.vector提供了向量类(vector)以实现类似动态数组的功能.在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提 ...
- 同一浏览器中同一JavaWeb程序不共享session方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/b2084005/article/details/302227351.要求 在使用struts1开发J ...
- TZOJ 5986 玄武密码(AC自动机)
描述 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香河中.老人们说,这是玄武神灵将天书藏匿在此. 很多年后,人们终于在 ...