一句话定义:Anycast(任播)是指多个位于不同地理位置的服务器,同时对外宣告同一个 IP 地址;用户发起请求时,互联网的路由系统会自动把他送到"网络意义上最近"的那一台。
打个比方:拨打 120
你拨 120,接电话的不是某一个固定的话务台,而是你所在区域最近的调度中心。全国人拨的是同一个号码,但每个人接通的是不同的坐席——而且通常是最合适的那个。
Anycast 就是这个思路,只不过"电话号码"变成了 IP 地址,"坐席"变成了分布在全球的数据中心。
技术上是怎么发生的
正常上网时,一个 IP 地址在互联网上只对应一处位置,这叫 Unicast(单播)。数据包一路被路由器转发过去,就像快递只有一个收件地址。
Anycast 打破了这个前提:同一个 IP 前缀(prefix)由多个机房的路由器同时通过 BGP(Border Gateway Protocol,边界路由协议)向外宣告。互联网上的路由器各自持有路由表,会从多条到达同一地址的路径里挑一条"更优"的——通常是经过的自治系统更少、路径更短的那条。结果就是:东京的用户被引到东京节点,法兰克福的用户被引到法兰克福节点,双方访问的是同一个 IP。
要注意:这里的"近"是路由拓扑上的近,不是地图上的直线距离,也不保证一定延迟最低。但绝大多数情况下两者高度相关。
和相邻概念的区别
| 方式 | 谁收到数据 | 典型场景 |
|---|---|---|
| 单播 Unicast | 唯一确定的一台主机 | 绝大多数日常通信 |
| 广播 Broadcast | 同一网段内所有主机 | 局域网 ARP(IPv6 已取消) |
| 组播 Multicast | 主动订阅的一组接收者 | 视频直播分发、路由协议 |
| 任播 Anycast | 一组节点共享地址,但每次只命中其中一个 | DNS、CDN、DDoS 清洗 |
它的脾气:只适合"短平快"
Anycast 有个天然短板:路由是会变的。如果一条 TCP 连接建立到一半,路径上的路由器换了选路,后半段流量可能被送到另一台机器——而另一台机器根本不认识这个连接,连接就断了。
所以它最擅长无状态、单次往返的场景:DNS 查询是教科书级案例,很多公共 DNS 服务都用 Anycast;CDN(Content Delivery Network)的边缘接入点、抗 DDoS 的流量清洗入口也大量使用。而需要长连接、有会话状态的服务,通常要靠上层调度兜住。
对从业者的实际意义
如果你在做 AI 应用的全球部署,Anycast 的价值很直接:推理 API 的域名背后如果有 Anycast 加持,各地用户的请求会就近落到边缘节点,首包延迟明显更低——对"首 token 延迟"敏感的场景尤其划算。同时它天生抗打:攻击流量会被分散到全球各个节点,而不是砸在同一台机器上。
但别把它当成万能钥匙。它解决的是"接入点就近",不是"请求该发给哪台 GPU"。真正的算力调度、模型副本选择、会话保持,还是得靠更上层的负载均衡和路由策略。简言之:Anycast 负责让用户"少走冤枉路",剩下的活儿交给你的调度系统。至于各云厂商具体在哪些区域开放 Anycast 能力、怎么计费,以官方页面为准。
