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

前提条件

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

背景信息

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

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

操作步骤

  1. 登录PTS控制台,在左侧导航栏中选择创建场景 > 创建微服务场景
  2. 创建微服务场景页面,填写场景名
  3. 选择微服务类型DUBBO
  4. 选择注册中心类型,然后填写相关参数。
    参数 描述 示例
    注册中心类型 包括Zookeeper、Nacos和Redis类型。 Nacos
    注册中心 微服务注册中心的IP地址。格式为[ip]:[port][域名]:[port],多个注册中心之间用半角逗号(,)分隔,格式为[ip1]:[port1],[ip2]:[port2][域名1]:[port1],[域名2]:[port2] 192.168.0.0:8080
    组别 Dubbo微服务组别group。 ls
    版本 Dubbo微服务版本version,默认版本1.0。 1.0
  5. 场景配置页签下,填写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
    说明

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

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

后续步骤

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