高可用架构方案实例|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习高可用架构方案实例

开发者学堂课程【企业级互联网分布式系统应用架构学习高可用架构方案实例】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/503/detail/6747


高可用架构方案实例


高可用架构,从下图我们可以理解,从非高可用架构到高可用架构的变化,我们通常提及的非高可用架构指的是在某一个应用架构的设计中,中间有单点故障,应用服务器有一台,数据库中也有一台,我们通常称为非高可用架构。

一旦应用服务器出现了问题,例如异常宕机,发生了数据的迁移,整个架构或应用需要停机。

图片1.png

上图中我们可以看到这是一个用户部署架构图,该用户购买了一台虚拟机,该虚拟机有一个互联网 IP,本身从应用的视角来看,对应用是可被访问的,并且在虚机上部署了多个软件,例如财务,办公等软件。

用户在机器上也部署了自己的软件,架构在使用上正常情况下是没有问题的,其应用可以正常接收互联网的请求,该应用也可以访问数据库,但问题的核心是这台机器一旦出现故障,客户的所有软件都无法访问,所以这个架构是有缺陷的。若从成本考虑,我们不在意宕机导致不可用的时间,此架构也没有太大问题。

若我们对应用的高可用应用非常高,例如一定要24小时服务,那此架构就不太适合。同时此架构也会带来运维的风险,例如数据库的管理员也要登录到这台机器上进行数据库的操作,多个软件的运维人员也要登录到这台机器上进行应用的部署和运动的运维,一旦有管理员操作失误,可能对其他的应用或数据库产生影响。所以这是一个从高可用的视角来看是有一个问题比较大的架构。

图片2.png 

所以高可用架构如图所示,首先我们需要将软件进行一个纵向的拆分,例如将软件一和软件二以及软件三等应用进行独立的部署,每一个软件和应用都要拥有自己一套完整的部署架构,通常就包含了负载均衡,应用服务器,数据库服务器。这个架构最大的好处是任何一台应用或虚机云服务器停止服务都不会对应用产生影响,并且在运维的过程中,可以更好的将运维的角色进行划分。

运维软件一的用户就只能访问云服务器一和云服务器二,运维软件二的应用人员就只能访问软件二和另外的服务器,同时应用的部署人员和数据库的运维人员进行分离。当我们去进行这样的应用架构设计和部署,以后的系统可用性就会非常高,它没有太明显的单点故障。但是在互联网应用架构下,我们还面临的风险是,让我们把这些服务器同时放在一个机房,当这个机房断电或网络因为其他原因,整个应用的访问会产生影响。

所以公有云的应用商提出的概念是可用区,可用区指的是共有云应用商在设计其基础网络技术时,我们用可用区来进行资源的隔离。具体的理解是,例如我们在北京阿里云会建多个可用区,每个可用区都是单独的环境,例如供电,网络的接入。即其中一个可用区停止服务,另外一个可用区不会受到影响。

但同时这两个可用区在正常的情况下,会用高速的光纤连接在一起,在使用的过程中,用户可以把他的服务器部署在两个可用区。这两个可用区感知不到他们在不同的可用区,因为他们之间的网络延时非常小。

图片3.png

真正的高可用架构通常是把应用设计成多可用区。两者的差别是单可用区的高可用架构是互联网用户通过 SLB 接入,所有的应用服务器或云服务器 ECS 服务器在一个可用区,同时 RDS 数据库主备在一个可用区。

阿里云的 IDS 会在后台自动做一个主备的架构,类似于只读库的架构。正常情况下,只有生产数据库被应用访问,同时生产库会把数据同步到备库中,对应用是不可见的,应用正常情况下访问的都是生产库,出现问题时,阿里云的 IDS 会切换到备库。在单可用区的设计架构中,IDS的生产库和摘备库是在同一个访问中的。

高可用设计的问题在于,一旦可用区出现问题,例如网络被挖断,整个机房断电等,虽然出现的概率较低,但还是有这样的可能。所以更高可用区架构被称为双可用区高可用架构,也有一个名词叫两地三中心,还有一种称呼为同城灾备。

图片4.png

同城灾备指的是在同一个城市的两个区域有两个机房,通常讲述的可用区都是在一个城市相距几十公里的地方建造。在做这个部署时,整个架构会变成如上图所示。

具备负载均衡器,该负载均衡具备了跨机房漂移的能力,众所周知,负载均衡本身会绑定一个 IP 地址,互联网的 IP 地址。该 IP 地址实际上是一个虚拟的 IP 地址,即当 a 可用区出现问题后,负载均衡器所附带的 IP 会漂移到可用区 b,此时用户在不更改 IP 的情况下,即使可用区 a 出现状况,负载均衡用的IP还是同一个,可以切换到可用区 B。在应用部署时,该架构需要额外注意的是,不能把应用的所有云服务器都部署在一个可用区,一定要将原服务器的应用分散部署到 A 和 B 两个可以区,例如图上1234。

在正常情况下 A 可用区出现问题,因为 B 可用区还有两台云服务器可以服务,整个应用不会垮掉的问题或不可访问的问题。下面一层是 RDS 数据库,也要选用多可用区的 RDS,多可用区的 RDS 的生产数据库位于两个可用区,当可用区 A 出现问题后,位于可用区 B 的容灾数据库生效,再服务于云服务器三和云服务器四,这样的架构可以保证在一个可用区出现问题后,应用可以由 B 服区的资源进行接管。可用区完全不能访问的情况是小概率事件,并且两个可用区不能访问是更小的概率事件,所以高可用架构可以保证应用非常高级别的可应用架构。

在该架构里,互联网用户通过 SLB 接入,ECS 服务器在两个可用区分别购买数量相等的多台,在购买过程中,优先选择多台较低配置,而不是少量高配置,这样能够更好的保证安全性,数据库在选择高可用区数据库。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
2月前
|
网络协议 NoSQL API
转转客服IM系统的WebSocket集群架构设计和部署方案
客服IM系统是转转自研的在线客服系统,是用户和转转客服沟通的重要工具,主要包括机器人客服、人工客服、会话分配、技能组管理等功能。在这套系统中,我们使用了很多开源框架和中间件,今天讲一下客服IM系统中WebSocket集群的的实践和应用。
214 0
|
3月前
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
1月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
2月前
|
消息中间件 监控 Cloud Native
高效设计:支持亿级用户社交关系的100W QPS架构方案
面对亿级用户与百万QPS的高并发场景,性能测试成为系统稳定的关键。本文剖析真实业务痛点,详解从接口压测、全链路监控到瓶颈定位的完整性能体系,助你掌握大厂级性能优化能力,从容应对卡顿、宕机等线上挑战。
|
2月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
边缘计算 Kubernetes 物联网
Kubernetes 赋能边缘计算:架构解析、挑战突破与实践方案
在物联网和工业互联网快速发展的背景下,边缘计算凭借就近处理数据的优势,成为解决云计算延迟高、带宽成本高的关键技术。而 Kubernetes 凭借统一管理、容器化适配和强大生态扩展性,正逐步成为边缘计算的核心编排平台。本文系统解析 Kubernetes 适配边缘环境的架构分层、核心挑战与新兴解决方案,为企业落地边缘项目提供实践参考。
287 0
|
4月前
|
数据采集 边缘计算 定位技术
ar景区导航导览开发方案:核心技术架构与功能设计
本方案针对传统景区导航吸引力弱、互动性差等问题,融合三维建模、多源定位与AR引擎技术,实现室内外精准导航与AR互动体验。支持AR寻宝等功能,提升游客体验与景区竞争力。
351 0
|
4月前
|
存储 消息中间件 NoSQL
跟着大厂学架构01:如何利用开源方案,复刻B站那套“永不崩溃”的评论系统?
本文基于B站技术团队分享的《B站评论系统的多级存储架构》,解析其在高并发场景下的设计精髓,并通过开源技术栈(MySQL、Redis、Java)复刻其实现。文章深入讲解了多级存储、数据同步、容灾降级等关键设计,并附有完整代码实现,助你掌握大厂架构设计之道。
173 0