首页/开发/系统分析与架构设计速查/网络往返与跨地域延迟

网络往返与跨地域延迟

跨地域调用的延迟下限由物理往返时间决定:同城约毫秒级、跨区域数十毫秒、跨洲上百毫秒级;依赖跨地域强一致交互的接口要改为本地化路径。

往返时间决定的延迟下限

跨地域调用的延迟有一个物理下限:光在光纤中的传播速度加上中间设备的处理时间,决定了两个位置之间一次往返(RTT)不可能低于某个值。同城可用区之间大致在毫秒量级,跨区域通常是十几到几十毫秒,跨洲则在百毫秒量级。设计上的含义很直接:跨域链路上的多轮往返会累积放大延迟,因此依赖跨地域强一致交互的接口应改为本地化访问、批量或异步方式。

基本信息

量级同城 1ms 内;跨区域十几到几十毫秒;跨洲上百毫秒
设计读本地化、写单点或用异步复制;避免多次跨域往返
验证用真实链路测量 RTT,而非理论路由估算
测量方法拨测、ping 与 mtr,配合链路追踪中的分段耗时

典型使用场景

  • 多地域部署选型:判断哪些服务可以跨域调用、哪些必须本地化
  • 数据库主从跨域:评估写延迟与读一致性的代价
  • CDN 与边缘计算:用就近节点缩短用户到服务的往返
  • 第三方接口集成:海外服务调用在国内的延迟评估
  • 微服务跨域拆分:判断服务边界是否跨了延迟敏感的路径

测量与记录

测量与记录
# 测量往返延迟分布(关注分位而不是单次结果)
mtr -rwzc 100 target.example.com
ping -c 100 target.example.com

# 在链路追踪里把跨域段单独计时:
#   服务本地处理 12ms + 跨域 RPC 68ms + 序列化 4ms
# 跨域段占绝对多数时,优化方向是减少跨域调用次数而不是优化本地代码

典型链路与对策

链路往返量级设计对策
同城可用区之间1ms 上下可保留同步调用
跨区域(同国)十几到几十毫秒读本地化、批量与并行调用
跨洲上百毫秒级异步复制、边缘缓存、减少多轮往返

使用要点

  • 用真实链路测量 RTT 分布(拨测、mtr),而非理论路由估算
  • 在链路追踪中把跨域段单独计时,核对与下限的偏差
  • 减少往返次数比提升带宽更有效:一次批量调用通常优于多次小调用
  • 跨域依赖要有降级路径:链路抖动时能否走本地副本或缓存
  • 把跨域调用次数纳入性能预算,新增跨域依赖必须评估往返累积
一次请求的多次跨域往返会累积放大延迟:跨域调用尽量批量化与并行化,串行的跨域调用在轮次增加后延迟会线性上升。
把跨域同步调用当作普通本地调用是常见错误:本地优化几毫秒,跨域一次往返就是几十毫秒,性能预算会被这类依赖迅速耗尽。

易错点

  • 假设带宽充足即延迟低,忽略往返时延下限,延迟目标从设计阶段就不可达
  • 跨域串行调用多次,延迟叠加超出预算,且与调用次数成正比
  • 依赖理论路由估算 RTT,实际链路绕行导致偏差很大
  • 未在追踪中单独标记跨域段,优化方向长期集中在本地代码上
  • 跨域链路无降级路径,链路抖动直接导致功能不可用

数据来源与参考

  • 《数据密集型应用系统设计》(Kleppmann)第 9 章
  • AWS 文档:网络延迟与区域选择
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌