阿里高可用架构建设实践经验

简介: 随着业务在线化互联网化的高速发展,企业对核心业务系统的稳定性、可靠性、有效性、业务连续性等有了更高的要求。采用高可用系统架构支持重要系统、为关键业务提供7x24的不间断服务,已经成为众多企业保障业务稳定、持续运转的主要选择。

1 背景

随着业务在线化互联网化的高速发展,企业对核心业务系统的稳定性、可靠性、有效性、业务连续性等有了更高的要求。采用高可用系统架构支持重要系统、为关键业务提供7x24的不间断服务,已经成为众多企业保障业务稳定、持续运转的主要选择。但如何从海量实践中提炼出值得借鉴复制的高可用架构之道,实现适合自身的高可用系统架构,是需要企业深思熟虑的问题。阿里巴巴在多年双11高并发、高可用和高客户体验要求背景下积累了相应的技术体系,本文将依据高并发用户、突发高流量场景下的真实案例,分享阿里在高可用架构建设过程中的经验总结,以期待帮助更多企业做好业务高可用建设。

2 存在的问题

2.1 非常复杂的服务端

通常从客户端到达服务端会涉及到的关键节点有CDN、动态加速、高防、应用防火墙、4/7层负载均衡、前后端服务集、缓存、数据库存储、中间件、基础设施层等等,整个链路都面临着不确定性。后端服务的服务规模化问题更是复杂和难以评估检验,这其中任何一个节点出现问题都会导致服务不可用。如何能有效地全面检验服务端吞吐能力、发现所有问题甚至是做好容量规划,具备对峰值的流控调度能力是所有企业都需要思考和应对的。

2.2 缺乏提前规划的服务能力

如果企业没有对自己的服务能力进行提前规划,没有提前做好关键节点的规划,对线上的应急措施如弹性扩容、线上防护、熔断降级等都不具备,那么在面对突发问题时,就很难保证核心接口能够稳定对外服务。一旦出现问题,很多企业无法采取正确的手段,匆匆扩容非但不能解决问题,反而带来更多不可预期的问题,导致问题进一步的恶化。此外,运维侧的隐患问题如故障影响面、配置一致性、监控和根因分析相关工具、复杂人员组织的高可用程度等,如果没有足够的演练和验证方案,同样会在关键时刻出现问题。

3 高可用架构建设

3.1 架构设计

首先要实现架构可视化。服务器、存储、网络是现代云平台的基础设施。随着上云战略的推进,越来越多的企业将业务、服务、系统构建在云平台上。利用阿里AHAS的架构感知可以全面了解云上系统架构,以可视化的方式直观呈现云资源、容器和应用间分层依赖关系。

开源软件和云服务的多样性、开发语言的异构性,以及企业IT团队的组织和能力差异,都提高了标准化的复杂性。架构感知功能应运而生,通过采集和分析操作系统及第三方标准接口,捕捉进程级的调用关系,并使用特征库算法识别进程所使用的技术组件,最后在服务器、容器和进程这三个维度上以可视化的方式展示应用架构,给用户一张全面清晰的云上架构地图。围绕这张基础的视图,会持续衍生出云资源、容器和应用架构多维度的架构视图,还有搬站、重构梳理和资产管理等场景化的视图,真正做到CMDB可视化,驱动问题发现助推业务增长,释放云上的更多维度的红利。

而关于强弱依赖治理,因为强依赖本身意味着一荣俱荣,一损俱损。结合AHAS SDK的引入和预埋,一旦当平台最大吞吐能力到达瓶颈时,除了入口或者web类应用的业务峰值流量限流可以起到第一层的保护作用外,还可以将预先标记为弱依赖的服务平滑下线,从而达到节省更多资源保障核心计算能力的目的,同时还可以去除非核心对核心服务的影响,最终通过合理高效的服务降级最大程度获得业务和成本的平衡。而使用了AHAS SDK之后在编码时,只需要关心如何定义资源,即哪些方法/代码块需要保护,而不需要关注如何保护这个资源。然后通过添加规则来保护资源,规则添加即时生效。

1

图1:AHAS架构感知及可视化

3.2 容量规划

外网仿真压测:首先可以通过PTS高效快速构建同模型和量级的业务流量,对于开源主流的JMeter脚本可以直接100%兼容,对于没有现成脚本的情况可以使用PTS自研的可视化交互进行0编码编排,编排完成后从公网的各地域运营商发起,真实模拟特定业务场景下的外网流量,从而全面验证和探测云上或云下整体架构(从网络接入到应用服务内再到存储层和基础设施)的瓶颈和问题。

全链路压测:更进一步的,如果在生产环境想直接精准衡量业务容量,可以通过PTS相关解决方案使生产环境具备压测流量识别和路由到指定影子存储区域的能力,结合相关影子存储区域的准备,然后做到同样规模基础数据上的业务流量压测同样的生产环境,最终达到精准衡量线上生产环境的能力。当然,对于压测流水数据由于已经隔离开,所以可以方便安全地清理和维护。

1

图2:全链路压测核心流程

3.3 业务监控

面对复杂的应用环境和高速增长的业务,ARMS能帮助用户快速构建各种环境下完整的监控体系,实现从页面到数据库、从应用性能到基础架构资源、从IT到业务的端到端监控。减少故障排查时间,降低跨部门沟通成本,最终降低因为故障和体验差给企业带来的损失。

1

图3:ARMS业务监控体系

3.4 线上管控

对于运行态或已有应用可以通过AHAS探针形态(除AHAS SDK外更轻的方案)在不修改代码的情况下进行业务洪峰的流量强力控制、消息场景的削峰填谷,而对于结构复杂的可以将系统内或外不稳定的因素迅速降级让业务保持稳定,同时还有单机过载保护(根据RT动态调节入口流量)的兜底能力,甚至很多时候系统来不及压测或者不知道配置什么规则的时候单机智能过载保护是个很好的功能和方法。以上都在运行态和运维侧即可完成引入和控制。对于线上配置项和业务属性值通过AHAS开关模块的轻量级方案进行安全和统一管控,这部分能力即将开放,敬请期待。

1

图4:线上高可用防护布局

3.5 日常巡检

风险的提前暴露,通过Advisor智能顾问对云上主要云资源进行全面的巡检和风险识别,规则都来自于阿里云一线运维同学面向客户的技术体3系积累及阿里生态内SRE最佳实践的融合。基于前述的架构地图和用户的输入,可进行更深层次的应用/业务架构层面的巡检和建议。

3.6 常态化演练

AHAS的故障演练模块遵循混沌工程实验原理并融合了阿里巴巴内部实践的经验,基于此用户可以建立流程完整且可视化程度很高的故障演练体系,可方便地对基础资源、应用服务、容器服务和云平台4层进行超多维度的编排和定制,同时产品还提供了丰富的成熟故障经验库。从而帮助用户实现包括架构、业务、人员的全面高可用提升。故障演练在依赖治理、业务连续性提升和故障修复验证等场景中都有巨大作用。

1

图5:故障演练体系

4 阿里高可用工具

4.1 应用高可用服务AHAS

专注于提高应用高可用能力的云工具产品,提供应用架构自动探测,故障注入式高可用能力评测和一键流控降级等功能,可以快速低成本地提升应用可用性。
https://www.aliyun.com/product/ahas

4.2 性能测试PTS

面向所有技术背景人员的云化测试工具。有别于传统工具的繁复,PTS以互联网化的交互,提供性能测试、API调试和监测等多种能力。自研和适配开源的功能都可以轻松模拟任意体量的用户访问业务的场景,任务随时发起,免去繁琐的搭建和维护成本。更是紧密结合监控、流控等兄弟产品提供一站式高可用能力,高效检验和管理业务性能。
https://www.aliyun.com/product/pts

4.3 智能顾问Advisor

智能顾问Advisor根据用户情况,结合阿里云长期以来的客户侧最佳实践,基于TAM(Technical Account Management)服务体系的核心基础能力,全方位地为用户提供云资源、应用架构、业务性能及安全上的诊断和优化建议。现在,越来越多的阿里云云原生客户可以通过Advisor便捷地享受专业的TAM基础服务,更好地用好云。同时,我们也会围绕Advisor为有相关需求的客户提供专项深度的TAM服务。
https://www.aliyun.com/product/advisor

4.4 企业级高可用架构解决方案

脱胎于阿里巴巴电商业务下的高可用技术体系,经过所有的双11流量洪峰考验、日常稳定性考验,已经服务于阿里全生态并开始服务外部的企业客户,为企业提供包括营销活动支撑、整体成本控制(全链路压测、容量规划、流量控制、调度)、应急应对能力(开关和预案)、容灾逃逸能力(架构感知、故障演练、异地多活、单元化)等在内的解决方案。
https://www.aliyun.com/solution/ehasl

4.5 混沌测试工具ChaosBlade

ChaosBlade是一款遵循混沌工程实验原理,建立在阿里巴巴近十年故障测试和演练实践基础上,并结合了集团各业务的最佳创意和实践,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具。
https://github.com/chaosblade-io/chaosblade

4.6 轻量级流量控制框架sentinel

以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助客户保护服务的稳定性。
https://github.com/alibaba/Sentinel/wiki

5 总结

以上便是阿里高可用架构建设的实践经验分享。一个好的高可用架构可以以最低的成本、更灵活的方式满足企业的相关需求。而在各种各样、纷繁复杂的技术中构建最适合企业的高可用技术架构,是需要逐渐摸索和持续积累的。

作者:丁杰

阿里云智能GTS-SRE团队解决方案架构师

阿里云智能GTS-SRE团队架构师,长年负责阿里生态内支付宝、钉钉、旺旺和阿里音乐的SRE工作,近几年专注于阿里云应用高可用技术体系的产品化工作和解决方案体系构建事宜。

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

image

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
相关文章
|
4天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
13天前
|
监控 Java 测试技术
现代化软件开发中的微服务架构设计与实践
随着软件开发的发展,传统的单体应用架构已经无法满足现代化应用的需求。微服务架构作为一种新的设计理念,为软件开发提供了更灵活、可扩展的解决方案。本文将介绍微服务架构的设计原则、实践方法以及相关技术工具,并结合实例展示其在现代化软件开发中的应用。
|
2天前
|
监控 数据库 开发者
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第11天】在当今软件开发的世界中,微服务架构已经成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了设计、部署和维护微服务系统时面临的挑战,并提出了一系列实用的策略和最佳实践。我们将从服务的划分原则出发,讨论如何确保每个微服务的自治性,以及如何通过容器化和编排技术实现服务的高效运行。文章还将涉及监控、日志记录和故障恢复的策略,旨在帮助开发人员构建一个既高效又可靠的微服务环境。
|
3天前
|
缓存 负载均衡 API
微服务架构下的API网关性能优化实践
【5月更文挑战第10天】在微服务架构中,API网关作为前端和后端服务之间的关键枢纽,其性能直接影响到整个系统的响应速度和稳定性。本文将探讨在高并发场景下,如何通过缓存策略、负载均衡、异步处理等技术手段对API网关进行性能优化,以确保用户体验和服务的可靠性。
|
5天前
|
监控 API 持续交付
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第8天】在当今快速演进的软件开发领域,微服务架构已经成为实现敏捷开发、持续交付和系统弹性的关键模式。本文将探讨构建一个高效且可靠的微服务系统所必须的策略和最佳实践。我们将从服务的划分与设计原则出发,讨论如何通过容器化、服务发现、API网关以及断路器模式来优化系统的可伸缩性和鲁棒性。此外,我们还将涉及监控、日志管理以及CI/CD流程在确保微服务架构稳定运行中的作用。
|
5天前
|
敏捷开发 持续交付 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第8天】 在数字化转型的浪潮中,微服务架构已成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、优缺点以及如何在后端开发中实现高效的微服务架构。我们将通过实际案例分析,展示微服务如何帮助企业快速适应市场变化,同时保持系统的可维护性和扩展性。
|
5天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
7天前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
7天前
|
API 持续交付 开发者
构建高效微服务架构:策略与实践
【5月更文挑战第6天】随着现代软件系统的复杂性增加,微服务架构逐渐成为企业开发的首选模式。本文深入分析了构建高效微服务架构的关键策略,并提供了一套实践指南,帮助开发者在保证系统可伸缩性、灵活性和稳定性的前提下,优化后端服务的性能和可维护性。通过具体案例分析,本文将展示如何利用容器化、服务网格、API网关等技术手段,实现微服务的高可用和敏捷部署。
|
8天前
|
存储 前端开发 Java
Android应用开发中的MVP架构模式实践
【5月更文挑战第5天】随着移动应用开发的复杂性增加,传统的MVC(Model-View-Controller)架构在应对大型项目时显得笨重且不灵活。本文将探讨一种更适应现代Android应用开发的架构模式——MVP(Model-View-Presenter),并展示如何在Android项目中实现该模式以提升代码的可维护性和可测试性。通过对比分析MVP与传统MVC的差异,以及提供一个实际案例,读者将能深入了解MVP的优势和实施步骤。