跨地域的分布式系统如何做?
创始人
2025-07-13 14:40:43
0

多机房部署意味着在不同的 IDC(Internet Data Center)机房中设置多个服务实例,这些服务共享同一份业务数据,并且都可以处理用户的请求流量。这种架构旨在提高系统的高可用性和灾备能力,以应对单一机房或地区发生的网络故障、自然灾害等意外情况。

一个思路是直接跨机房读取 A 机房的从库:

图片图片

另一个思路是在机房 B 部署一个从库,跨机房同步主库的数据,然后机房 B 的应用就可以读取这个从库的数据了:

图片图片

涉及跨机房的数据传输时,对机房之间的延迟有较高的要求,这取决于机房之间的距离。一些基本的延迟数字如下:

城市内跨机房: 通常在几毫秒(ms)到数十毫秒(ms)之间,取决于城市规模和网络基础设施。

地区间跨机房: 跨越不同城市或地区的机房间的延迟通常在几十毫秒(ms)到数百毫秒(ms)之间,具体取决于地理距离和网络连接质量。

国际跨机房: 跨越国家或大洲的机房间的延迟通常在数百毫秒(ms)到数秒之间,受到地球的物理距离和国际网络连接的影响。

逐步迭代多机房部署方案

1. 同城双活

数据库部署: 主数据库部署在一个机房中(如A机房),而A、B两个机房都设置一个从数据库,通过主从复制同步数据。这样可以实现双机房的数据一致性,并且降低跨机房调用的需求。

缓存部署: 在两个机房都部署缓存,查询请求优先读取本地缓存,如果缓存不存在则穿透到本地从数据库中加载数据。这样可以减少对主数据库的直接查询,提高数据访问速度。

RPC服务注册与调用: 不同机房的RPC服务向不同的注册中心注册服务组,并且RPC客户端(如Web服务)只订阅同机房的RPC服务组。这样可以最大程度地保证RPC调用发生在本机房内,避免跨机房调用。

其他依赖服务: 确保其他依赖服务(如审核、搜索等)也采用双机房部署,并尽量保证只调用本机房的服务,降低调用延迟。

容灾处理: 如果某个机房发生故障,可以通过主从切换的方式将另一个机房的从数据库提升为主数据库,以达到容灾的目的。同时,RPC服务和其他依赖服务也可以在另一个机房中继续提供服务,保证系统的可用性。

2. 异地多活

异地机房部署位置: 异地机房应选择与主机房距离较远的位置,例如上海、广州等城市,以降低自然灾害对系统可用性的影响。

数据同步方案: 采用两种同步相结合的方式,即基于存储系统的主从复制和基于消息队列的方式。主库部署在主机房,从库部署在异地机房,并通过主从复制实现数据同步。同时,对于缓存数据、HBase等,采用基于消息队列的方式进行同步。

数据读取优化: 为了减少跨机房数据传输的延迟,对用户进行分片,使一个用户的读写操作尽量在同一个机房中进行。同时,在服务调用和数据读取时,优先选择本机房的服务和数据,确保服务调用尽量在本机房内完成。

服务调用优先级: 对于一些需要跨机房读取数据的场景,如用户查看订单信息,优先保证服务调用和数据读取在本机房中进行,即使读取的是跨机房从库的数据,也可以接受一定的延迟。

图片图片

总结:

允许有跨机房数据写入的发生,但强调数据的读取和服务的调用应尽量在同一个机房中进行,以确保最低的延迟。这种方案适用于同城多机房的延迟在1ms~3ms范围内的情况,且相对简单易行。

避免跨机房同步的数据写入和读取,采取异步的方式将数据从一个机房同步到另一个机房。这种方案适用于异地机房的延迟在50ms以下的情况,要求跨机房数据同步的延迟较低。

多机房部署是一个在业务发展到一定规模、对机房容灾有需求时才考虑的方案,需要谨慎权衡利弊。在可以避免的情况下尽量不要进行多机房部署,因为这会增加系统的复杂性和维护成本。

异地多活架构在实现时过于复杂,很少有公司能够搭建一套真正的异步多活架构。因此,在没有足够的技术实力和资源支持的情况下,不建议轻易尝试异地多活架构。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...