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

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

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

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

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

【场景六】前置质量检测

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

总结

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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

  1. 基于阿里云Serverless架构下函数计算的最新应用场景详解(二)

    摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算.高弹性.无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场 ...

  2. 【云周刊】第208期:阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化...

    [特别通知]2019年3月起云周刊将以云栖社区消息及阿里云APP消息的形式推送给订阅用户,不再单独发送邮件,关注云周刊的同学请点击订阅云周刊! 本期头条 阿里云MWC 2019发布7款重磅产品,助力全 ...

  3. 阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化

    2019独角兽企业重金招聘Python工程师标准>>> 当地时间2月25日,在巴塞罗那举行的MWC 2019上,阿里云面向全球发布了7款重磅产品,涵盖无服务器计算.高性能存储.全球网 ...

  4. 重量级大咖来袭:阿里云生命科学与智能计算峰会精彩内容剧透

    8 月 5 日,阿里云生命科学与智能计算峰会将于北京望京昆泰酒店举行.本次峰会将汇集生命健康领域及高性能计算领域的众多专家发表主题演讲.碰撞思想火花,共同探索生命科学和高性能计算的结合,为医药创新的发 ...

  5. 手把手教你开发安卓推送通知服务(使用阿里云 emas)

    0 前言 0.1 痛点:安卓推送通知无统一标准 安卓是开源的手机操作系统,各大手机硬件厂商都会在它的基础上定制自己的操作系统. 在中国,用户因为各种原因无法使用 Google 官方服务框架,所以,在中 ...

  6. [阿里实习]阿里云EMAS团队小程序云Serverless实习工作总结

    实习工作回顾 1. 记事本小程序开发(4.5周) 工作内容 记事本小程序开发,实现数据库的增删改查,学习云函数操作数据库 输出 记事本小程序项目代码 最佳实践pr稿 10篇学习文档.踩坑记录.入门总结 ...

  7. 阿里云双11全球狂欢节 计算资源买买买

    本文讲的是阿里云双11全球狂欢节 计算资源买买买[IT168资讯]除了喜欢屯奶粉和运动装备的消费者外,创业者也能加入双11"买买买"狂欢.11月2日,阿里云宣布加入天猫双11全球狂 ...

  8. 网站app被劫持怎么办?dns被劫持,域名被劫持,HTTPDNS阿里云域名防劫持, DNSPod移动解析防劫持服务D+...

    网站app被劫持怎么办?dns被劫持,域名被劫持 HTTPDNS阿里云域名防劫持, DNSPod移动解析防劫持服务D+ 垄断,就是鸡国的毒瘤. 域名被中移动劫持了,mlgb!! 关于互联网流量劫持分析 ...

  9. 阿里云周宇:神龙计算平台智能运维体系建设

    嘉宾 | 周宇   整理 | 吴林锋 出品 | CSDN云原生 2022年4月12日,在CSDN云原生系列在线峰会第1期"SRE与智能运维峰会"上,阿里云高级技术专家.神龙计算平台 ...

最新文章

  1. python的range()和list操作
  2. python操作access数据库未发现数据源名称_ASP连接ACCESS数据库失败,提示“未发现数据源名称并且未指定默认驱动程序”...
  3. 组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
  4. Codeforces Round #700 (Div. 2) D1 D2. Painting the Array 思维
  5. 互联网日报 | 新东方二次上市通过港交所聆讯;陌陌宣布任命新CEO;广汽蔚来发致歉声明...
  6. 微信 for Mac 3.1.0 测试版发布(附安装包),新增「发朋友圈」功能
  7. 目标检测(一):背景差分法
  8. 微软总部首席测试专家做客中关村图书大厦“说法”
  9. jquery 常用组件的小代码
  10. java注释符_Java程序中的单行注释符是(  ),多行注释符是( )。
  11. 鸟哥的Linux私房菜-基础篇(第九章)
  12. 测试ai模糊软件,“马赛克视频”AI还原软件被疯传!测试效果出乎意料!
  13. 【sketchup 2021】草图大师图像输出与渲染之Enscape渲染(优秀的实时渲染软件)的安装与软件说明,并在sketchup软件中调出Enscape软件和使用。
  14. 云计算与海量数据处理技术
  15. 网上选课系统算法了解
  16. C#加密Excel文件
  17. python实现运动模糊图像_OpenCV+Python实现图像运动模糊和高斯模糊!它是编程界的PS!...
  18. java 高德地图工具类
  19. 1.4、路由初认识及构建园区网
  20. Mac电脑最强截图工具--iShot

热门文章

  1. Java开发中定时器的使用
  2. python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...
  3. logger 参数列表过长_[源码级解析] 巧妙解决并深度分析Linux下rm命令提示参数列表过长的问题...
  4. 网站域名解析端口_环境测试必备,无需注册域名,免费动态IP解析一键解析本地网站...
  5. redis setnx原子性_不支持原子性的 Redis 事务也叫事务吗?
  6. 【LeetCode笔记】42. 接雨水(Java、动态规划)
  7. html文字转语音代码,【JavaScript】实现文本转语音功能
  8. php静态数组变量初始化,为什么数组初始化时,赋值不能是常量?
  9. php 监听 扫描枪,jquery监听扫码枪获得值
  10. 微信小程序 本地mysql_微信小程序系列之使用缓存在本地模拟服务器数据库