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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 原来单一的技术环境开始走向分布式、分层的多组件技术架构,越来越多的组件使得保障业务稳定运行的工作也越来越艰巨。本文从容灾、容量、线上防护、演练四个维度全方位讲解如何构建一个真正的高可用体系。

QzpcVXNlcnNc576O5LmfXEFwcERhdGFcUm9hbWluZ1xEaW5nVGFsa1wzODk0MTg4MTBfdjJcSW1hZ2VGaWxlc1wxNTk1MjEzNTY3MzkxXzg3MDA1MjdGLTE0MjItNDVlMy05ODE5LUI5NjVDMjJBODc3Ny5wbmc=.png
伴随着互联网业务的高速发展,越来越多的线下场景需要转移到线上,而线上业务的量级也在飞速增长,给互联网业务的技术架构带来了严峻的挑战,原来的“一体机+数据库”的方式已经不适用于当前的主流业务,越来越来的业务开始向分布式架构和云原生架构演进。同时,原来单一的技术环境开始走向分布式、分层的多组件技术架构,越来越多的组件使得保障业务稳定运行的工作也越来越艰巨。

一、容灾

航空系统的容灾体系做得非常优秀。航空系统的容灾体系从人、飞机和环境三个维度来考虑,才能构建一套优秀的容灾方案。

从人的维度,以防万分之一的紧急情况出现的可能,每年要进行多次的模拟机训练或者实景演练。一架飞机上都会配备至少两名飞行员,二者相互合作的同时也要相互监督。

从飞机的维度,每一个航段前,光是一个绕机检查可能就有几十个项目需要检查。机检查是由地面机务人员和飞行机组分别完成,同样也是为了更仔细的检查,降低错误率。每架飞机还有短期全面检查和长期全面检查,飞机上的每一个设备都是独立的双系统在工作。

从环境的维度,气象雷达可以让飞行员感知到几十甚至几百海里范围内的天气情况。飞机防撞系统可以让飞行导航显示仪上显示正在接近的可能存在威胁的飞机。盲降系统是由地面发射的两束无线电信号实现航向道和下滑道指引,飞机通过机载接收设备,进行降落。

从航空业的容灾体系构建中我们可以发现,容灾的核心思想是基于隔离的冗余。在系统设计中,其实也经常用到冗余的机制,比如机器经常是多台、数据是多备份等。容灾的评价指标主要有两个:
一是RPO(Recovery Point Objective),即数据恢复点目标,以时间为单位,即在灾难发生时,系统和数据必须恢复的时间点要求。
二是RTO(Recovery Time Objective),即恢复时间目标,以时间为单位,即在灾难发生后,信息系统或业务功能从停止到必须恢复的时间要求。RTO标志着系统能够容忍的服务停止的最长时间,系统服务的紧迫性要求越高,RTO的值越小。

1. 业界主流容灾方案

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

业界主流容灾方案

2. 阿里AHAS

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

AHAS异地多活的产品形态

二、容量

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

1. 压测

传统的压力测试通常关注的是性能的好坏,这是一个相对模糊的概念,不需要很精准。但是在互联网的情况下, 我们需要精准地获取到一个系统的实时吞吐量,以便更好地应对突发事件。在这种情况下,压测要尽可能地模拟一个真实的环境,而不能像以往一样,在一个额外的环境去测试。压测时在流量规模、流量模型、系统环境上都需要一个尽可能真实的环境,这样才能精准做好容量规划。

传统的压测工具虽然仍在发挥作用,但是随着互联网的发展,已经越来越不能去适应互联网技术的迭代。互联网的压测有几个明显的特点:
强调流量的真实性;
压测规模要足够大;
必须简单易用,交互式压测。

当下互联网压测已经变成了一个实时的产品,方便进行实时的调控。基于这样的背景,阿里构建了基于PTS的流量引擎,大家可以在阿里云上直接使用,其特点如下:
流量真实。流量来源于全国上百城市,覆盖各运营商(可拓展至海外),真实模拟最终用户的流量来源,相应的报表、数据更接近用户真实体感;发现端到端更多更全面的问题,压测即是模拟考。
压测规模强大,可支持3kW QPS。
简单易用,门槛低。复杂场景的全可视化编排,支持自定义编排能力、指令、控制、函数等相关能力,覆盖95%以上的HTTP压测场景,和JMeter构建能力不相伯仲,同时免去复杂的理解学习成本;除了自身丰富的客户侧监控数据,还可集成云监控和ARMS监控。压测过程提供日志明细查询,配套有请求瀑布模型,压测之后的报告和问题定位更方便。结合AHAS可额外提供流量吞吐控制能力、容量水位管理、熔断降级保护功能。除了强大的自研功能,对于开源JMeter的支持也很友好,支持JMeter脚本转化为PTS压测,同样支持原生JMeter引擎进行压测。

2. 全链路压测

在实践中发现,单系统单应用的压测与真实场景之间的误差非常大,因为在压测的时候无法验证整个系统的方方面面,而且很多问题只有在真正的大流量场景下才会暴露,所以要进行全链路压测,其核心是希望未来的事件能够提前到在当前时间内发生,能够用最真实的场景来端对端的验证系统的能力和稳定性。

为了实现更好地进行全链路压测,阿里云提出了基于PTS的全链路压测解决方案,其架构如下图所示。
image.png

基于PTS的全链路压测

从压测环境、压测基础数据、压测流量(模型、数据)、流量发起和问题定位对基于PTS的全链路压测解决方案总结如下:
压测环境:对应真实的线上环境,压测结果和问题暴露都是最真实的情况,可通过压测流量全局识别、透传(影子表),或者等比隔离环境,或复用生产库(压测使用测试数据),业务挡板。
压测基础数据:构造满足大促场景的核心基础相关数据(如买家、卖家、商品信息),以线上数据为数据源,进行采样、过滤和脱敏,保持和线上一个量级。
压测流量(模型、数据):链路范围、访问量级、参数集合、基础数据的特性一起构造压测的业务模型,和真实业务情况保持一致。
流量发起:模拟全国各地真实的用户请求访问,探测站点能力。
问题定位:发起侧多维度的监控和报表,服务端可通过其他生态产品协助定位。

三、线上防护

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

1. AHAS流量防护

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

AHAS经典流量防护布局

2. AHAS针对大流量场景的保护措施

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

3. AHAS针对不同场景的措施——异常隔离

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

4. AHAS针对不同场景的措施——系统防护

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

四、演练

很多故障是一个小概率事件,但是一旦发生,所造成的损失是不可估量的,比如巴黎圣母院的火灾。互联网业务也是一样,小概率的故障也可能带来不可挽回的经济损失,甚至是法律风险。因此,故障演练是一个完备的容灾体系所必需进行的一步。

1. 企业为什么需要做故障演练?

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

2. 企业引入故障演练遇到的常见问题

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

3. 阿里的故障演练方案

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

阿里故障演练历程

4. AHAS故障演练

AHAS故障演练的产品架构如下图所示,其定位是一款简单、安全、低成本的故障演练工具,能够帮助用户快速实施演练并发现问题。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
相关文章
|
3天前
|
运维 Cloud Native 持续交付
构建未来:云原生技术在企业数字化转型中的关键作用
【4月更文挑战第21天】 随着企业逐渐转向数字化运营,云原生技术以其独特的优势成为了推动转型的核心力量。本文将探讨云原生技术如何通过提供灵活、可扩展的解决方案来帮助企业应对不断变化的市场需求,同时确保系统的可靠性和安全性。我们将深入分析容器化、微服务架构、持续集成与持续部署(CI/CD)等关键技术,并讨论它们如何共同作用于企业的云原生旅程。
18 5
|
1天前
|
Cloud Native Serverless 开发者
阿里云助力开发者创新:探索云原生技术的新境界
阿里云开发者社区推动云原生技术发展,提供丰富产品(如容器服务、Serverless、微服务架构、服务网格)与学习平台,助力企业数字化转型。开发者在此探索实践,共享资源,参与技术活动,共同创新,共创云原生技术新篇章。一起加入,开启精彩旅程!
37 2
|
3天前
|
Cloud Native API 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第21天】 随着企业加速其数字化转型的步伐,云原生技术已迅速成为推动创新和实现敏捷性的基石。本文深入探讨了云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及声明式API。通过分析这些技术的协同效应,揭示了它们如何共同促进系统的可伸缩性、弹性和维护性,进而支持企业在不断变化的市场环境中保持竞争力。
10 1
|
3天前
|
敏捷开发 Cloud Native 持续交付
构建未来:云原生架构的进化之路
【4月更文挑战第21天】随着数字化转型的深入,企业对IT基础设施的要求日益提高。云原生技术以其灵活性、可扩展性和敏捷性成为推动创新的重要力量。本文将探讨云原生架构的核心组件,分析其如何助力企业实现快速迭代和高效运营,并预测云原生技术的发展趋势。
|
6天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在企业数字化转型中的关键角色
【4月更文挑战第18天】 随着企业加速其数字化转型的步伐,云原生技术已成为推动创新与维护企业敏捷性的基石。本文将深入探讨云原生的概念、核心技术以及如何在企业环境中实现有效部署。我们将剖析容器化、微服务架构、DevOps和持续集成/持续部署(CI/CD)等关键技术,并讨论它们如何共同塑造一个灵活、可扩展且高效的云环境。文章还将展示通过采用云原生实践,企业能够如何优化资源利用、加快产品上市时间,并提供一流的客户体验。
|
6天前
|
Cloud Native 持续交付 云计算
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第18天】 随着企业加速迈向数字化,云原生架构成为推动创新与效率的催化剂。本文深入探讨了云原生技术如何助力企业实现敏捷开发、自动化运维和无缝可扩展性,以及它如何塑造着云计算的未来。我们将通过具体案例分析,揭示云原生架构在处理复杂系统时的灵活性和可靠性,并展望其对业务连续性和安全性的积极影响。
13 1
|
9天前
|
Cloud Native 持续交付 API
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第15天】 随着企业加速其数字化转型的步伐,云原生架构已经成为推动创新和实现敏捷性的关键技术。本文深入探讨了云原生技术如何助力企业在竞争激烈的市场中保持领先地位,包括它的核心组件、实施策略以及面临的挑战。通过实际案例分析,我们揭示了企业如何利用云原生架构来优化资源使用、提高开发效率和加强系统的稳定性与安全性。
|
10天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第14天】 随着企业加速迈向数字化,云原生架构成为支撑其转型战略的核心技术之一。该文章深入探讨了云原生技术如何通过提供灵活、可扩展的解决方案来满足现代业务需求。分析了容器化、微服务、持续集成和持续部署(CI/CD)以及DevOps文化对于构建和维护高效、可靠的云基础设施的重要性。同时,讨论了企业在采用云原生架构时可能面临的挑战,并提出相应的策略以克服这些障碍。
|
1月前
|
人工智能 监控 Cloud Native
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
iLogtail 2.0 来了;通义灵码下载量破百万丨阿里云云原生 2 月产品月报
|
2月前
阿里云云原生恭祝大家新年快乐!
阿里云云原生恭祝大家新年快乐!