云原生高可用技术体系构建

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 来自阿里云的工程师游骥为大家带来关于云原生技术体系中高可用的一些最佳实践分享。

以下是视频内容的精华整理。

伴随着互联网业务的高速发展,越来越多的线下场景需要转移到线上,而线上业务的量级飞速增长,也给互联网业务的技术架构带来了严峻挑战,原来的“一体机+数据库”的方式已经不适用于当前的主流业务,越来越来的业务开始向分布式架构和云原生架构演进。同时,原来单一的技术环境开始走向分布式、分层的多组件技术架构,越来越多的组件使得我们保障业务稳定运行的工作也越来越艰巨。
依据阿里云的实践经验,将以下四个维度做好了才能真正构建一个高可用体系,下文从这四个维度介绍如何构建一个云原生高可用技术体系。
容灾:切流,同城双活,异地多活;
容量:全链路压测,瓶颈探测,容量规划;
线上防护:流量防护,开关预案,流量调度;
演练:故障演练,容灾演练,预案演练。

一、容灾

航空系统的容灾体系做的是非常优秀的。如下图所示,航空系统的容灾体系从人、机和环境三个维度来考虑,才能构建一套优秀的容灾方案。
image.png
从航空业的容灾体系构建中我们可以发现容灾的核心思想——冗余。在系统设计中,其实我们也经常用到冗余的机制,比如机器经常是多台的、数据是多备份的等等。
容灾的评价指标主要有两个:
RPO:Recovery Point Objective,即数据恢复点目标,以时间为单位,即在灾难发生时,系统和数据必须恢复的时间点要求;
RTO:Recovery Time Objective,即恢复时间目标,以时间为单位,即在灾难发生后,信息系统或业务功能从停止到必须恢复的时间要求;RTO标志系统能够容忍的服务停止的最长时间,系统服务的紧迫性要求越高,RTO的值越小。

(一)业界主流容灾方案

如下图所示,业内主流的容灾方案最早是异地冷备的方式,后来演进到同城双活方式,最后不断发展成为“两地三中心”。
image.png

(二)阿里AHAS

阿里AHAS容灾方案使用的是比“两地三中心”走的更靠前的“异地多活”方案,在所有的数据中心都能提供服务的同时,RPO和RTO都能做到分钟级甚至秒级。下图是阿里AHAS的产品形态,AHAS在13年之后就开始大规模在阿里内部使用,并且作为高可用平台的一个核心模块,开始服务外部客户。AHAS通过异地多活,能够真正做到对于宏观架构的容灾能力,能够抵御大规模的失败场景,比如一个城市的机房出了故障,可以很轻易的把流量实时切换到另外一个机房。
image.png

二、容量

互联网业务下,流量的不确定性非常明显,经常会出现比如微博的热点事件、阿里的双十一、12306的火车票放购等事件。在这种场景下,如何做好容量规划,就变得至关重要。

(一)压测

传统的压力测试,我们通常关注的是性能的好坏,是一个相对模糊的概念,不需要很精准。但是在互联网的情况下, 我们需要精准的获取到一个系统的实时吞吐量,以便能更好的应对突发事件。在这种情况下,压测必须要尽可能的模拟一个真实的环境,而不能像以往一样,在一个特殊的环境去测试,压测时在流量规模、流量模型、系统环境上都需要一个尽可能真实的环境,这样子才能在故障发生时从容应对。
image.png
传统的压测工具虽然仍在发挥着作用,但是随着互联网的发展,却越来越不能去适应互联网技术的迭代。互联网的压测有着几个特点:
强调流量的真实性;
压测规模要足够大;
必须简单易用;
如今的互联网压测已经变成了一个实时的产品,方便进行实时的调控。基于以上,阿里构建了基于PTS的流量引擎,大家可以在阿里云上直接使用,其特点如下图所示。
image.png

(二)全链路压测

在实践中,我们发现单系统单应用的压测与真实场景之间的误差非常大,因为在压测的时候无法验证整个系统的方方面面,而且很多问题只有在真正的大流量场景下才会暴露,所以要进行全链路压测,其核心是希望未来的事件能够提前的在当前时间内发生,能够用最真实的场景来端对端的验证系统的能力和稳定性。
image.png
为了实现更好的全链路压测,阿里提出了基于PTS的全链路压测,其架构如下图所示。
image.png
从压测环境、压测基础数据、压测流量(模型、数据)、流量发起和问题定为对基于TPS的全链路压测解决方案总结如下:
image.png

三、线上防护

线上防护对于容灾体系来说也是一个非常重要的环节。随着分布式技术的应用,节点越来越多,技术越来越复杂,出错的机会也相对增大;同时,在互联网的条件下,业务的发布也越来越频繁,bug也会随之增多;最后,互联网的条件下,我们随时都面临着一些不确定事件、流量冲击等等,我们不能奢望每次出现故障的时候都有人工来进行干预,因此我们希望系统自身有一定的防护能力,能够让自身在任何环境下都能有最佳的工作状态。

(一)AHAS流量防护

流量防护在阿里巴巴广泛应用于各种场景,比如双十一峰值流量、秒杀活动、物流、订单处理、商品查询、付款等等。同时,阿里也成功的将流量防护能力融合到了云产品AHAS(Application High Availability Service,应用高可用服务)中。AHAS涵盖了阿里多年来在应用高可用服务领域的技术沉淀,包含架构感知、流量防护、故障演练和功能开关四大独立的功能模块,如下图所示,AHAS构建了一个从入口到最后端的一个完整的防护体系。
image.png

(二)AHAS针对大流量场景的保护措施

流量防护最首先需要考虑的就是对大流量场景的保护,比如url,服务提供方,重点业务等,突然出现超乎预期的大流量,基于AHAS可以做如下防护措施:
(1)如果有性能压测,可以精准设置QPS阈值,有了QPS阈值,可以用来限流,避免出现超负载的流量;
(2)如果没有性能压测,也可以通过秒级监控,实时设置阈值;
(3)支持高阶功能:流控模式支持直接、关联、链路,流控方式支持快速失败、Warm UP、排队等待。
image.png

(三)AHAS针对不同场景的措施——异常隔离

在特定未可知的场景,可能出现不稳定因素,例如慢SQL,甚至死锁,导致整个应用越来越慢,甚至整个应用没有响应,这时候要对异常流量进行隔离,以免影响到正常的流量。
image.png

(三)AHAS针对不同场景的措施之系统防护

在某些场景下,比如系统的负载CPU飙升,系统没有反应,来不及定为具体哪个接口导致这个原因,这时候AHAS提供了一个终极大招:系统保护。系统保护就是当系统负载比较高的时候,会自动根据入口流量和系统的负载取得一个动态的平衡,保证系统不会恶化的同时,同时处理最大的入口请求。但是这种情况下,系统对各种流量都是平等的,无法设置流量的优先级。

image.png

四、演练

很多故障是一个小概率事件,但是一旦发生,所造成的损失是不可估量的,比如巴黎圣母院的火灾。同样的,互联网业务也是一样,小概率的故障也可能带来不可挽回的经济损失,甚至是法律风险,系统崩溃了,痛的可能不仅是股价,更重要的是信任和用户流失。因此,故障演练是一个完备的容灾体系所必须进行的一步。

(一)企业为什么需要做故障演练

如果一个业务系统的流量很小且趋于稳定,那么是没有必要进行故障演练的,但是如果一个企业处于高速发展中,业务发展快,有大量的稳定性技术债,其业务系统不断的变化,甚至今天的形态跟昨天的形态都不一致,架构也日益复杂,那么故障演练就是十分必要且必需的。因为每个环节的不确定因子都是累积的,如果不进行故障演练,最后一旦发生故障,极大可能会对系统造成严重破坏。进行故障演练,还可以培养企业的人员故障处理经验,增强人员的应急能力。
image.png

(二)企业引入故障演练遇到的常见问题

在企业进行故障演练的时候,经常会遇到一些问题,比如如何设计组织架构?如何选择技术方案?如何落地演练实践?更多的问题见下图。在解决这些问题的时候,我们需要注意一个问题就是如果业务牵涉到资金,就要做一个清晰化的深层评估,不要因为演练导致出现资金上的亏损,比如在演练中用到的收费内容(例如短信等)我们要考虑周全。
image.png

(三)阿里的故障演练方案

如下图所示,阿里自己有着一套完整的故障演练方案,一开始也是通过一些工具或者脚本来进行,在2016年之后才开始将通用的故障模式沉淀为系统,之后在2018年将内部沉淀多年的实践正式在阿里云商用,2019年时将沉淀多年的故障注入场景正式开源,成为国内首个混沌工程开源产品。
image.png

(四)AHAS故障演练

AHAS故障演练的产品架构如下图所示,其定位是一款简单、安全、低成本的故障演练工具,能够帮助用户快速实施演练并发现问题。
image.png
从产品角度来讲,AHAS故障演练产品有两个特色:可视化和安全。通过可视化功能我们可以将演练过程中的系统指标直观展示,可以“边演练,边观察”;另外,AHAS还可以指定保护策略,自动触发并终止演练,避免系统因演练而引发的预期外故障。
image.png
AHAS和PTS都可以在阿里云的平台上直接使用,大家感兴趣的话可以到阿里云官网进行更详细的了解。

关键词:高可用技术体系,容灾,容量,全链路压测,线上防护,故障演练,AHAS,PTS

目录
相关文章
|
6天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
6天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
1天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
1天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
6天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
6天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
7天前
|
Cloud Native 持续交付 云计算
云原生技术的崛起与未来展望
本文探讨了云原生技术的核心概念、发展历程及其在现代IT架构中的关键作用。随着云计算的普及,云原生作为一种优化云应用构建和部署的方法,正逐渐成为企业数字化转型的重要推力。文章分析了容器化、微服务、持续集成/持续部署(CI/CD)等关键技术如何支撑起灵活、高效、可扩展的云原生架构,并讨论了面临的挑战与未来的发展趋势。
20 2
|
8天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
16天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
30 3
|
17天前
|
Cloud Native 持续交付 云计算
云原生架构的演进与挑战
随着云计算技术的不断发展,云原生架构已成为企业数字化转型的重要支撑。本文深入探讨了云原生架构的概念、发展历程、核心技术以及面临的挑战,旨在为读者提供一个全面了解云原生架构的视角。通过分析Kubernetes、Docker等关键技术的应用,以及微服务、持续集成/持续部署(CI/CD)等实践案例,本文揭示了云原生架构在提高应用开发效率、降低运维成本、增强系统可扩展性等方面的显著优势。同时,也指出了云原生架构在安全性、复杂性管理等方面所面临的挑战,并提出了相应的解决策略。