本文收录于 Zeso 技术百科与核心文档库。你也可以在 完整技术文档.
技术百科与问答2 分钟阅读·198 字

什么是 Anycast DNS——全球边缘任播路由如何消除访问延迟

核心定义与要点提炼

Anycast 任播技术允许多个分布在全球的物理服务器共享同一个 IP 地址,自动将来访用户引流至物理距离最近的边缘节点。

任播(Anycast)是一种路由技术:同一个 IP 地址由分布在不同地点的一组终端共同使用。 Microsoft Learn 的官方概览说得很直接——任播「为一组各自持有同一个 IP 地址的终端提供多条 路由路径」,而「由路由协议来选出哪一个是最佳目的地」。

用在 DNS 上,就是让一台 DNS 服务器(或一组服务器)根据 DNS 客户端所在的地理位置来回答 查询。同一个地址由每一个提供服务的地点同时广播,网络从中选一个,于是访客得到的是离自己 最近的那个健康副本的答案,而不是某一个数据中心里的一台机器。

单播与任播路由的区别

理解任播,需要先与传统的单播路由对照:

  • 单播路由:一个 IP 地址只对应一个物理位置。如果那台服务器在德国法兰克福,澳大利亚悉尼的访客就得让数据包绕地球半个来回,付出数百毫秒的路由延迟。
  • 任播路由:同一个 IP 地址由东京、伦敦、纽约、圣保罗、悉尼的节点同时广播。每一位访客都由离他近的那个节点作答。

同一个地址、由每一条边缘同时广播,这就是全部:

text
one address: 203.0.113.10 │ ├─ announced from Tokyo ─ the visitor in Tokyo ├─ announced from London ─ the visitor in London ├─ announced from New York ─ the visitor in New York └─ announced from Sydney ─ the visitor in Sydney

在单播下,那一个地址只指向一个地方,悉尼的访客要跨过一片海洋。是 BGP 把一个地址变成 许多个——而等价成本多路径(ECMP)路由让网络可以在它们之间分流。

一次查询究竟怎么到达正确的节点

这一段通常被讲成「保证」,而它并不是保证。微软的描述比坊间的说法更审慎:当客户端查询一个 任播地址时,「可用的路由会被逐一评估,查询被送往那个首选地点。一般来说,这个地点是 按网络拓扑而言最近的那个。」

所以准确的说法是:网络把查询送往它能看到的最短可用路由,而这条路由通常——一般来说—— 通往最近的地点,但决定因素是网络拓扑,而不是地图上的距离。一条有绕行的路由,对那一刻的 那个客户端来说,仍可能是最短的一条。

它用在哪里

微软列了三条,也就是诚实的三条:

任播 DNS 用来做什么它实际做的事
响应时间查询由离客户端近的地点作答,而不是由一个固定的源站作答,这「可以提升 DNS 响应时间」
冗余「多一层冗余」——某个地点宕了或它的路由断了,同一个地址仍可由其他地点作答
拒绝服务防护它「有助于抵御 DNS 拒绝服务攻击」,因为打向同一个地址的洪流会被摊到它的每一份副本上

而且这不是实验品。 任播 DNS「如今已被广泛用于为许多全球 DNS 服务导流。举例来说, 根域名系统就严重依赖任播 DNS」——Azure DNS 也用任播来服务自己的区域。

它不是什么

  • 它不保证最近的那个节点。 它保证网络会挑一个好的,而「好」是按路由算的,不是按公里算的。
  • 它不是 DNS 扩容的必要条件。 微软自己的 FAQ 说得很直白:任播 DNS「与本地部署的 DNS

服务无缝配合。不过,DNS 服务要扩容并不需要任播。」

  • 它本身不会让网站变快。 它让的是查询变快、变本地。答案到达之后页面渲染得多快,是

另一个指标——本站量的就是那一个。

Zeso 的原生任播

站点本身就跑在同一类网络上:Zeso 把网站编译为不可变的静态资源,分发到全球 ${EDGE_CLAIMS.locations} 个 Anycast 边缘节点,响应由离访者最近的城市给出,而不是来自 某一个源站机房。

至于域名查询本身,用的是 Cloudflare 的权威名字服务器——这意味着「这个域名在哪里」这个答案, 也由同一个任播原理算出:在提问者最近的那个地点,而不是在别的某台机器上。

出处

在你的独立域名上体验边缘极速

全球 330+ 边缘节点、中位数低于 50ms 的 TTFB、Anycast 任播路由与全自动免费 SSL 证书。

60 秒极速部署

相关指南与关联页面