今天分享的内容来自阿里云弹性计算技术专家杜文彬的“ECS稳定性体系建设与最佳实践”。全文围绕阿里云ECS稳定性体系建设、云上应用稳定性最佳实践这2个主题内容进行讲解。
一、阿里云ECS稳定性体系建设
- 阿里云ECS稳定性概述
阿里云 ECS 作为提供算力的核心 IaaS 服务,承载了百万级客户的 IT 系统,阿里云深知客户将程序和数据部署在 ECS 上是源于对 ECS 的高度信任。
ECS 实例稳定性是产品的核心特性之一,就好比一辆汽车的质量,不管其性能有多优良、价格多实惠,如果频繁发生故障,则一定会非常影响用户体验,甚至威胁到司乘安全。
同样如果 ECS 频繁发生故障,导致客户业务或体验受损,也势必会辜负客户对 ECS 来之不易的信任。因此,阿里云 ECS 把实例稳定性当作产品立足之本,投入巨大资源进行稳定性能力建设,最终为客户提供稳如磐石的稳定性体验
- ECS实例稳定性系统工程
ECS 实例稳定性能力体系整体上分成基础设施支撑体系、数据和算法中台、线下预防体系、线上守护体系、客户侧联动体系以及稳定性重保体系,如下图所示:
下面将对上述各项能力进行详细说明。
- 线下预防体系
ECS 产品在上线公开对外售卖之前,会经历产品定义、硬件设计、软硬件适配、线上准入的完整线下生命周期。通过产品质量牵引,在这一阶段及早发现并解决问题进行风险预防,是提升产品稳定性的制胜关键,可以极大程度规避稳定性风险引入线上影响客户,并能够以较低的成本来进行产品稳定性改善。因而建立线下预防体系意义重大,其构成包括:产品设计、产品适配、产品验收。
- 线上守护体系
当 ECS 产品满足了准入条件,进入线上对外服务时,就需要提供持续的线上守护能力。其目标是最大程度降低非预期故障的产生,把可能的风险尽量转化为确定性的计划运维,而在非预期故障发生时能够将影响范围和时长控制在最小范围。围绕线上风险的预防、发现和处置构成了线上守护体系,其核心能力如下:
- 智能故障预测
ECS 宿主机硬件故障预测能力是进行主动运维保障实例稳定性的重要基础,为避险提供了时间上的提前量,配合热迁移或客户侧主动运维事件机制,可有效规避非预期故障。
- 高可靠性、高时效性
多维度数据源综合校验,结合精准的预测算法,避免单一维度信息噪声,确保预测结果高可靠性。实时线上监控,通过高效的日志回传和大数据计算分析能力,确保预测结果的高时效性。
- 事件驱动的自动化运维体系
弹性计算 ECS 通过系统事件构建与客户的联动体系,客户可通过查询和响应系统事件与阿里云进行联动,具体描述如下:
- 系统事件概述
系统事件由阿里云定义,用于记录和通知云资源的信息,例如运维任务执行情况、资源是否出现异常、资 源状态变化等。系统事件包括如下几种类型:
- 事件查询与响应
二、云上应用稳定性最佳实践
以上介绍了通过产品技术和服务提供的 ECS 实例稳定性核心能力,而客户侧最佳实践将会指导客户用好ECS,更加充分发挥 ECS 实例稳定性能力,保障用户业务稳定性。以下将从通用最佳实践原则和两个行业的具体最佳实践角度进行介绍。
按照用户使用 ECS 的全生命周期,通用最佳实践可划分为风险规避、问题容错、问题诊断几个大类。详细内容可参考下图:
以下将按照用户侧使用场景对上述最佳实践展开详细介绍。
- 互联网行业最佳实践
Web/APP 应用是互联网行业的典型应用场景,常见于电商、社交、文娱等行业。业务负载方面具有一定周期性和间歇性高并发的特点,例如日常业务在自然日内负载呈现峰谷效应,而在日、周、月度表现为相对稳定的同环比特征,在电商大促、社交媒体热点事件等特定场景下又呈现为突发业务负载峰值。因此,在架构层面通常采用分布式架构以便支撑高并发负载,而成本控制方面又有资源弹性管理需求。
虽然互联网行业通常具备业务层面的容错能力,但 ECS 的非预期宕机仍然可能带来业务的抖动,特别业务高峰时间段,一旦出现 ECS 宕机可能导致请求到该节点的用户受到影响。如电商秒杀场景可能下单失败、社交场景可能消息延迟等等。这类异常非常影响用户体验。阿里云经过众多互联网项目的沉淀打磨,总结了一套 ECS 在互联网行业应用场景的稳定性最佳实践。
以下结合互联网行业特点,对通用最佳实践中典型场景的落地展开详细介绍,并进行一定扩展。
- 选择合适的实例规格
- 弹性能力规划容量
基于分布式架构和合适的规格选型,结合业务负载特征分析,用户可以在云上进行方便的容量管理。
以核心后端在线计算服务为例,常态下应对稳态负载可以采用非共享型实例,配合固定模式、健康模式弹性伸缩策略;可采用动态模式弹性伸缩策略,弹性扩展突发性能型实例来应对业务量高峰或无规律的突发业务量。
弹性资源可以做到快速伸缩,“用时可弹出、不用可退”,简化容量管理、兼顾 ECS 稳定性与资源成本。
- 响应 ECS 系统事件
对于任何使用 ECS 的业务系统,都强烈建议用户及时响应 ECS 系统事件,自主决策计划性运维时间,避免实例风险恶化。
- 建设高可用架构
为了应对业务高并发及灵活的弹性容量管理需求,互联网行业在部署层面通常会采用分布式架构,因而比较容易构建单 ECS 实例容错能力。阿里云一个可用区一般是一套独立的 IDC 基础设施(机房供电、温控、物理网络等),可用区之间基础设施是隔离的,同地域的可用区之间通过内部专线网络打通。
- 游戏行业最佳实践
游戏业务因为转化周期短、成本控制、合服滚服架构复杂度等因素,游戏服等核心业务很少会有自身架构上的单机高可用设计,业务稳定性强依赖云厂商,且对网络延迟、宕机敏感。尤其在新游戏上线初期,部分用户对游戏服 ECS 的稳定性甚至有着“0 宕机”的极致诉求。
通用最佳实践和互联网行业最佳实践中已详细介绍的内容不再赘述,以下将介绍游戏行业针对性的最佳实践。
- 选择合适的实例规格
游戏行业通常有几类典型业务场景,需要针对游戏业务特点选择合适的规格类型,常见的游戏业务 ECS 规格选型建议如下:
- 建立应用防抖能力
游戏服务器通常对性能抖动较为敏感,单实例防抖至关重要。建议结合业务的应用场景,对于实际应用中可能出现的短期抖动时长、响应时长进行统计和分位值分析,请求超时配置可以略大于业务可接受的响应时长分位值,避免单次请求失败率过高。同时,根据业务请求成功率要求,设定合理的重试次数与重试间隔时间。
- 选择合适部署方式
- 使用部署集进行实例打散优化
相同用户的多个 ECS 实例部署在同一台物理服务器,会造成单台物理服务器宕机影响同用户的多个 ECS实例的风险。
- 使用专有宿主机进行部署优化
游戏场景通常有极致的性能和稳定性要求,诸如需要将一组游戏服和数据库实例放在同一台宿主机,进行高质量、低延迟的网络通信场景,可以通过专有宿主机进行自定义的部署规划来实现,并可自由决定主、备库实例在宿主机层面的打散,实现亲和与反亲和部署策略。
好啦!小弹的分享到此为止。我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8
【扫码填写上方调研问卷】
欢迎每位来到弹性计算的开发者们来反馈问题哦~