多机房部署:跨地域的分布式系统如何做?

本文探讨了多机房部署的难点,包括跨机房数据传输延迟对系统性能的影响,以及同城双活和异地多活的部署策略。在同城双活方案中,强调了减少跨机房调用和数据同步,而在异地多活方案中,提出了异步数据同步和用户分片以降低延迟。关键在于平衡数据一致性与系统可用性。

多机房部署的难点是什么?

多机房部署的含义是:在不同的 IDC 机房中,部署多套服务,这些服务共享同一份业务数据,并且都可以承接来自用户的流量。

这样,当其中某一个机房出现网络故障、火灾,甚至整个城市发生地震、洪水等大的不可抗的灾难时,你可以随时将用户的流量切换到其它地域的机房中,从而保证系统可以不间断地持续运行。这种架构听起来非常美好,但是在实现上却是非常复杂和困难的,那么它复杂在哪儿呢?

假如我们有两个机房 A 和 B 都部署了应用服务,数据库的主库和从库部署在 A 机房,那么 机房 B 的应用如何访问到数据呢?两种思路。

一个思路是直接跨机房读取 A 机房的从库:
在这里插入图片描述
另一个思路是在机房 B 部署一个从库,跨机房同步主库的数据,然后机房 B 的应用就可以 读取这个从库的数据了:
在这里插入图片描述
无论是哪一种思路,都涉及到跨机房的数据传输,这就对机房之间延迟情况有比较高的要求了。而机房之间的延迟,和机房之间的距离息息相关,我们可以记住几个数字:

  1. 北京同地双机房之间的专线延迟一般在 1ms~3ms。

    这个延迟会造成怎样的影响呢?要知道,我们的接口响应时间需要控制在 200ms 之内,而 一个接口可能会调用几次第三方 HTTP 服务,或者 RPC 服务。如果这些服务部署在异地机 房,那么接口响应时间就会增加几毫秒,是可以接受的。

    一次接口可能会涉及几次的数据库写入,那么如果数据库主库在异地机房,那么接口的响应时间也会因为写入异地机房的主库,增加几毫秒到十几毫秒,也是可以接受的。

    但是,接口读取缓存和数据库的数量,可能会达到十几次甚至几十次,那么

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值