本文由公众号“水滴与银弹”号主Kaito原创分享,原题“搞懂异地多活,看这篇就够了”,为使文章更好理解,即时通讯网收录时有修订。
cover.png (7.4 KB, 下载次数: 1812)
下载附件 保存到相册
3 年前 上传
可用性(Availability)= MTBF / (MTBF + MTTR) * 100%
1.png (21.81 KB, 下载次数: 1750)
2.png (4.2 KB, 下载次数: 1775)
3.png (9.42 KB, 下载次数: 1782)
4.png (7.21 KB, 下载次数: 1753)
5.png (11.03 KB, 下载次数: 1696)
6.png (20.01 KB, 下载次数: 1755)
7.png (34.63 KB, 下载次数: 1750)
虽然交换机 / 路由器也做了路线冗余,但不能保证一定不出问题。
8.png (23.2 KB, 下载次数: 1674)
9.png (27.58 KB, 下载次数: 1696)
10.png (31.74 KB, 下载次数: 1716)
11.png (40.35 KB, 下载次数: 1720)
12.png (42.17 KB, 下载次数: 1696)
13.png (49.42 KB, 下载次数: 1732)
通常建议两个机房的距离要在 1000 公里以上,这样才能应对城市级别的灾难。
14.png (51.89 KB, 下载次数: 1711)
15.png (49.58 KB, 下载次数: 1678)
16.png (51.09 KB, 下载次数: 1617)
17.png (47.2 KB, 下载次数: 1708)
18.png (43.29 KB, 下载次数: 1654)
这里按业务类型在不同机房接入流量,还需要考虑多个应用之间的依赖关系,要尽可能的把完成「相关」业务的应用部署在同一个机房,避免跨机房调用。 例如,订单、支付服务有依赖关系,会产生互相调用,那这 2 个服务在 A 机房接入流量。社区、发帖服务有依赖关系,那这 2 个服务在 B 机房接入流量。
19.png (46.97 KB, 下载次数: 1645)
20.png (50.9 KB, 下载次数: 1634)
提醒:这 3 种常见的分片规则,第一次看不太好理解,建议配合图多理解几遍。搞懂这 3 个分片规则,你才能真正明白怎么做异地多活。
当然,最上层的路由层把用户分片后,理论来说同一个用户只会落在同一个机房内,但不排除程序 Bug 导致用户会在两个机房「漂移」。 安全起见,每个机房在写存储时,还需要有一套机制,能够检测「数据归属」,应用层操作存储时,需要通过中间件来做「兜底」,避免不该写本机房的情况发生。(篇幅限制,这里不展开讲,理解思路即可)
这里还有一种情况,是无法做数据分片的:全局数据,例如系统配置、商品库存这类需要强一致的数据,这类服务依旧只能采用写主机房,读从机房的方案,不做双活。 双活的重点,是要优先保证「核心」业务先实现双活,并不是「全部」业务实现双活。
路由规则、路由转发、数据同步中间件、数据校验兜底策略,不仅需要开发强大的中间件,同时还要业务配合改造(业务边界划分、依赖拆分)等一些列工作,没有足够的人力物力,这套架构很难实施。
21.png (36.47 KB, 下载次数: 1588)
22.png (34.8 KB, 下载次数: 1606)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:江明 发表于 2021-11-10 14:48 1. 中间件很关键,基本上开源的都只能满足部分场景,还有一部分需要自己研发 2. 还有个问题,最后的星状, ...
引用:JackJiang 发表于 2021-11-10 15:12 能做到这个体量的,有些东西已经不是拿来就能用的了。 中心节点肯定会有压力
引用:江明 发表于 2021-11-10 17:01 中心节点一旦挂了,其他节点如何提升未主? 是自动还是手动? 如果自动,是否各个节点间还是有通信,会 ...
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.125000 second(s), 38 queries , Gzip On.