Vercel 的全球加速(Edge Network)依赖 Anycast 网络 和 边缘节点(Edge Node) 两层架构,Anycast 使得网络层的远程地址 ≠ 实际处理请求的节点地址 。
- Anycast 任播地址:Vercel 的核心服务 IP 是任播地址(注册在美国)。任播的特点是:全球所有节点共享同一个 IP 地址,但网络会自动将请求路由到距离客户端最近的边缘节点。
- 边缘节点与源服务器的分离:Vercel 的边缘节点负责静态资源缓存、请求路由、CDN 加速,大部分静态页面/资源直接从边缘节点返回,无需回源。只有动态请求(如 Serverless Functions)才会按需转发到源服务器,但边缘节点会优先处理,保证速度。
如何确认实际服务节点?
可以通过以下方式验证边缘节点的存在:
- 查看响应头中的
x-vercel-idVercel 的响应头会包含x-vercel-id: [节点标识]-[区域],例如x-vercel-id: hkg1::xxx表示来自香港节点(hkg = 香港)。 - 使用 traceroute/mtr 工具
在国内执行
traceroute vercel.app会发现,数据包的前几跳会到达中国周边的节点,而非直接跳转到美国。
总结
Vercel 的全球加速不是靠改变 TCP 连接的远程 IP,而是靠Anycast 任播技术 + 边缘节点缓存:
- 客户端的 TCP 连接始终指向 Vercel 的共享任播 IP(美国地址),因此远程地址显示美国。
- 但网络层会自动将请求路由到最近的边缘节点,实现低延迟和高速度。
这种设计在实现全球加速的同时保证了 IP 地址的统一性。
参考
https://vercel.com/docs/domains/troubleshooting#does-my-domain-ip-address-on-vercel-resolve-to-a-geographic-region 中提到:在 Vercel 配置顶级域名(如 example.com)时,平台会提供一个 IP 地址,你需将其设为 DNS 的 A 记录。该 IP 虽对应特定地理节点,但用户访问域名时,并不会被定向到该节点解析。原因在于 Vercel 使用的是任播 IP 地址(多区域共享)。即便不同地区用户解析到同一个 IP,系统也会基于边界网关协议(BGP),将流量路由到离用户最近的 CDN 节点。
