如何集成PTS的OpenAPI搭建压测平台
本文主要介绍如何使用PTS的OpenAPI搭建一个压测平台,以及开放的API种类、利用API能实现的功能、如何使用API等信息。文末附有一份详细的使用教程,可以帮助您实现填空式编程。
基本概念
- 场景:PTS以场景为中心,每个场景都有唯一标识的场景ID。一次压测的对象就是一个场景,每次压测都有唯一标识的任务ID,一个场景可以包含一个或多个链路,一个链路可以包含一个或多个API,如下图。更多信息,请参见压测场景的结构和数据分配和创建压测场景。
- 链路:指一组压测API的有序集合(类似于事务),具有业务含义。压测API之间只有在同一个串联链路中才能进行数据传递。两个不同的串联链路之间相互独立,通常不会存在参数的传递依赖(如有必要可以使用数据导出指令)。
- API:指由用户行为触发的一条端上请求。压测API是场景压测中的必需元素,用来定义串联链路中每个阶段URL的具体信息。例如,登录电商网站、查询商品详情、提交订单等,分别对应一次用户行为中的多个请求API。
依赖
PTS的OpenAPI所有Maven依赖如下,最新版本请在Maven公网地址查询。
重要 aliyun-java-sdk-pts的4.0.0版本已废弃,请勿使用。
<!--createPtsScene/modifyPtsScene需要的实体类;savePtsScene不需要-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>pts-api-entity</artifactId>
<version>1.0.1</version>
</dependency>
<!--PTS Java SDK依赖。-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>pts20201020</artifactId>
<version>1.8.15</version>
</dependency>
<!--阿里云核心库。-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.2</version>
</dependency>
优势
使用OpenAPI的优势如下:
- 直接通过引入Pom的方式编码调用,实现快速构建场景、启动压测、获取压测报告。
- 提供场景结构实体类二方包,完美解决场景结构复杂导致的构造创建场景接口入参繁琐的问题。
- 针对场景主要接口,提供最全样例代码,基本可以实现填空试编程。
功能
PTS以场景为中心,开放六大类接口,如下图所示。更多信息,请参见API概览。
- 编辑:实现场景的增、删、改、查各种操作。为了方便创建压测场景,同时提供了场景实体类(pts-api-entity二方包中的Scene类),帮助您快速构建创建场景的入参。
- 调试:实现场景的压测前调试。调试过程中可以通过压测数据接口获取调试结果数据,判断待压测API是否能连通。
- 执行:实现场景的启动、停止。调试结束,通过启动接口,实现一键启动压测,并在压测过程中,可以随时停止压测。
- 数据:获取压测和调试过程中的实时数据。在压测过程中,可以轮询调用查询场景运行时数据接口,得到压测结果。
- 报告:查询压测最终报告数据。PTS以场景为中心,可以通过某一个场景ID,查询其压测产生的所有报告;也可以通过报告ID查询其报告详情。
- 基线:实现性能基线的增、删、改、查各种操作。每个PTS原生场景都可以设置一个性能基线,基线数据包括RT、TPS、成功率等重要指标。通过对比场景的性能基线数据和压测报告数据,可以判断该次压测是否达标,这也是集成OpenAPI到能效工具、发布平台的重要意义。
使用方法
OpenAPI的设计思路遵循场景各阶段:编辑场景>调试压测>执行压测>获取压测实时数据>获取压测报告>设置性能基线,关于pts-api-entity实体类中的二方包中(BuildSceneEntity、PtsExample)的详细样例和具体使用教程,请参见样例教程。
样例教程包含以下内容:
- BuildSceneEntity:创建场景时,构建场景实体类。包括链路、API、施压配置、文件参数等信息。
- PtsExample:各个API的调用样例。包括创建场景、启动压测、获取数据,获取报告等信息。
压测流程如下图所示。