简介:本文会通过一个业务 Demo 案例,介绍混合云容灾建设的难点,以及如何基于 MSHA 来快速搭建应用双活架构并具备分钟级业务恢复能力。
作者:远跖
前言越来越多的企业在数字化转型和上云进程中选择混合云的形态(云+自建 IDC 或云+其他厂商云)来进行容灾建设,一方面不会过度依赖单一云厂商,另一方面还能充分利用已有的线下 IDC 资源。
MSHA 云原生多活容灾解决方案[1],也发布了混合云多活容灾产品能力。本文会通过一个业务 Demo 案例,介绍混合云容灾建设的难点,以及如何基于 MSHA 来快速搭建应用双活架构并具备分钟级业务恢复能力。
业务混合云容灾实践 业务背景信息A 企业是一个零售行业电商交易平台,业务系统部署在自建 IDC 机房,存在以下痛点:
- 业务仅在 IDC 单机房部署,缺少容灾能力。
- IDC 容量不足,物理机器升级替换周期长,不足以支撑业务的快速发展。
业务在快速发展过程中,多次遇到的容量不足以及故障问题引起了公司高层的重视,决心进行容灾能力建设。由于自建 IDC 是公司已有资产且稳定使用多年,同时不希望过度依赖于云,因此期望建立 IDC+云 的混合云形态容灾架构。
当前应用部署架构
电商交易平台包含的应用:
- frontend:Web 应用,负责和用户交互。
- cartservice:购物车应用,提供购物车添加、存储和查询服务。
- productservice:商品应用,提供商品、库存服务。
技术栈:
- SpringBoot。
- RPC 框架:SpringCloud、Dubbo,注册中心使用自建的 Nacos、Zookeeper。
- 数据库 Redis 和 MySQL。
业务容灾需求归纳如下:
- 云上云下互容灾,切换 RTO 为分钟级。期望云上云下相互容灾,继续发挥 IDC 的价值,且不 100% 依赖于云。面对 IDC 或云故障场景,关键时刻要敢切换、能切换,且切换 RTO 要求小于 10 分钟。
- 无数据一致性风险。云上云下的两个数据中心数据强一致,日常态和容灾切换过程中都要避免存在脏写等数据一致性风险。
- 一站式管控。业务容灾涉及的技术栈框架和云产品,需要统一管控、统一运维、统一切换,操作收敛在一站式管控平台,方便故障场景快速白屏化操作,自动化执行。
- 实施周期短,改造成本低。业务存在多个产品线,依赖关系复杂、调用链路长,且处于高速发展频繁迭代时期,期望容灾建设不会给业务研发团队带来改造负担。
- 流量管理难度高
- 若采用 DNS 将流量按权重解析到云上和云下,存在修改 DNS 解析生效时间长的问题(通常为十分钟或小时级,参见 DNS 解析生效时间 FAQ[2]),不能满足容灾切换小于 10 分钟的要求。
- 业务应用所依赖的 Redis 和 MySQL,IDC内采用开源自建而云上直接使用云产品,要实现开源自建+云产品的容灾切换能力难。
- 容灾切换数据质量保障难
- 容灾切换过程中,可能因数据同步延迟导致读到旧数据,以及切换规则推送到分布式应用节点时间不一致等原因可能造成云上云下数据库同时读写而出现脏写的问题,整个切换过程数据质量保障是个关键点,同时也是难点。
- 无业务代码侵入难
- 要实现 Redis、MySQL 容灾切换能力,通常需要业务应用配合改造,对业务代码侵入大。
结合业务容灾需求和混合云 IDC+云形态的特点,采用应用双活架构能够较好的满足业务容灾诉求。
应用双活架构
架构简图:
架构规范:
- 选择离 IDC 物理距离
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?