随着互联网的发展,各行业均在大力开展数字化转型,这意味着传统线下服务均在整体线上化,各行业信息系统都在像互联网行业一样面对流量洪峰的压力。所以各行业IT系统均开始利用分布式架构增强系统应对流量洪峰的压力,但同时也带来复杂的业务流程逻辑、多种异构的服务器、纷繁复杂的开源技术中间件、跨多个单位或部门的研发运维团队,导致各类信息系统故障频发。

图 1:“十四五”数字经济发展主要指标

如何有效保障大型分布式系统的稳定性?

首先要做的,就是要对系统最大能力做到“心中有数”,即开展全链路压测,即覆盖系统全技术组件、全链路上的各部门单位的压测。

什么是全链路压测?

全链路压测是性能压测的一个升级版本。性能压测大家已经比较熟悉,是系统稳定性保障的一种手段,它的目标是测试在一定的负载下,系统长时间运行的稳定性。从具体的作用上讲,性能压测可以用于新系统上线支持、技术升级验证、业务峰值稳定性保障、站点容量规划以及性能瓶颈探测。性能压测伴随着系统开发、重构、上线到优化的生命周期。

性能测试经历了从单接口、单系统到生产全链路压测演变的3个阶段:

图 2:全链路压测的演进历程

阶段一:线下环境单接口、单系统压测阶段,大多采用简单的工具进行单接口或者单系统压测,能进行一些简单的性能问题分析,但很多时候都没有专门的测试团队,需要开发进行自主压测。

阶段二:线下环境多接口、多系统性能压测阶段,通过组建专门的性能测试团队来搭建线下性能测试平台,具备多接口、多系统的压测能力及性能问题定位能力。

阶段三:核心业务生产环境全链路压测阶段,通过在生产环境对核心业务进行全链路压测,能够模拟真实的业务场景流量,验证高并发下系统的性能表现,探知系统性能风险瓶颈,帮助系统进行性能优化、容量评估,保障核心业务系统稳定无故障。再进阶一些的会进行主动防御演练,比如降级、限流、故障演练等。

所有系统都要开展全链路压测方式

性能测试的发展最终衍生出3种市面上常见性能压测方式:传统单接口单系统压测、测试环境多接口多系统压测和生产环境全链路压测。接下来为了方便理解,笔者会以相对简单粗暴的方式来告诉大家如何选择合适的方式。以“流量高峰期总体并发访问量”作为划分依据,仅供参考:

流量高峰期总体并发访问量

适用性能压测方式

≤100人次/秒

传统单接口单系统压测

100人次/秒-1000人次/秒

线下环境多接口多系统压测

≥1000人次/秒

生产环境全链路压测

流量高峰期总体并发访问量不超过100人次/秒,系统依赖的复杂度也不高,这时性能和稳定性并不是主要矛盾, 所以在线下环境搭建一套同样的配置的软硬件来进行单接口、单系统进行压测,非常快速高效就能拿到可靠的性能指标。 在信息化时代,像ERP、CRM之类系统的使用用户并不多,即使生产环境不可用一段时间,也不会造成大的影响。

当流量高峰期总体并发访问量在500人次/秒左右,生产环境不可用一段时间,会累积造成一定的负面影响,通过在线下环境搭建一套类似的测试环境,来进行系统多接口多系统的压测,也能有效评估性能指标,只是参考价值有限。系统在生产环境运行时可能还是会出现一些故障问题,这时候适当加一些应用可用性的监控,更能缓解系统不可用导致的问题。

流量高峰期总体并发访问量超过1000人次/秒,就说明这是一个需要应对高并发场景的系统了。以2000人次/秒为例,若核心系统功能不可用超过10秒,预计将影响超过20000名的用户,这会对企业的正常运转造成非常不良的影响,甚至是直接导致经济损失。此时对系统稳定性的要求也就更高了,只有在生产环境还原真实业务场景,提前发现解决问题才能最大程度降低性能问题带来的糟糕影响。

当然应用这种方式需要面对的问题也有很多:

怎么保障生产数据不受污染?

怎么保障压测不会压挂系统?

怎么保障压测的同时业务不受影响?

......

毕竟在生产环境进行压测,数据安全、业务安全都是需要考虑的。

全链路压测怎么做?

篇幅所限,本文直接以图的形式,概括通用的全链路压测的基本流程,未来将会逐一详细描述。

同时,需注意生产环境进行全链路压测有三个核心原则是不变的,那就是一致性(Consistency)、隔离性(Isolation)和稳定性(Reliability)。

一致性是指压测环境与生产环境的高度一致性,而不是传统意义上的性能测试环境、预发环境等。在当前分布式架构下,影响性能表现的因素非常多,比如网络结构、网络带宽、系统参数、软件配置、链路拓扑、数据维度等等,所以压测环境与生产环境必须高度一致这个条件是全链路压测最重要的特征。

隔离性,主要是指压测数据(包括数据库、缓存、搜索、消息、日志等)的隔离,这部分是全链路压测的技术挑战难点之一。如果不具备数据隔离的特性,影响的不止是压测后续的清理善后工作量巨大的问题,更会严重影响其他部分工作:比如BI的数据分析异常导致管理层无法有效决策,压测和生产数据融合导致无法清理出脏数据。

稳定性,主要指压测实施过程中的要保障业务的可用性,很好理解就是不能因为接入压测导致生产的事故。

总结

全链路压测是性能测试的高阶版本,也是系统分布式化后系统建设管理单位必须要做的事情。但由于其执行过程复杂、操作门槛高,所以在开展前必须拥有完善理论指导。未来,分布式系统稳定性实验室将持续在这一领域深入研究,产出相关成果。

分布式系统如何做好全链路压测?相关推荐

  1. 性能测试能力提升最终篇-全链路压测

    目录 一.背景 二.什么时候开始考虑做全链路压测? 三.全链路压测方法 3.1 梳理核心链路的流程和边界 3.2 提供底层支持 3.3 全链路的压测数据mock 3.4 做好压测流量的降级预案 3.5 ...

  2. 分布式系统全链路压测方法

    目录 前言 测试策略 核心目标 技术选型 报告输出 总结 前言 继上一篇JMeter的基本使用介绍(使用Apache JMeter做压力测试),本文介绍如何做分布式系统的全链路压测.压测也叫基准测试( ...

  3. 高德全链路压测平台TestPG的架构与实践

    导读 2018年十一当天,高德DAU突破一个亿,不断增长的日活带来喜悦的同时,也给支撑高德业务的技术人带来了挑战.如何保障系统的稳定性,如何保证系统能持续的为用户提供可靠的服务?是所有高德技术人面临的 ...

  4. 高德地图全链路压测平台TestPG的架构与实践

    高德地图:全链路压测平台TestPG的架构与实践 转自  https://www.sohu.com/a/341414025_692515 1. 导读 2019年以来,高德DAU一个亿进入常态,不断增长 ...

  5. 阿里巴巴的全链路压测

    双十一从 2009 诞生到现在,2013 年绝对是一个分水岭. 为什么这么说?因为 2013 有了全链路压测. 每年的 11 月 11 日 00:00:00,阿里巴巴集团最紧张激动的时刻到来了.多收档 ...

  6. 高德全链路压测——语料智能化演进之路

    背景 高德地图作为日活过亿的国民级出行生活服务平台,承载着海量用户服务的是后台的超大规模集群.从用户角度,如果出问题,影响会很大.3机房异地部署造成线上环境复杂,链路复杂.在这样的条件下,如何避免因故 ...

  7. 全链路压测自动化实践

    背景 境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,我们把整个境内度假业务接入了全链路压测,来系统性地评估容量 ...

  8. 罗辑思维在全链路压测方面的实践和工作笔记

    业务的知名度越高,其背后技术团队承受的压力就越大.一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体. 提供知识服务的罗辑思维主张"省时间的获取知识" ...

  9. 美团全链路压测自动化实践

    境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,基于美团基础的压测平台Quake,我们把整个境内度假业务接入了全 ...

最新文章

  1. Java 开发Log4j 详细使用教程
  2. CentOS 设置网络(修改IP 网关 DNS)上网
  3. EMCA和EMCTL的简单用法
  4. 你根本不懂数据仓库!对于80%的大公司数仓只是地基,它才是房子
  5. Django模板语言及视图
  6. Java泛型之类型擦除
  7. 国二c语言程序设计分值分布,计算机二级分值
  8. Latex的使用模板
  9. mysql 数据库并发限制_数据库的并发控制 - zhangjianyf的个人页面 - OSCHINA - 中文开源技术交流社区...
  10. 深入原理64式:40 概率论公式总结
  11. 机器人的弊议论文_关于练字的作文800字高中(写字机器人的利弊议论文)
  12. 如何测试短信验证码平台的安全和实用性?
  13. h2o java_java – 在h2o中加载大于内存大小的数据
  14. 服务器pfx文件如何导入,linux 导入pfx 证书
  15. word2010学习
  16. uniapp返回上一级选择性刷新数据,不重新加载页面
  17. c#读取Excel表数据
  18. android app 用什么语言开发的
  19. 直积、直和与张量积简介
  20. 微信小程序调用json数据接口并解析

热门文章

  1. 在Linux部署ElasticJob-Lite-UI运维控制台
  2. PHP最全防止sql注入方法
  3. jquery img 放大可点击上一张 下一张 轮点当前页所有图片
  4. 【19调剂】中国科学院大学成都计算所2019年硕士研究生招生预调剂通知
  5. Java处理全角半角问题
  6. c语言do while什么意思,C语言中do while语句的一般形式是什么
  7. FFmpeg 4.0.2编码YUV序列为H264视频文件
  8. 2022-01-14:离建筑物最近的距离。 你是个房地产开发商,想要选择一片空地 建一栋大楼。你想把这栋大楼够造在一个距离周边设施都比较方便的地方,通过调研,你希望从它出发能在 最短的距离和 内抵达周
  9. Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介
  10. 基于vue房屋合租网站的设计与实现