你知道三地五中心吗

简介: 你知道三地五中心吗

两地三中心这个架构,如下图:

这种架构具备容灾能力,比如生产数据中心停电了,那么可以把所有流量都切到同城灾备中心或异地灾备中心,那么现在的问题是假如真到了停电的那一天,你敢把所有的流量都切到灾备中心去吗?上篇文章说了,灾备中心它主要的功能是作为生产数据中心的一个备份,所以它并没有如同生产数据中心一样不停的在对外提供服务,那么就有问题了,灾备相当于一个新人,一个一直在模仿大哥的一个新人,现在大哥受伤了,按道理是应该小弟顶上,但是小弟还是个新人,硬顶上去是不是很有可能会出错?也就是说:

  • 第一,不能保证灾备中心有能力接管线上所有的用户流量,可能刚已接收灾备中心被压垮,或者出现其他各种各样预估不到的错误;
  • 第二,如果生产数据中心接收了用户的写请求,还没来得及同步到灾备中心,这个时候停电了,这种情况下,也不能直接把用户流量切到灾备中心。

所以基于上面的分析,并不是说灾备中心一定不能顶上,只是在顶上之前可能还要做很多其他的检查和准备,这个时间是不确定的,至少不会很快...。

那么问题来了,该怎么办?

首先对于上面列出来的两点中的第一点,如果我们能够让灾备中心不再仅仅只能用来做灾备,还能和生产数据中心一样正常的对外提供服务呢?如下图:

可以看到上面的架构图:

  • 不再区分生产数据中心和灾备数据中心,只有数据中心,而且数据中心之间相互备份数据,保证每个数据中心都是全量数据。
  • 用户可以在任意一个数据中心上进行读写操作。

好,首先我们不管这种架构能不能实现,至少它的好处是非常明显的:

  1. 每个数据中心一直在对外提供服务(不是一个新手),所以当一个数据中心停电后,直接把用户流量切到另外一个数据中心也是问题不大的。
  2. 用户可以就近访问数据中心,这样用户的体验更好,并且整个架构的流量也比较平均。

优点很明显,如果能实现就再好不过了,那么这种架构实现起来最重要的一点就是:用户同时向不同数据中心写入数据,数据中心双向同步数据时,如果出现冲突该如何解决?那么这个问题,目前阿里和蚂蚁金服的解决办法是:将用户按某一个规则进行分组,每组用户写入数据时只能写入到指定的数据中心,相当于用户与数据中心绑定在一起了,这样保证了数据中心在双向同步之前数据是不会冲突的,因为按用户分组了,不同用户的数据不会冲突。当然思路非常简单,但是实现起来肯定是非常麻烦的,但是思路肯定是可以的,阿里也用实践证明了,我们先把上面的架构稍微完善一下:


用户使用网站时,由运营商网络或CDN选择最近的机房,机房内部署一个负载均衡,由这个负载均衡最终判断用户属于机房(前文中的数据中心),也就是可能出现,用户在注册时在北京,那么他的uid就和北京某个机房绑定了,那么当这个用户在上海使用时,会由上海的负载均衡按照用户分组规则将请求转发到北京绑定的那个机房去(当然并不是所有请求,比如读请求肯定可以直接在上海机房进行读取,所以具体的实现都要看业务怎么实现了,以及负载均衡具体的配置,这里只是把最简单易懂的思路说一下)。

所以,我们现在可以

  • 假设北京机房1应用程序或数据库对应的机器停电了,那么我们可以调整负载均衡是原本属于这个机房的用户流量转移到机房2去,注意这里不要有疑问,将用户进行分组是为了防止用户同时写两个数据库发生冲突,那么现在机房1里其实已经不能写入数据了,所以将流量迁移到机房2是没有问题的。
  • 假设北京机房1整个停电了,那么可以通过运营商网络或CDN将流量迁移到北京机房2。
  • 假设北京停电了,那么一样可以将流量迁移到上海。

这个架构中最重要的其实就是用户分组,所以包括我们的应用程序、数据库负载均衡、数据库分表等等都需要按用户进行分组,我们要保证针对同一个用户的请求与操作都在同一个机房内,不去跨机房,这样才是最快的,这就是单元化。


那么上面这个架构实际上就是一个高级版的“两地三中心”,只是这种单元化架构我们可以任意去扩展(只要你足够有钱,因为搭一套全配置的数据中心是需要很高成本的),比如你在上海在增加一个数据中心,在杭州也增加一个,那么就如下图:

这就叫三地五中心。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
分布式计算 数据处理 Apache
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
2108 1
|
存储 弹性计算 监控
深度解读:公有云与私有云有哪些区别?
如今云计算逐渐兴起,越来越多传统企业及用户对云计算基础产品【云服务器、云主机】有需求,准备把数据往云上迁移,其中云主机私有云、公有云和混合云,不知道如何选择云主机类型,下面小编为大家科普什么是公有云、什么是私有云,希望对你有帮助。
5354 0
深度解读:公有云与私有云有哪些区别?
|
机器学习/深度学习 人工智能 算法
快瞳犬种识别效果图示,120种狗品种精准覆盖
犬种识别技术已从实验室走向大众,基于深度学习的卷积神经网络(CNN)和YOLO系列算法,可高效实现犬种分类与目标检测。本文介绍了快瞳犬种识别的技术原理、训练代码及应用场景,包括宠物管理、遗传疾病研究、公共安全、城市管理及遗失宠物寻找等。通过Python代码加载YOLOv8模型并进行训练,模型能在图像中标注犬种及其边界框,为智慧生活提供技术支持。
952 33
|
机器学习/深度学习 人工智能 并行计算
N卡和A卡的硬件架构比较与选择指南
N卡和A卡的硬件架构比较与选择指南
1151 0
|
算法 定位技术 数据安全/隐私保护
基于遗传优化算法的多AGV栅格地图路径规划matlab仿真
本程序基于遗传优化算法实现多AGV栅格地图路径规划的MATLAB仿真(测试版本:MATLAB2022A)。支持单个及多个AGV路径规划,输出路径结果与收敛曲线。核心程序代码完整,无水印。算法适用于现代工业与物流场景,通过模拟自然进化机制(选择、交叉、变异)解决复杂环境下的路径优化问题,有效提升效率并避免碰撞。适合学习研究多AGV系统路径规划技术。
604 12
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
运维 关系型数据库 分布式数据库
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
技术选型思考:分库分表和分布式DB(TiDB/OceanBase) 的权衡与抉择
|
XML 监控 数据库
互联网架构演进:从传统单体到Service Mesh
互联网架构演进:从传统单体到Service Mesh
712 0
|
边缘计算 容灾 Cloud Native
《云上容灾交付服务白皮书》——2.容灾技术架构——21容灾技术架构简介(下)
《云上容灾交付服务白皮书》——2.容灾技术架构——21容灾技术架构简介(下)
1246 0