探索容灾架构演进之路,从单点到异地多活

news2024/11/25 12:40:20

1. 挑战与变革

在公司发展初期,业务发展和用户增长是首要关注的焦点。然而,随着业务规模不断扩大,用户数量逐渐攀升,应用稳定性的重要性也变得愈发凸显。在这个演进过程中,传统架构下的应用部署模式开始显露出多方面的稳定性风险,其中最为显著的问题之一就是机房单点故障。当机房发生故障时,业务无法迅速恢复,这可能导致巨大的损失。

以近两年实际案例为例,我们可以看到,无论是云上机房还是自建机房,都存在机房故障的潜在风险。例如:

  • 2022 年 12 月 18 日,阿里云香港 Region 可用区 C 遭遇机房冷却系统异常,导致大规模服务中断,故障长达近 12 个小时。
  • 2023 年 3 月 29 日,唯品会南沙机房冷却系统故障,导致线上商城停止服务,故障时间超过 12 个小时,损失超过亿元。
  • 2023 年 4 月 10 日,腾讯云广州电信机房冷却系统故障,导致大规模服务异常。 这些事件凸显了无论是云服务提供商还是自建数据中心在面对机房故障时的脆弱性,所以在部署架构上要尽可能的做到高可用,来应对潜在的机房故障风险。这种改革是为了确保业务的持续稳定运行,减少因故障而导致的经济损失。

2. 理解传统部署架构的局限性

在业务发展初期应用部署架构相对简单,但没有任何灾备能力,当存储或应用故障时整个业务将会中断。

为了提高可用性架构会演进成将存储进行主从部署,当存储故障时可由从库快速切换为主库继续提供服务,同时也开始将业务应用和接入层多实例部署,进一步提高可用性。

随着业务进一步发展,业务应用也开始由单体应用向微服务演进,随着新应用的加入整体架构如下。

到目前为止从接入层、应用层、存储层均已经具备一定的高可用能力,但还是那个核心问题整个架构部署依然是在单个机房完成的。如果遇到机房级别的故障,这套部署架构还是无能为力,这就是传统部署架构的局限性

3. 容灾架构的类型

针对传统架构的容灾设计业界常见的方案有异地冷备、同城双活、两地三中心、异地多活

异地冷备

异地冷备部署架构是由两个机房组成的,主机房负责对外提供服务,而备机房则专注于存储数据备份。在主机房发生故障时,应用部署需要在备机房进行全面展开,包括接入层和业务服务。接下来的流程包括将备机房的存储切换为主库,最终将流量切换到备机房的接入层。这一故障恢复的过程相对较长,需要大量人工干预,因而准确性和实效性难以得到充分保障,从而显著延长了服务不可用的时间。即使在所有故障恢复动作完成后,由于备机房未经验证,也难以确保备用机房能够直接提供对外服务。

  • 优点:成本低,硬件以及网络等资源投入少
  • 缺点:可用性差,故障恢复时间长甚至无法恢复
  • 适用场景:对恢复时间要求较低的应用,成本敏感的业务,非关键业务或支持性业务,较小规模的企业(有一定规模的公司几乎很少使用此方案)

同城双活

同城双活部署架构同样需要两个机房,异地冷备架构中备用机房可用性无法得到保证,那么同城双活部署架构的思路就是让备用机房和主机房一样,实时对外提供服务达到“热备”的效果。机房 A 和机房 B 是部署在同一个城市,两个机房间使用同城专线交互,延迟相对较低。理想状态下当机房 A 出现故障时可以直接将流量切换到机房 B,而无需担心机房 B 的服务不可用

  • 优点:机房故障隔离,双机房流量负载均衡,机房间通信相对较低的网络延迟,高可用
  • 缺点:部署架构相对复杂,运维 &研发成本增加,无法应对城市级别故障
  • 适用场景:同城双活适用于那些对系统可用性要求极高,不能容忍长时间的停机和服务中断的业务场景(通常作为异地多活的一个过渡阶段)

两地三中心

两地三中心的部署架构是同城双活+异地冷备的组合模式,在同城双活的基础上另外建设异地机房,在异地机房中备份存储数据,当发生城市级别的故障时(例如地震,海啸)可以在异地机房中部署接入层,全量服务来对外提供服务。不过这个和异地冷备一样,当真正需要异地的冷备机房启用时很难保证它能正常工作。

  • 优点:机房故障隔离,城市故障有灾备能力,双机房负载均衡,机房间通信相对较低的网络延迟,高可用
  • 缺点:运维 &研发成本增加,异地冷备的数据中心可用性很难保障

异地多活

异地多活是最理想态的容灾部署方案,部署多个数据中心,数据中心可以无限水平扩展,多个数据中心同时对外提供服务,任意数据中心故障时可以将流量切换到其他数据中心。不过异地多活的挑战也是最多的,要在同城双活的基础上实现单元化,不同数据中心之间的数据同步以及管控系统的多活等等,每一个挑战都是困难且复杂的。

小结

通过上面的介绍不难看出,这几种容灾架构的对应的可用性是逐步提高的,事情都是具有两面性的,在可用性逐步提供的同时整个部署架构的复杂性和成本也是再升高的。

4. 容灾架构选择的关键因素

在容灾架构中,核心思想是通过冗余部署,将可能出现问题的单点服务、接入层和存储,在一个或多个数据中心中进行冗余部署,以应对潜在的故障。然而,冗余带来的问题主要体现在成本方面。在我看来,选择适合的容灾架构是一个涉及可用性需求和成本(运维和研发成本)的博弈过程。

在软件行业中,大家通常都听说过一句话:“世上没有最好的架构,只有最合适的架构” 异地多活被认为是最理想的容灾方案,但并不适用于所有公司的所有阶段。在选择容灾架构时,需要综合考虑容灾需求和成本,选择当前最适合的架构。这是一个动态的过程,随着业务的发展逐渐演进。

因此,在选择容灾架构时,公司需要明智地权衡可用性需求和维护这种冗余结构所需的资源投入。这种平衡是一个关键的战略决策,影响着企业的业务连续性和整体稳定性。

5. 总结

本文简要介绍了几种容灾架构的类型和它们各自的优缺点。容灾架构的选择在于平衡可用性需求和成本之间的关系,并不存在一种完美的架构,而是应该根据业务发展的阶段逐步演进容灾架构,避免陷入过度设计和资源浪费的困境。理性地选择最适合当前业务阶段的架构,并在业务发展中不断进行迭代,是建立强健容灾体系的关键。

接下来的问题是如何根据当前架构进行变革和实施。这个过程充满了挑战和困难,需要认真应对。在下一篇文章中,我们将深入探讨同城双活容灾架构在实际落地中所面临的困难和挑战,并提供相应的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1260401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间序列预测实战(十九)魔改Informer模型进行滚动长期预测(科研版本,结果可视化)

论文地址-> Informer论文地址PDF点击即可阅读 代码地址-> 论文官方代码地址点击即可跳转下载GIthub链接 个人魔改版本地址-> 文章末尾 一、本文介绍 在之前的文章中我们已经讲过Informer模型了,但是呢官方的预测功能开发的很简陋只能设定固定长度去预测…

Unity中Shader的BRDF解析(二)

文章目录 前言一、回顾一下上一篇的结尾在这里插入图片描述 二、我们来解析一下 UNITY_PBS_USE_BRDF1(高配)1、迪士尼BRDF原则2、迪士尼的漫反射函数3、参数:perceptualRoughness(感性的粗糙度)4、参数:hal…

Linux:通过VMWare,定制化Linux系统

一、原理图 二、新增磁盘(对应上图sdb盘) 三、挂载磁盘 主要是四步:查看磁盘,分区磁盘,格式化磁盘,挂载磁盘 1、查看磁盘 2、分区磁盘 3、格式化磁盘 4、挂载磁盘 创建两个备用目录,用于磁盘…

Rocket mq namesrv源码分析

NameServer 作为注册中心,提供路由注册、路由踢出、路由发现功能,舍弃强一致,保证高可用,集群中各个节点不会实时通讯,其中一个节点下线之后,会提供另外一个节点保证路由功能。 启动入口 org.apache.rock…

鸿蒙应用开发-初见:ArkUI

编程范式:命令式->声明式 以一个卡片的实现做下讲解 命令式 简单讲就是需要开发用代码一步一步进行布局,这个过程需要开发全程参与。 Objective-C UIView *cardView [[UIView alloc] init]; cardView.backgroundColor [UIColor whiteColor]; ca…

文生视频的发展史及其原理解析:从Gen2、Emu Video到SVD、PixelDance

前言 考虑到文生视频开始爆发,比如 今年,作为最早探索视频生成领域的领头羊之一,Runway 先后发布Gen-1、Gen-2 模型(runway也是Stable Diffusion 开发商之一),特别是Gen-2带来了电影级别的高清晰度,令人瞩目&#xf…

Vue3-pnpm包管理器创建项目

一些优势:比同类工具快2倍左右、节省磁盘空间 官网:pnpm - 速度快、节省磁盘空间的软件包管理器 | pnpm中文文档 | pnpm中文网 npm升级到yarn再升级到pnpm(速度更快) 安装方式:npm install -g pnpm 创建项目&#…

C++之常用的拷贝和替换算法

C之常用的拷贝和替换算法 copy #include<iostream> using namespace std; #include<vector> #include<algorithm>void Myptint(int val) {cout << val << " "; }void test() {vector<int> v;for (int i 0; i < 10; i){v.pus…

波奇学C++:C++11的新特性

列表初始化 #include<iostream> using namespace std; struct A {int _x;int _y; }; int main() {// 三种方式等价&#xff0c;并且可以省略int x 1;int y { 2 };int z{ 3 };return 0; } {}按声明顺序初始化类成员变量 A p{ 1,2 }; cout << p._x; //1 cout &…

数字化转型导师坚鹏:BLM保险公司数字化转型战略培训圆满结束

在数字化转型背景下&#xff0c;为了落实监管政策《关于保险公司业保险业数字化转型的指导意见》&#xff0c;充分认识到学习保险公司数字化转型战略的价值和重要性&#xff0c;特别举办《2023年保险公司数字化转型战略专题培训班》。为了改变大家的认知&#xff0c;为了拓宽大…

销售漏斗是什么?

销售漏斗是一个重要的销售管理工具&#xff0c;它可以帮助销售人员更好地管理和跟踪潜在客户。销售漏斗模型通常被广泛应用于B2B销售中&#xff0c;它可以将销售过程细分为多个阶段&#xff0c;例如潜在客户、初步沟通、方案报价、谈判和签约等。 销售漏斗有以下作用&#xff…

洗地机应该怎么选?希亦、必胜、米博、添可、小米洗地机实测推荐

作为一个常年测评智能家居的博主&#xff0c;关于洗地机的测评使用这些年也积累了不少的体验感受。以至于常被周边的朋友问到&#xff0c;洗地机到底是不是真的好用&#xff1f;洗地机有什么优点吗&#xff1f;选购的时候应该怎么选呢&#xff1f;洗地机什么牌子比较好呢&#…

Spring Data Redis切换底层Jedis 和 Lettuce实现

1 简介 Spring Data Redis是 Spring Data 系列的一部分&#xff0c;它提供了Spring应用程序对Redis的轻松配置和使用。它不仅提供了对Redis操作的高级抽象&#xff0c;还支持Jedis和Lettuce两种连接方式。 可通过简单的配置就能连接Redis&#xff0c;并且可以切换Jedis和Lett…

redis优化秒杀和消息队列

redis优化秒杀 1. 异步秒杀思路1.1 在redis存入库存和订单信息1.2 具体流程图 2. 实现2.1 总结 3. Redis的消息队列3.1 基于list实现消息队列3.2 基于PubSub实现消息队列3.3 基于stream实现消息队列3.3.1 stream的单消费模式3.3.2 stream的消费者组模式 3.4 基于stream消息队列…

解决方案:新版WPS-右键粘贴值到可见单元格没有了

旧版WPS&#xff0c;右键就能出现 但是新版WPS不是在这里&#xff08;方法1&#xff09; 新版WPS&#xff08;方法2&#xff09; 视频详细教程链接&#xff1a;解决方案&#xff1a;新版WPS-右键粘贴值到可见单元格没有了 -- 筛选后复制公式粘贴为数值_哔哩哔哩_bilibili

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 5》(9)

《Linux操作系统原理分析之Linux 进程管理 5》&#xff08;9&#xff09; 4 Linux 进程管理4.5 Linux 信号4.5.1 信号的作用和种类1.信号机制2.信号种类 4.5.2 信号的处理4.5.3 信号处理函数1&#xff0e;数据结构2&#xff0e; 处理函数 signal3&#xff0e;程序例 4 Linux 进…

【特斯拉 tesla Roadster 开源 地址】

下载地址 https://service.tesla.com/roadster 打开长这样&#xff0c;在右边就是目前公开的东西了 服务信息 服务手册 零件手册 &#xff08;EPC&#xff09; 电路 连接 工作原理&#xff1a;敞篷跑车 https://service.tesla.com/docs/Public/Roadster/TheoryOp/1.2.5/tabm…

在Linux中部署MeterSphere并且结合内网穿透实现远程访问本地管理页面——“cpolar内网穿透”

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

Apache Doris 整合 FLINK 、 Hudi 构建湖仓一体的联邦查询入门

1.概览 多源数据目录&#xff08;Multi-Catalog&#xff09;功能&#xff0c;旨在能够更方便对接外部数据目录&#xff0c;以增强Doris的数据湖分析和联邦数据查询能力。 在之前的 Doris 版本中&#xff0c;用户数据只有两个层级&#xff1a;Database 和 Table。当我们需要连…

无需API开发,商米云打印机集成营销系统,优化电商运营和订单处理速度

轻松实现商米云打印机连接 在电子商务和客户服务系统运营中&#xff0c;能够无缝地连接硬件设备&#xff0c;如打印机&#xff0c;至关重要。商米云打印机为电商和客服系统提供了一种无需复杂API开发的连接方式。通过简化的配置流程&#xff0c;商家可以轻松地将商米云打印机集…