微服务压测功能支持对构建于专有网络VPC(Virtual Private Cloud)内的微服务应用进行压测。通过PTS界面的配置,可以快速实现微服务压测。本文介绍如何对Dubbo微服务进行压测。
前提条件
本地泛化调用已通过,具体操作,请参见Dubbo的泛化调用。
背景信息
经典微服务架构是通过网关暴露每一个服务,且通过网络隔离来保障每个服务的安全性,因此云上微服务通常构建于安全性较高的VPC网络内。但压测VPC内的微服务应用会面临着网络隔离的难题,传统的解决方案是基于VPC网络搭建压测工具进行压测,例如JMeter压测工具。但搭建JMeter需要一定的时间成本和代码基础,且对微服务压测的支持不友好。
PTS自研的微服务压测功能可以解决这些难题,通过PTS控制台的简单配置,快速实现微服务的压测。
操作步骤
- 登录PTS控制台,在左侧导航栏中选择压测中心 > 创建场景。
- 在创建场景页面,单击Dubbo压测。
- 在创建微服务场景页面,填写场景名。
- 选择微服务类型为Dubbo。
- 选择注册中心类型,然后填写相关参数。
参数 描述 示例 注册中心类型 包括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 - 在场景配置页签下,填写Dubbo服务配置信息。
参数类别 参数 描述 示例 基础配置 接口名 暴露服务的接口。 com.alibaba.pts.dubbo.api.DemoService 方法名 暴露服务的方法。 sayHello 连接超时 Dubbo接口建立连接的超时时间。 5000 响应超时 Dubbo接口获取响应的超时时间。 20000 服务参数 普通参数 需要压测服务的函数包含的普通参数。 - 参数名称: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 说明若需要设置其他文件参数,可单击页面下方的数据源管理。具体操作,请参见使用文件参数。
- 单击施压配置页签,设置微服务所在的网络配置,例如区域、VPC、安全组和交换机。
参数 描述 压力来源 本次压测使用的网络类型。 VPC信息 选择VPC压测后,需补充的目标服务所在的VPC信息。 注意 对于微服务引擎MSE用户,若使用阿里云VPC内网进行压测,在填写VPC信息时,需填写目标服务网络环境所在的VPC,即ECS所在的VPC、安全组和交换机。并发数 指同时发送压测请求的用户数量。 指定IP数 指定施压引擎的数量。引擎数增加会带来计费的增加,计费并发=引擎数×500。 说明- 增加引擎数会带来计费的增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
- 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
- 为合理利用资源,增加后的引擎数不超过100且不超过配置的并发数。
- 如当前无法满足,请提交工单申请扩容。
压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时,如有特殊需求,请提交工单。 流量模型 压测的流量模型包含以下三种: - 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
- 阶梯递增:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
- 固定压力值:以配置的固定并发值进行施压。
- 可选:在创建场景页面下方,单击调试场景。可对配置的场景进行调试,验证配置是否正确。更多信息,请参见JMeter、微服务场景调试界面说明。
- 单击保存去压测,在对话框中单击确定。
后续步骤
查看压测报告,具体操作,请参见查看微服务压测报告。