微服务压测功能支持对构建于专有网络VPC(Virtual Private Cloud)内的微服务应用进行压测。通过PTS界面的配置,可以快速实现微服务压测。本文介绍如何对Dubbo微服务进行压测。

前提条件

本地泛化调用已通过,具体操作,请参见Dubbo的泛化调用

背景信息

经典微服务架构是通过网关暴露每一个服务,且通过网络隔离来保障每个服务的安全性,因此云上微服务通常构建于安全性较高的VPC网络内。但压测VPC内的微服务应用会面临着网络隔离的难题,传统的解决方案是基于VPC网络搭建压测工具进行压测,例如JMeter压测工具。但搭建JMeter需要一定的时间成本和代码基础,且对微服务压测的支持不友好。

PTS自研的微服务压测功能可以解决这些难题,通过PTS控制台的简单配置,快速实现微服务的压测。

操作步骤

  1. 登录PTS控制台,在左侧导航栏中选择压测中心 > 创建场景
  2. 创建场景页面,单击Dubbo压测
  3. 创建微服务场景页面,填写场景名
  4. 选择微服务类型DUBBO
  5. 选择注册中心类型,然后填写相关参数。
    参数 描述 示例
    注册中心类型 包括ZooKeeper、Nacos和Redis类型。 Nacos
    注册中心地址 微服务注册中心的IP地址。格式为[ip]:[port][域名]:[port],多个注册中心之间用半角逗号(,)分隔,格式为[ip1]:[port1],[ip2]:[port2][域名1]:[port1],[域名2]:[port2]
    注意 对于微服务引擎MSE用户,注册中心地址填写方式取决于是否配置命名空间。
    • 若未配置命名空间,即选择默认命名空间DEFAULT_GROUP时,此处填写对应的注册中心地址,如XXX.nacos-ans.mse.aliyuncs.com:8848
    • 若已配置命名空间,则注册中心地址的格式为注册中心地址加上命名空间的名称。例如,若命名空间名称为TEST,则此处应填写XXX.nacos-ans.mse.aliyuncs.com:8848?namespace=TEST
    192.168.0.0:8080
    组别 Dubbo微服务组别Group。 testgroup
    版本 Dubbo微服务版本Version,默认版本1.0。 1.0
  6. 场景配置页签下,填写Dubbo服务配置信息。
    参数类别 参数 描述 示例
    基础配置 接口名 暴露服务的接口。 com.alibaba.pts.dubbo.api.DemoService
    方法名 暴露服务的方法。 sayHello
    服务参数 普通参数 需要压测服务的函数包含的普通参数。
    • 参数名称:java.lang.String
    • 参数值:${date}
    隐式参数 需要压测服务的函数包含的隐式传递参数。
    • 参数名称:setAttachment
    • 参数值:("index","1")
    出参设置 出参名 只能包含英文字母、数字和下划线(_)。 class
    来源 标记Response的解析方式,可选择以下类型:
    • Body:JSON:以JSON格式解析Response Body。
    • Body:TEXT:以TEXT格式解析Response Body。
    Body:TEXT
    解析表达式 从Response截取需要的内容,对应到当前变量。
    • JSON格式的解析同样支持数组中指定对象,如data.itemlist[0];data.itemlist[*].id导出所有ID。
    • 正则表达式可指定匹配项。常见正则表达式中使用到的字符范围示例如下:
      • 英文字母:[a-zA-Z]
      • 数字:[0-9]
      • 中文字符范围:[\u4e00-\u9fa5]
      • 中文、英文、数字:[\u4e00-\u9fa5a-zA-Z0-9]
      • 指定符合条件的字符个数:[a-zA-Z]{2,4}表示2~4个字符;{2}表示字符个数为2个。
    说明 尽量不要使用*,否则0个也会匹配到。
    class
    第几个匹配项 当表达式匹配到多处时,指定第几个字符串作为出参。从0开始,n表示第n个;若想随机取匹配对象,填写random。 1
    检查点设置 检查点类型 配置检查点可以从业务维度判断请求是否成功。检查点可分为响应Body和出参。多个检查点之间是“与”的关系。 出参
    检查对象 选择检查的对象。 class
    检查条件 包括包含不包含等于等检查条件。 包含
    检查内容

    输入期望检查的内容。

    JSON
    说明

    若需要设置其他文件参数,可单击页面下方的数据源管理。具体操作,请参见使用文件参数

  7. 单击施压配置页签,设置微服务所在的网络配置,例如区域、VPC、安全组和交换机。
    参数 描述
    压力来源 本次压测使用的网络类型。
    VPC信息 选择VPC压测后,需补充的目标服务所在的VPC信息。
    注意 对于微服务引擎MSE用户,若使用阿里云VPC内网进行压测,在填写VPC信息时,需填写目标服务网络环境所在的VPC,即ECS所在的VPC、安全组和交换机。
    并发数 指同时发送压测请求的用户数量。
    指定IP数 指定施压引擎的数量。引擎数增加会带来计费的增加,计费并发=引擎数×500。
    说明
    • 增加引擎数会带来计费的增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
    • 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
    • 为合理利用资源,增加后的引擎数不超过100且不超过配置的并发数。
    • 如当前无法满足,请提交工单申请扩容。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时,如有特殊需求,请提交工单
    流量模型 压测的流量模型包含以下三种:
    • 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
    • 阶梯压力:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
    • 固定压力:以配置的固定并发值进行施压。
  8. 可选:创建场景页面下方,单击调试场景
    可对配置的场景进行调试,验证配置是否正确。更多信息,请参见JMeter、微服务场景调试界面说明
  9. 单击保存去压测,在对话框中单击确定

后续步骤

查看压测报告,具体操作,请参见查看微服务压测报告