全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
性能测试 PTS

串行实践

更新时间:2017-08-10 17:58:10

对于同一个业务系统,链路和链路之间存在一定的逻辑关系。链路串行主要适用于这种存在参数依赖的场景。建议不要将只是逻辑上存在依赖的链路串行起来。

模型梳理

以某商城系统抽奖活动为例说明,本次活动会引导用户进入首页进行抽奖,预估的访问首页的峰值 TPS 为 10000,其中有 8000 TPS 进行了抽奖,抽中的概率为 50%,那么会有大概 4000 TPS 对商品进行浏览,根据历史的数据用户下单付款的概率在 10% 左右。

我们可以抽象出“首页”“抽奖”“查看详情页”“下单”等四个业务链路,从业务的维度来说存在一定的逻辑关系,但是我们进一步分析可以发现,除了首页之外,“查看详情页”和“下单”都依赖“抽奖”的结果。因此可以将后面三条链路串行起来。

商城抽奖活动

串行配置

在场景中链路数超过 1 的时候,会出现链路串行关系的配置区域。串行操作:

  1. 配置链路关系,使用“.”按照串行顺序将链路 ID 分隔,比如“446.88.157”。

  2. 单击添加串行关系

串行配置

场景中可以不包含链路串行关系,也可以包含多个,但同一个链路不能同时被两个串行关系引用。

数据构造

链路串行起来的主要目的是为了参数的透传,例如:

  • 抽奖:返回 JSON 包含抽中的商品 ID

    1. 请求URL: http://xxxx.com/lottery.json
    2. 出参:
    3. {
    4. code: 0, msg: "SUCCESS",
    5. data: {itemId: 123456}
    6. }
  • 详情页:入参是商品 ID,返回详情页面

    1. GET请求: http://xxxx.com/item/123456/detail.html
  • 下单:入参商品 ID 和其他的一些参数

    1. POST请求: http://xxxx.com/buy.do?token=xxxxx
    2. 参数:itemId=123456&...

系统支持通过识别 URL 和参数文件中的占位符来进行数据替代:

Response 占位:格式为“{result:key}”,目前仅支持 JSON 格式的 Response。

在 URL 或者参数文件中如果存在这种类型的占位符,系统会自动从前置的所有链路 Response 中依次寻找 Key 为key的值进行占位符替换,如果没有找到则使用空字符串替换。

key值支持 JSON 对象的递归寻找,比如 {data: {itemId: 123456}}。如果需要引用itemId的值,那么key可以写成 data.itemId,最终占位符为 {result:data.itemId}

  • 抽奖链路

    1. 请求URL: http://xxxx.com/lottery.json
  • 详情页链路

    1. GET请求URL: http://xxxx.com/item/{result:data.itemId}/detail.html
  • 下单链路

    1. POST请求URL: http://xxxx.com/buy.do?token=xxxxx
    2. 参数文件:
    3. itemId={result:data.itemId}&userId=1&...
    4. itemId={result:data.itemId}&userId=2&...
    5. itemId={result:data.itemId}&userId=3&...
本文导读目录