3. 网络层高可用设计:多活数据中心架构、专线与公网冗余、智能DNS与全局负载均衡

做跨境做市系统,最怕什么?

我最怕半夜三点接到电话,说「新加坡机房连不上了」。你想想看,做市商靠的就是毫秒级的报价和成交,网络一断,订单堆积、风险敞口瞬间爆表。所以网络层的高可用,说白了就是——绝对不能有单点故障

3.1 多活数据中心架构:不只是「多一个备份」

很多人以为多活就是多部署几个机房。其实没那么简单。

我参与过一个项目,初期搞了「主备」架构,主中心在香港,备中心在新加坡。结果某次海底光缆故障,主中心挂了,备中心切换花了整整 12 分钟。12 分钟啊,在跨境做市场景里,足够让风控模型崩好几次了。

真正的多活架构,要满足三个条件:

  • 流量同时接入:所有数据中心都在处理真实业务流量,不是冷备。
  • 数据实时同步:订单状态、账户余额、行情数据,必须毫秒级一致。
  • 故障自动切换:用户无感知,交易不中断。

核心原则:多活不是「多一个地方能跑」,而是「任何一个地方挂了,业务照常跑」。

我习惯把跨境做市系统的数据中心部署在三个区域:香港、新加坡、东京。为什么选这三个?

  • 香港:连接内地和东南亚,延迟低。
  • 新加坡:东南亚金融中心,监管友好。
  • 东京:覆盖东北亚市场,日元交易量大。

每个数据中心都部署完整的交易引擎、风控模块、行情网关。用户请求通过智能 DNS 路由到最近的数据中心,如果某个中心挂了,流量自动切到其他中心。

避坑指南:我曾经遇到过「脑裂」问题——两个数据中心都认为对方挂了,同时接管流量,导致订单重复。解决方案是引入 仲裁节点(比如用 ZooKeeper 或 etcd),只有获得多数投票的数据中心才能继续服务。

3.2 专线与公网冗余:两条腿走路才稳

数据中心之间的互联,我从来不敢只靠一条链路。

专线确实快、稳定,但贵啊。而且专线也会断——我遇到过施工队挖断光缆的,也遇到过海底光缆被渔船拖断的。所以我的方案是:专线做主,公网做备

具体怎么做?

  • 主链路:租用运营商专线(比如中国电信、Singtel、NTT),带宽根据交易量预估,一般 10Gbps 起步。
  • 备链路:公网 IPSec VPN 隧道,带宽小一点,但胜在便宜、部署快。
  • 第三链路:4G/5G 无线备份,极端情况下保底。

链路切换不能靠人工。我习惯用 BFD(双向转发检测) 协议,每 50 毫秒发一次心跳包。连续 3 次没收到回复,自动切换。切换时间控制在 200 毫秒以内,交易员基本感觉不到。

注意:公网链路延迟高、抖动大,不适合传输实时行情。我一般把公网链路留给「非实时数据」,比如日志同步、监控告警。实时交易数据必须走专线。

3.3 智能 DNS 与全局负载均衡:让流量「聪明」地流动

用户从伦敦访问你的系统,是路由到香港还是新加坡?

传统 DNS 只能做简单的轮询或 IP 哈希,但跨境场景下,延迟、负载、可用性都在动态变化。所以我们需要 智能 DNS

智能 DNS 的核心能力:

  • 地理就近:根据用户 IP 归属地,返回最近的数据中心 IP。
  • 健康检查:实时探测各数据中心状态,挂了的不返回。
  • 权重分配:根据各中心负载能力,动态调整流量比例。

我常用的方案是 F5 GTM(全局流量管理器)阿里云 DNS 企业版。它们都支持自定义策略,比如:

# 伪代码示例:智能 DNS 路由策略
if user_ip in CN:
    return hk_data_center_ip
elif user_ip in JP:
    return tokyo_data_center_ip
else:
    return singapore_data_center_ip

# 健康检查失败时自动剔除
if hk_data_center.health_check() == FAIL:
    remove_from_pool(hk_data_center)
    fallback_to(singapore_data_center)

但光有智能 DNS 还不够。DNS 有缓存,TTL 再短也要几十秒。万一某个数据中心挂了,DNS 切换期间用户还是会连到故障节点。所以还需要 全局负载均衡器 做第二层保障。

全局负载均衡器部署在数据中心入口,它实时监控各中心的连接数、响应时间、错误率。一旦发现某个中心异常,直接在 TCP 层面拒绝新连接,客户端自动重试到其他 IP。

我的经验:DNS 和负载均衡器要配合使用。DNS 做「粗粒度」路由,负载均衡器做「细粒度」调度。我曾经见过只靠 DNS 切换的架构,结果故障恢复花了 5 分钟——因为用户本地 DNS 缓存没刷新。后来加了负载均衡器,切换时间降到 1 秒以内。

3.4 整体架构图:一张图看懂网络层高可用

下面这张图是我自己画的,展示了跨境做市系统的网络层高可用架构。你一看就明白。

跨境做市系统网络层高可用架构 全球用户(伦敦、纽约、东京、新加坡...) 智能 DNS / 全局负载均衡(F5 GTM / 阿里云 DNS) 地理就近 + 健康检查 + 权重分配 香港数据中心 交易引擎 / 风控 / 行情 专线:10Gbps 公网备份:1Gbps 4G/5G 保底 新加坡数据中心 交易引擎 / 风控 / 行情 专线:10Gbps 公网备份:1Gbps 4G/5G 保底 东京数据中心 交易引擎 / 风控 / 行情 专线:10Gbps 公网备份:1Gbps 4G/5G 保底 专线互联 专线互联 仲裁节点(ZooKeeper / etcd)

这张图展示了三层架构:

  • 用户层:全球用户通过互联网访问。
  • 智能调度层:智能 DNS 和全局负载均衡器做第一道路由。
  • 数据中心层:三个数据中心多活,专线互联,仲裁节点防脑裂。

3.5 总结:网络层高可用的三个关键点

做跨境做市系统,网络层高可用不是「有就行」,而是「挂了也要能跑」。我总结三个关键点:

  1. 多活是基础:至少三个数据中心,数据实时同步,故障自动切换。
  2. 链路要冗余:专线 + 公网 + 无线,三条腿走路。BFD 协议自动切换,200 毫秒内完成。
  3. 流量要智能:智能 DNS 做地理就近路由,全局负载均衡器做细粒度调度。两者配合,切换时间从分钟级降到秒级。

最后说一句:网络层高可用设计,本质上是在「成本」和「可靠性」之间找平衡。专线贵,但必须用;公网便宜,但只能做备份。我见过太多公司为了省钱只搞两条专线,结果一条断了就全瘫。记住:跨境做市,网络就是生命线。


公众号:蓝海资料掘金营,微信deep3321