《DNS稳定保障系列3--快如闪电,域名解析秒级生效》
在刚刚过去的双十一,又是一个全民狂欢的盛宴,天猫双十一的成交量高达2684亿。无数小伙伴在淘宝、天猫里买买买,今年你又剁手了多少?言归正传,在你疯狂秒杀的时候,有没有发现,今年的购物体验一如既往的好,访问速度快,购物体验那个流畅。我在这里自豪的向大家宣布,我们阿里云解析DNS又一次完成了今年双十一的安保任务!大促的稳定,离不开DNS团队的默默奉献。
今天我们来说说DNS服务稳定保障的重要环节--解析生效速度。对于DNS服务提供商来说,解析生效速度是一个关键议题,也是衡量系统能力的一个重要指标。当前主流DNS厂商的权威解析服务器大都采用了全球多地域多机房分布式集群部署的方式,以达到更低的解析时延,这同时也对解析管控系统的性能和跨地域跨机房的数据同步能力提出了更大挑战。
对于用户来说,大量线上服务和异地多活系统的构建是通过DNS来支撑的,更快的解析生效速度意味着更强的系统掌控能力和故障恢复能力,是系统稳定性和容灾能力评估的重要一环。让我从多个维度带您了解快速生效这个热点话题。
DNS解析原理

图: DNS解析原理
总的来说:客户端发起递归DNS请求,递归DNS服务器(大多数情况下为运营商DNS或者公共DNS)如果在TTL时间内有缓存则直接返回解析结果(1→8),否则会通过迭代查询请求多级的DNS权威服务器,并最终将查询结果返回给客户端(1→2→...→7→8),同时缓存本次查询结果。
云解析权威解析怎么保证秒级生效
从DNS解析原理中我们可以看到,递归服务器在TTL时间内会缓存权威域名服务器的解析结果。因此解析生效包含2个环节:首先域名的权威DNS服务器必须生效,然后还需要等各地递归DNS生效。各地递归DNS生效时间可以TTL控制,阿里云云解析作为权威服务器,付费版TTL可以最小设置为1秒。接下来重点介绍云解析怎么保证权威秒级生效。
软件层面
- 强大的业务管控系统
云解析依托阿里云内部资源,构建了稳定可靠的业务管控系统,为客户提供可视化的域名解析管理平台和OpenApi接口。为了避免单用户瞬时超高频调用等异常情况对其他用户造成影响,管控系统采取了租户隔离的策略:各个用户域名的解析调用互不影响,系统整体保证隔离性、公平性、可靠性、可控性。同时针对不同业务场景,采取了对应的隔离策略,以保证总体稳定。
对于分布式系统架构,CAP 理论是系统设计中的一个重要理论。也就是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错(Partition tolerance),三者不可得兼。BASE理论是对CAP原则中一致性和可用性权衡的结果,BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。其最核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。阿里云云解析在系统设计上采用此理念:即使某个域名有业务调用洪峰,也能保证该域名最终解析生效。且由于存在租户隔离策略,其他用户不会受到影响。

图: CAP理论
对账是检验上下游系统间数据最终一致性的一种保障手段。云解析建立了各个环节的对账体系,如果有不一致的情况发生,会自动触发报警、自动处理异常,能有效保证解析实时生效以及异常处理自动化。
随着用户的持续增加,系统稳定性和性能挑战不容小觑。另外,由于当前分布式系统、微服务化的流行和大规模部署,一次请求往往需要涉及到多个服务。因此需要一个可以帮助理解系统行为、用于分析性能问题的工具,它能够将跨应用的所有调用链性能信息集中展现,以便发生故障的时候,可以快速定位和解决问题,于此同时,它还可以对每个具体调用阶段做耗时分析,进而做针对性优化。阿里云云解析建立了全链路监控体系,使系统性能数据化,规范化,针对于监控结果反馈,持续压榨系统极限性能。
此外,管控系统还有很多未讨论的点,比如系统全栈监控、限流、熔断、降级、异地多活高可用、弹性扩容等,在这里不再赘述。
- 高性能权威DNS
ADNS是阿里云自研的高性能权威DNS解析软件,可以在普通服务器上,实现千万级的QPS。云解析管控系统和ADNS配合,可以将客户的解析配置,实时同步到在全球部署的权威解析服务器节点上。 - 缓存联动刷新
由于阿里DNS是全链路DNS厂商,可以做到权威DNS和递归DNS之间使用私有协议通信。当用户使用阿里DNS作为DNS托管方,同时使用阿里公共DNS作为递归DNS时,可以很方便的做到缓存联动刷新,可以获取更低的解析生效时延。
硬件层面
- 高性能服务器
云解析权威采用阿里定制高性能服务器,采用软硬结合的方式解决业务性能极致、成本最优、高可靠等问题。 - 专线网络
借助集团全球加速能力来进行全球访问提效,同时达到配置下发实时生效。
安全防护
DNS作为网络基础设施,经常会受到DDoS攻击,这会对解析生效时间产生重大影响。DDoS (Distributed Denial of service)攻击通过僵尸网络利用各种服务请求耗尽被攻击网络的系统资源,造成被攻击网络无法处理合法用户的请求。 通常DDoS防御技术有清洗和黑洞两种方式,云解析综合利用两种防御方式,建立了坚固的安全防护壁垒。付费版提供了2种安全防护等级,保障用户在遭受攻击的时候,也有丝滑般流畅体验。
- DNS攻击基本防御:针对付费版本绑定的所有域名,提供基础DNS攻击保护能力,基础DNS攻击防御上限不超过每秒1000万次,适用于一般情况下的DNS攻击预防保障。
- DNS攻击全力防御:针对版本绑定的所有域名,提供全面的DNS攻击保护能力,能承受每秒过亿次的DNS攻击,适用于频繁受到DNS攻击时进行全力保护。
SLA
云解析付费版提供了100%的SLA,建立了实时解析生效监控系统。另外,还通过设置服务基线,定时运行端到端测试用例的方式来监测生效时长,保证秒级生效。
解析生效测试方法
常见的测试域名解析生效的方法有四种:阿里云云解析提供的网页版域名检测工具、阿里巴巴DNS本地检测工具、测试命令dig或nslookup、拨测工具。具体可见我们的官方帮助文档。
解析不生效常见原因
- 域名状态异常
域名状态对解析生效会产生直接影响。注册商设置暂停解析(clientHold)、 注册局设置暂停解析(serverHold)、域名到期等都会造成解析不生效。可以使用whois工具排查域名状态信息,比如下图所示域名就是因为域名是注册商设置暂停解析(clientHold)造成的解析不生效。

图: Whois结果示例
- 域名DNS服务器不是用的阿里云DNS
阿里云云解析权威服务器的后缀为alidns.com或者hichina.com。如果上述whois信息显示域名使用的DNS服务器(Name server)不是阿里云云解析权威,则需要咨询域名当前DNS服务商。 - 域名递归解析过程被污染
由于常用的DNS查询没有认证机制、且是利用无连接的UDP协议,因此DNS查询就非常容易被篡改。利用阿里云域名检测工具,可以自助诊断是否被污染:

图: 域名检测到被劫持示例
更多内容,可参考官方帮助文档。
解析不生效解决方法
解析不生效的解决方法有很多,但都是不是万能的,还是需要具体问题具体分析。排除域名本身问题以外,常见还有以下解决方案:
- 检查防火墙
检查防火墙iptables,查看是否有拦截53端口的相关规则。 - 刷新本地DNS缓存
Windows:ipconfig /flushdns 。 Linux:重启nscd服务或者关闭nscd服务后再测试。 - 更换本地DNS服务器
如果本机可以访问公网,可以添加阿里云公共DNS(V4:223.5.5.5、223.6.6.6。V6:2400:3200::1 2400:3200:baba::1)
本文作者:阿里云DNS专家
本文为云栖社区原创内容,未经允许不得转载。
《DNS稳定保障系列3--快如闪电,域名解析秒级生效》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- composer proc_open(): fork failed – Cannot allocate memory
一般小的VPS 才1G内存,如果使用composer会提示内存不足的现象 解决办法,可以使用交换内存 直接命令 /bin/dd if=/dev/zero of=/var/swap.1 bs=1M co ...
- js new date()方法移动端兼容
将这个时间字符串"2016-06-07 12:51:21",转换成标准时间格式:Tue May 15 2018 14:06:15 GMT+0800 (中国标准时间) 首先是在安卓上 ...
- 【ABAP系列】SAP ABAP基础-数据更新至数据库操作解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP基础-数据更新至 ...
- LeetCode 129. Sum Root to Leaf Numbers 动态演示
树的数值为[0, 9], 每一条从根到叶子的路径都构成一个整数,(根的数字为首位),求所有构成的所有整数的和 深度优先搜索,通过一个参数累加整数 class Solution { public: vo ...
- Proxifier全局代理
0x00前言 成功搭建使用shadowshocks实现代理访问google,然而只能浏览器代理方式使用,不能其他程序使用代理,不利于白帽子匿名安全检测,下面将介绍利用Proxifier实现全局代理 ...
- NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)
传送门 Description ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力. 他现在有很多个地点来选择去刷怪升级,但是在每一个 ...
- c#处理json格式类型的字符串
string channelGroup=[{"SpType":"1","BaseInfoId":["xxx"," ...
- 07 (H5*) js课程第8天 高阶函数、闭包、沙箱
目录: 1:call和apply方法调用 2:bind方法复制 3:函数中的几个属性值 4:高阶函数,函数作为参数 5:高阶函数,函数作为返回值. 6: 作用域链,作用域,预解析 7:闭包--延长 ...
- meta标签viewport的深入理解(转)
移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...
- mysql 分区与性能
数据库应用分为两类: OLTP(在线事务处理):如bolg.电子商务.网络游戏等 OLAP(在线分析处理):如数据仓库.数据集市 对于OLAP,分区可以很好的提高查询性能,应用大多数据需要频繁地扫描一 ...