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

1. 挑战与变革

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

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

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

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

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

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

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

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

3. 容灾架构的类型

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

异地冷备

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

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

同城双活

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

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

两地三中心

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

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

异地多活

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

小结

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

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

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

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

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

5. 总结

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多类场景、遍布各地,融云 IM 支撑多款应用全球增长

(全网都在找的《社交泛娱乐出海作战地图》,点击获取👆) 无论是面向企业场景的工作流协同还是消费场景的网络效应形成,商务社交还是陌生人社交,IM 都是必备组件。IM 遍布互联网各角落,出现在所有…

用于图像分类任务的经典神经网络综述

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

C++标准模板库 STL 简介(standard template library)

在 C 语言中,很多东西都是由我们自己去实现的,例如自定义数组,线程文件操作,排序算法等等,有些复杂的东西实现不好很容易留下不易发现的 bug。而 C为使用者提供了一套标准模板库 STL,其中封装了很多实用的容器&#xf…

基于单片机设计的超声波测距仪(采用HC-SR04模块)

一、前言 本项目是基于单片机设计的超声波测距仪,主要采用了STC89C52单片机和HC-SR04超声波测距模块。通过LCD1602液晶显示屏来展示测量的距离信息。 超声波测距技术是一种常见的非接触式测距方法,利用超声波的传播速度测量物体与测距器之间的距离。它…

GDOUCTF2023-Reverse WP

文章目录 [GDOUCTF 2023]Check_Your_Luck[GDOUCTF 2023]Tea[GDOUCTF 2023]easy_pyc[GDOUCTF 2023]doublegame[GDOUCTF 2023]L!s![GDOUCTF 2023]润!附 [GDOUCTF 2023]Check_Your_Luck 根据 if 使用z3约束求解器。 EXP: from z3 i…

【C++】探索C++模板编程

文章目录 什么是C模板?模板的基本语法类型模板参数模板函数的示例类模板的示例总结 C模板是一种强大的编程工具,它可以实现泛型编程,使代码更加灵活和可重用。本篇博客将介绍C模板的基本语法、类型模板参数和模板函数的使用,并通过…

第20章:多线程

20.1 线程简介 在Java中,并发机制非常重要,程序员可以在程序中执行多个线程,每个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。但是,并不是所有编程语言都支持多线程。 线程的特点&#…

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

根据 Gartner 预测数据显示:2024 年全球 IT 支出预计将达到 5.1 万亿美元,比 2023 年增长 8 %。然而,该机构的另一项调查数据显示:全球数据中心服务器平均 CPU 利用率普遍低于 20%,存在巨大的资源浪费。据测算&#xf…

Python内置函数与标准库函数的解释示例

一、内置函数与标准库函数的区分 Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。 Python 解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能…

C语言——标识符

一、标识符是什么 标识符是C程序的最基本组成部分,例如:变量名称、函数名称、数据类型等等,都是一个标识符。标识符的要求是:必须由字母(区分大小写)、数字、下划线组成。而且,标识符的第一个字…

Django回顾【一】

一、Web应用程序 Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件。应用程序有两种模式C/S、B/S。 C/S&#xff1a;客户端<----->服务端 例如My…

共筑关基安全防线,开源网安加入中关村华安关键信息基础设施安全保护联盟

近日&#xff0c;开源网安正式加入“中关村华安关键信息基础设施安全保护联盟”&#xff08;以下简称&#xff1a;关保联盟&#xff09;成为会员单位&#xff0c;进一步加强与行业内重要机构、企业的协同合作&#xff0c;推动关键信息基础设施安全保护领域的生态建设。 未来&am…

9.Spring 整合 Redis

引入依赖&#xff1a;spring-boot-starter-data-redis配置 Redis&#xff1a;配置数据库参数、编写配置类&#xff0c;构造 RedisTemplate访问 Redis&#xff1a; redisTemplate.opsForValue() redisTemplate.opsForHash() redisTemplate.opsForList() redisTemplate.opsForSe…

Codebeamer—软件全生命周期管理轻量级平台

产品概述 Codebeamer涵盖了软件研发的生命周期&#xff0c;在一个整合的平台内支持需求管理、测试管理、软件开发过程管理以及项目管理等&#xff0c;同时具有IToperations&DevOps相关的内容&#xff0c;并支持变体管理的功能。对于使用集成的应用程序生命周期管理&#xf…

LVS-DR实验

实验前准备 DR服务器&#xff1a;192.168.188.11 192.168.188.15 NFS服务器&#xff1a;192.168.188.14 Web服务器1&#xff1a;192.168.188.12 Web服务器2&#xff1a;192.168.188.13 Vip&#xff1a;192.168.188.188 客户端&#xff1a;192.168.188.200 配置负载均衡调度…

Stable Video Diffusion重磅发布:基于稳定扩散模型的AI生成视频

最近&#xff0c;stability.ai发布了稳定视频扩散&#xff0c;这是stability.ai第一个基于图像模型稳定扩散的生成视频基础模型。现在可以在研究预览中看到&#xff0c;这个最先进的生成人工智能视频模型代表着stability.ai在为每种类型的人创建模型的过程中迈出了重要的一步。…

C++学习之路(七)C++ 实现简单的Qt界面(消息弹框、按钮点击事件监听)- 示例代码拆分讲解

这个示例创建了一个主窗口&#xff0c;其中包含两个按钮。第一个按钮点击时会显示一个简单的消息框&#xff0c;第二个按钮点击时会执行一个特定的操作&#xff08;在这个例子中&#xff0c;仅打印一条调试信息&#xff09;。 功能描述&#xff1a; 创建窗口和布局&#xff1a;…

linux 内核线程

内核线程类似于用户进程&#xff0c;通常用于并发处理些工作&#xff0c;它是一种在内核空间实现后台任务的方式&#xff0c;并且可以参与时间片轮转调度。 内核线程可以进行繁忙的异步事件处理&#xff0c;也可以睡眠等待某事件的发生&#xff0c;内核线程可以访问内核函数和…

名词解释之EID和SR

大家在聊辅助驾驶时&#xff0c;经常会发现有名词叫SR&#xff0c;或者EID&#xff0c;理想的环境感知界面叫EID&#xff0c;而其他很多车型里大家管那个界面叫SR。我们下面具体看下这两个词具体指什么。 SR是“Situational Awareness”的缩写,意思是环境感知或场景认知。 SR系…

【2023CANN训练营第二季】——Ascend C自定义算子工程介绍及实验

一、自定义算子工程介绍与创建 自定义算子工程是一个包含用户编写的host侧和kerne|侧算子实现文件的&#xff0c;用于编译和安装自定义算子run包的工程框架。 CANN软件包中提供了工程创建工具msopgen&#xff0c;开发者可以输入算子原型定义文件生成Ascend C算子开发工程。 需…