网络路径与中间节点:公网 vs 专线
这一章我们来聊聊数据在网络上到底是怎么走的。说白了,跨云复制延迟的根源,很多时候就卡在网络路径上。我个人习惯把网络路径比作快递运输——你用顺丰还是普通快递,走高速还是走乡道,结果天差地别。
公网路由的不可预测性
先说说公网。很多团队刚开始做跨云复制时,图省事直接走公网。嗯,这里要注意,公网路由的不可预测性,可能是你遇到的最头疼的问题之一。
为什么会这样?核心原因有两个:BGP路由策略和跳数变化。
核心观点:公网路由不是固定的。每次数据包出发,都可能走一条完全不同的路。这意味着延迟和抖动是常态,而不是异常。
BGP路由的“任性”
BGP(边界网关协议)是互联网的“交通警察”。但它做决策时,看的不是哪条路最快,而是哪条路“成本最低”。这个成本是网络管理员自己配的,跟实际物理距离、带宽利用率没半毛钱关系。
我记得有一次帮客户排查问题,他们的跨云复制延迟从20ms突然跳到200ms。查了半天,发现是某个中间运营商的BGP策略调整了,数据包绕了大半个中国。你想想看,这种事儿在公网上太常见了。
避坑指南:我曾经遇到过一个案例,某家公司的数据复制在晚上10点到凌晨2点特别慢。后来发现,这个时段运营商会把部分流量切换到备用链路,而那条链路的跳数多了3跳。所以,如果你走公网,务必做全时段监控。
跳数的不确定性
跳数,就是数据包从源到目的地经过的路由器数量。公网环境下,跳数可能从10跳到30跳不等。每多一跳,就意味着多一次处理、多一次排队、多一次潜在的丢包。
我做过一个测试:从AWS新加坡到Azure东京,走公网时跳数在12到22之间波动。最夸张的一次,数据包绕道美国西海岸,跳数飙到35。这种情况下,延迟稳定才怪。
| 指标 | 公网(典型值) | 公网(极端值) |
|---|---|---|
| 跳数 | 10-15 | 30+ |
| 延迟抖动 | ±10ms | ±100ms |
| 丢包率 | 0.1%-0.5% | 1%-5% |
| 路由变更频率 | 每天数次 | 每小时数次 |
专线:稳定性的保障
那怎么办?专线就是答案。AWS Direct Connect、Azure ExpressRoute、Google Cloud Interconnect,这些服务本质上就是给你拉了一条“专用高速公路”。
说白了,专线最大的价值不是带宽,而是确定性。
专线如何降低延迟
专线降低延迟的方式很直接:
- 物理路径最短:专线通常走的是运营商骨干网,物理距离比公网短得多。比如从北京到上海,公网可能绕武汉,专线直接走京沪干线。
- 跳数固定:专线的跳数通常是固定的。我配置过一条AWS Direct Connect,从北京到新加坡,跳数稳定在4跳,雷打不动。
- 无BGP波动:专线的路由策略由你和云厂商协商确定,不会因为其他用户的流量变化而改变。
注意:专线不是“零延迟”,而是“可预测的延迟”。我见过有人以为上了专线就能把延迟降到0,这是误解。物理距离的极限在那里,专线只是把这个极限稳定地呈现给你。
专线如何降低抖动
抖动,说白了就是延迟的变化量。公网抖动大的原因是什么?是共享。你和其他成千上万的用户挤在同一条路上,别人堵车你也得跟着堵。
专线不一样。它是独享的带宽管道。你想想看,一条路只给你一个人走,怎么可能堵车?
我做过一个对比实验:
- 公网:延迟均值80ms,抖动±25ms,峰值抖动达到80ms
- 专线:延迟均值45ms,抖动±2ms,峰值抖动不超过5ms
这个差距,对于数据库复制、实时同步这类场景来说,是致命的。抖动大意味着你的复制程序需要不断调整缓冲区大小,甚至可能因为超时而中断。
公网 vs 专线:核心对比
| 维度 | 公网 | 专线 |
|---|---|---|
| 路由确定性 | 不可预测,BGP策略随时变 | 固定路径,协商确定 |
| 跳数 | 动态变化,10-30+跳 | 固定,通常3-8跳 |
| 延迟均值 | 较高,受拥塞影响大 | 较低,接近物理极限 |
| 抖动 | 大,±10ms到±100ms | 小,±1ms到±5ms |
| 丢包率 | 0.1%-5% | <0.01% |
| 成本 | 低,按流量计费 | 高,按月租+流量 |
| 部署周期 | 即时可用 | 数周至数月 |
专线的实际部署经验
我建议,如果你的跨云复制对延迟敏感(比如数据库同步、实时日志复制),别犹豫,上专线。但有几个坑你得注意:
- 冗余:一条专线不够。我曾经遇到过一次光纤被挖断,整个复制链路断了6小时。所以至少两条专线做冗余,最好走不同的物理路径。
- 带宽规划:专线的带宽是固定的。我见过有人买了1Gbps的专线,结果复制流量峰值到了1.2Gbps,直接丢包。预留20%-30%的余量比较稳妥。
- 混合方案:不是所有数据都需要走专线。我习惯把核心业务数据走专线,非核心数据(比如日志归档)走公网加加密。这样既保证了关键业务的稳定性,又控制了成本。
个人经验:我曾经帮一家金融客户设计跨云复制方案。他们的交易数据必须实时同步,延迟要求<10ms。我们最终用了两条AWS Direct Connect,一条主用,一条备用,配合BGP AS_PATH prepend做流量控制。上线后延迟稳定在3-5ms,抖动不超过1ms。客户很满意,但背后的规划和测试花了两周时间。
网络路径对比图
下面这张图展示了公网和专线在网络路径上的核心差异。你可以直观地看到,公网路径经过多个自治系统(AS),跳数多且路径不确定;而专线路径直接连接云厂商的接入点,跳数少且路径固定。
选型建议
最后,给几个实际建议:
- 延迟敏感型(数据库同步、交易系统):必须上专线,而且要做冗余。别省这个钱,一次故障的损失可能比专线一年的费用还高。
- 延迟容忍型(日志归档、批量同步):公网加加密就够了。配合多线程、断点续传,效果还不错。
- 混合型:我习惯用专线做核心数据同步,公网做非核心数据同步。这样既保证了关键业务的稳定性,又控制了成本。
重要提醒:专线不是一劳永逸的。我曾经遇到过专线运营商内部路由调整,导致延迟增加了10ms。所以,即使上了专线,也要持续监控延迟和抖动。我建议至少每5分钟采集一次数据,设置告警阈值。