全链路压测(11):聊聊稳定性预案

简介: 从业务角度来讲,无论技术做任何的改动和优化,最终的目的都是为了业务目标的达成。而系统的稳定性,无论从用户体验还是业务目标达成的角度来看,都是不可忽视的一环。

前言


全链路压测出现的初衷是阿里为了解决双十一线上系统在峰值流量冲击下的稳定性和可用性问题,在后续落地及不断的演进过程中,出现了很多技术领域的最佳实践。


前面的文章也为大家介绍了很多全链路压测从项目启动到准备阶段的很多细节。这篇文章,我想谈谈在全链路压测落地演进过程中,一个很重要的实践——稳定性预案。


什么是预案?


通过字面意思来看,预案通俗易懂,即针对预期可能出现的问题所设计的解决方案。


放在全链路压测领域,其实稳定性预案并非全链路压测体系中的一部分,而是可以看做一个独立的细小领域,但又和全链路压测有重要的联动关系。


因为全链路压测大多在生产环境开展,虽然可以通过流量识别和数据隔离来保证不对线上业务和数据造成影响,但毕竟是在生产环境执行,有些问题难以避免。


预案有哪些类型?


从我近几年的实践经验来说,预案大概分入如下几种类型:


日常预案


  1. 线上服务发布失败的回滚方案;
  2. 线上服务负载过高的监控告警通知方案;
  3. 用户无感知的灰度发布、无损发布等方案;
  4. 限流、降级、熔断等服务治理领域的技术方案;
  5. 线上服务防止黑客攻击的各种高防和安全应对方案;


大促活动预案


一般大促活动都是指类似618、双11等营销活动,视业务情况而定。常见的有:


  1. 日志归档;
  2. 消息降级(小红点);
  3. 评论关闭(商品评论、社区动态评论);
  4. 本地缓存(降级和熔断后的兜底手段);
  5. 缓存预热(优惠券、商品、用户地址);
  6. 定时job错峰(job任务错开流量高峰);
  7. 依赖解耦(核心服务的强依赖解耦,避免雪崩);
  8. 服务分组(核心服务、核心MQ按照权重优先级做分组隔离);
  9. 客户端限流浮层(针对服务限流后用户频繁点击导致的流量放大场景);


业务稳定性预案


  1. 商品推荐临时关闭;
  2. 线上对账和防资损校验;
  3. 调整商品退货退款到账时间;


PS:预案体系成熟后,可通过平台开关的方式进行配置,收拢权限,避免人为操作导致的问题。


预案的作用是什么?


从技术角度来讲,任何一个细微问题都可能导致生产出现重大故障,因此针对性的设计对应的预案就显得至关重要。


从业务角度来讲,无论技术做任何的改动和优化,最终的目的都是为了业务目标的达成。而系统的稳定性,无论从用户体验还是业务目标达成的角度来看,都是不可忽视的一环。


因此预案的作用就呼之欲出:从技术的角度出发,为业务目标的达成提供多维度的稳定性保障


如何制定预案?


上面列举了很多常见的稳定性预案,在我看来制定预案是一个经验+评估的问题。常见的制定预案的方式如下:


  1. 从日常的线上问题着手,汇总问题和解决方案,复盘得到TODO项和落地验证;
  2. 从系统设计和业务需求分析角度开始,前置性的进行评估分析,设定对应的预案;
  3. 从用户体验和用户行为分析角度出发,优化用户操作过程和交互逻辑,避免类似问题;


最后的经验之谈


  1. 所有预案都需要经过评估分析;
  2. 没有验证的预案都是潜在的风险;
  3. 预案都是有风险和成本的,避免过度设计;
  4. 预案的最终目标是保障业务目标达成,而非秀技术;
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
11月前
|
监控 测试技术 UED
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
196 0
|
11月前
|
域名解析 网络协议 数据可视化
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
151 0
|
11月前
|
SQL 监控 关系型数据库
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
143 0
|
数据可视化 测试技术 定位技术
全链路压测(14):生产全链路压测SOP
从实践经验的角度出发,生产全链路压测在技术实现上没有太多新花样,但要在不同的业务和企业落地,就各有各的实践路径。对于没有太多经验的同学来说,全链路压测的落地,大多还是基于个人的经验和熟悉的领域,即都是在局部作战,缺乏全局的视角和可视化地图。从全局来讲,缺少适用于自己的全链路压测最佳实践。
全链路压测(14):生产全链路压测SOP
|
存储 SQL 缓存
全链路压测(13):高可用和性能优化
业务场景复杂化、海量数据冲击下,发现并解决业务系统的可用性、扩展性以及容错性问题。
全链路压测(13):高可用和性能优化
|
监控 Java 测试技术
全链路压测(12):生产压测必不可少的环节
在生产环境开展全链路压测,相对于测试环境来说风险和成本都是比较大的。因此需要一套严格的流程管控和响应机制,以及高效的团队协同体系。
全链路压测(12):生产压测必不可少的环节
|
SQL 缓存 运维
全链路压测(10):测试要做的准备工作
功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。如果考虑到成本,也可以用线下性能环境来进行验证。
全链路压测(10):测试要做的准备工作
|
运维 监控 安全
全链路压测(9):容量评估和容量规划
容量评估我在之前的文章《性能测试从零开始实施指南——容量评估篇》中已做过详细介绍,这里不多做赘述。关于容量评估,参考下面两张思维导图,更容易理解。
全链路压测(9):容量评估和容量规划
|
缓存 监控 NoSQL
全链路压测(8):构建三大模型
单机单接口的压测,可以通过梯度增加请求的方式,观察随着请求的增加,其性能表现&资源损耗的变化。在目前的微服务架构下,整体链路的性能瓶颈,取决于短板(木桶原理)。因此,单机单链路基准测试的目的,是在全链路压测开始前进行性能摸底,定位排查链路瓶颈。
全链路压测(8):构建三大模型
|
容灾 中间件 测试技术
全链路压测(7):核心链路四问
很多企业都会有自己核心的业务范围,这些核心业务也往往是主要的企业利润来源。以电商企业为例,为用户提供商品的购买服务,为商家提供商品的管理和上架及定价展示,利润大多为撮合用户和商家交易所带来的服务费以及广告等相关费用。
全链路压测(7):核心链路四问