云原生全链路性能测试工具深度解析与应用

1. 背景

在当今数字化和微服务化时代,系统性能对于用户体验和业务完整性来说至关重要。
随着业务的复杂化,系统会越来越不稳定,同时用户对高效、稳定的服务的期望也会
不断增长。这时全链路性能测试变得愈发必要。
性能测试通常是一种测试实践,用于确定系统在特定工作负载下的响应性和稳定性。
它还可以用于调查、测量、验证或验证系统的其他质量属性,例如可伸缩性、可靠性
和资源使用情况。
全链路性能测试则是在性能测试的基础上,系统性、综合性的测试方法。旨在模拟真
实业务场景下的综合性能压力测试。

2. 产品总体介绍

2.1 当前全链路性能测试的痛点

想要对一个系统进行全链路性能测试,需要满足很多条件。
有些条件是硬性条件,软件无法解决,如:资源依赖问题,需要服务器的支持。数据
管理和隐私问题,需要后端和运维支持。环境一致性,需要架构上能支持。这些硬性
条件,虽然我们有方案并且有其它产品做为支撑,但不是本产品需要解决的。
本产品关注以下测试痛点:
场景建模:业务越复杂,建模真实业务场景就越复杂且困难。想要准确模拟复杂的业
务,并且真实测试到多个系统、服务和数据源,还需要深入理解业务流程以及各种依
赖。
工具和技术选择:合适的工具和技术,是成功测试的关键。市场上有许多不同的工具
和技术,如JMeter、Locust等,这些工具做为简单的压力测试可以满足需求,想要真
实模拟真实业务场景和流量,却是需要更多的专业且复杂的配置或者二次开发,使用
门槛高。
结果分析和解释:全链路性能测试不是一味的往高流量压测,它是需要分析与解释测
试结果的,测试结果分析与解释有助于找到系统的性能瓶颈与根本原因所在。
测试时间和成本:全链路性能测试不是仅仅在高压流量下测试一两分钟的事,它可能
需要耗费大量的时间和资源,特别是在模拟高负载情况下。着需要一定的成本,以获
得适合的测试环境。
持续集成和持续交付:在当前的快速迭代更新的微服务架构体系下,需要持续集成全
链路性能测试,一遍尽早发现系统性能问题并解决它。

2.2 产品如何解决用户痛点

EaseLoad是一款用于在云原生环境中测试微服务网站性能的在线服务。
全面安全: EaseLoad需要在生产环境中进行性能测试。因此,它可以隔离测试流量、
服务、资源、中间件以及测试期间产生的数据,以确保生产环境不会出现混乱,并最
小化性能影响。
零源代码更改:EaseLoad采用非侵入式设计,客户无需更改任何源代码。它易于部署
和运行,没有开发成本。
真实场景模拟:并行模拟大量访问站点的实际场景用户。
简单且可重用的测试用例:测试用例以YAML格式声明,可以在测试产品的生命周期内
的不同工作流中引用和重用。
快速瓶颈识别:利用EaseMonitor的强大功能,EaseLoad的测试引擎本身被设计为一种
服务,向EaseMonitor报告指标、追踪和日志。EaseMonitor报告整个调用路径和可能
的瓶颈

3. 产品介绍

3.1 产品特点

3.1.1 产品亮点

  1. 基线测试,挖掘系统最大性能潜力
  2. 测试工作流,同步/异步/延时,灵活组织工作流,高保真模拟真实流量
    3.1.2 产品理念
    根据木通原理,系统的能力近观限于最短的那一块木板。而由于分布式IT系统的复杂
    性,对于第一个独产的服务,即使用对单个服务的性能测试,但是易确定服务间调用
    的比例关系,因此不知道那一个服务或节点是短板。另一方面,真实环境的流量特定
    也不易确定,因此对单点服务的压测模型只能进行估计,和真实情况有差距。对于大
    型的IT系统,由于系统的演化,甚至很难分析列举出一个业务服务接口倒底涉及哪些
    后端服务和资源。所以为了测量整个系统的性能特性和瓶颈点,需要实行全链路性能
    测试。
    全链路性能测试应满足如下产品理念:
  3. 尽可能的复现真实的流量特点,触发潜在的性能问题
  4. 数据安全隔离,保障生产环境安全
  5. 实施成本低,部署、运行简单直观,不增加现的开发、测试团队负担
  6. 云原生, 满足分布式、弹性伸缩、可管理性及可观没性等云原生特征,并且易
    于和其它云原生组件和服务集成。

3.2 产品的主要功能

前文我们已经阐述,MegaLoad 产品主要为用户解决的痛点,和如何为用户解决这些问
题。我们将在这一章中讨论关于MegaLoad 是通过什么样的产品功能来具体解决用户问
题的

3.2.1 全链路压测先决条件

3.2.1.1 业务特性调研

企业的业务场景会影呼对IT系统的热点。比如同样是电商平台,商超平台不同商家促
销时的订单量差别非常巨大,而物流量可以较平缓发出;外卖平台则不同,不同商家
订单量差别较小,对于物流出库要求是同等的紧急。调查业务场景及期特性非常重
要。主要的调查内容有:

  1. 企业给用户提供什么核心服务?(支撑核心商业的服务)
  2. 有哪此支撑服务?(用户互动、促销等)
  3. 业务流程、业务状态转换关系(订单、特流、业务状态等)
3.2.1.2 压测系统及监控部署

压测系统部署图如下所示:
云原生全链路性能测试工具深度解析与应用_第1张图片

  1. 全链路压测控制台 WEB前端,提供测试用例设计,压测过程控制,报表生成等
    各项用户界面功能。
  2. 全链路压测服务 使用“后端服务”,“数据库”和“压测节点”三位一体的轻
    量级服务
    a. 后端服务 通过API提供各项功能的实现。
    b. 数据库 保存全链路压测模拟数据、测试用例,压测过程控制等数据和参
    数,在这里使用了内置的etcd做为存储。
    c. 压测节点 运行压测执行工具的节点,压测工具由代理脚本及开源软件
    (Jmeter、LoadRunner等)组成。压测节点可以水平扩充以提高测试流量
    的吞吐量。
  3. 简易监控 可以一键部署到环境的各VM或物理节点。监控该节点或K8s容器。简
    易监控主要基于开源组件Promethues开发,是可选组件,如果待测试系统已经
    有全栈监控,并具备API集成能力,可以不用布署简易监控。
  4. 基线测试工具 可以模拟简单的业务处理逻辑,排除复杂的过程,以得到一个理
    想状态的吞吐量数据,分析系统的最大性能潜力。

3.2.2 EaseLoad压测服务Docker安装

3.2.2.1 获取镜像

向megaease团队获取easeload服务的镜像
megaease/easeload:latest
将镜像同步到所有节点

3.2.2.2 添加monitor环境配置

monitor的环境配置有:kafka,域名,用户名,密码

你可能感兴趣的:(压力测试,架构,运维开发,云计算,后端,云原生)