Skip to content

如何使用DevOps运维平台对接的公共接口

HaojunRen edited this page Sep 24, 2024 · 27 revisions

目录

文档只列出部分重要和常用的接口,更多接口请访问

服务接口

查询注册中心类型

描述

查询注册中心类型

请求URL

http://localhost:6001/service/discovery-type

请求类型

GET

请求参数

返回参数

参数类型 描述
String 注册中心类型。取值:
Nacos
Consul
Eureka
Zookeeper

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

查询服务组名列表

描述

查询注册中心所有服务所属组的名称列表

请求URL

http://localhost:6001/service/groups

请求类型

GET

请求参数

返回参数

参数类型 描述
List<String> 组名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据服务名查询组名

描述

根据服务名,查询注册中心该服务所属组的名称

请求URL

http://localhost:6001/service/group/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
serviceId String PathVariable 服务名

返回参数

参数类型 描述
String 组名

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

查询服务名列表

描述

查询注册中心所有服务的名称列表

请求URL

http://localhost:6001/service/services

请求类型

GET

请求参数

返回参数

参数类型 描述
List<String> 服务名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据服务类型查询服务名列表

描述

根据服务类型,查询注册中心所有服务的名称列表

请求URL

http://localhost:6001/service/service-list

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
serviceTypes List<String> RequestBody 服务类型列表。取值:
service
gateway
如果查询全部,则输入包含两者的列表

返回参数

参数类型 描述
List<String> 服务名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据组名和服务类型查询服务名列表

描述

根据组名和服务类型,查询注册中心所属组下所有服务的名称列表

请求URL

http://localhost:6001/service/service-list/{group}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceTypes List<String> RequestBody 服务类型列表。取值:
service
gateway
如果查询全部,则输入包含两者的列表

返回参数

参数类型 描述
List<String> 服务名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

查询网关名列表

描述

查询注册中心所有网关的名称列表

请求URL

http://localhost:6001/service/gateways

请求类型

GET

请求参数

返回参数

参数类型 描述
List<String> 网关名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据网关类型查询网关名列表

描述

根据网关类型,查询注册中心所有网关的名称列表

请求URL

http://localhost:6001/service/gateway-list

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
gatewayTypes List<String> RequestBody 网关类型列表。取值:
spring-cloud-gateway
zuul
如果查询全部,则输入包含两者的列表

返回参数

参数类型 描述
List<String> 网关名列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据服务名查询实例列表

描述

根据服务名,查询注册中心该服务下所有的实例列表

请求URL

http://localhost:6001/service/instance-list/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
serviceId String PathVariable 服务名

返回参数

参数类型 描述
List<InstanceEntity> 服务实例列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据组名列表查询服务名对应实例列表的哈希表

描述

根据组名列表,查询注册中心所属在该组名列表里所有的服务实例,以Map<String, List<InstanceEntity>>结构返回,Key为服务名,Value为该服务下所有实例列表

请求URL

http://localhost:6001/service/instance-map

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
groups List<String> RequestBody 组名列表,空List则返回所有组下的相关数据

返回参数

参数类型 描述
Map<String, List<InstanceEntity>> 服务名对应实例列表的哈希表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据元数据键名和服务名列表查询服务名对应单个元数据值列表的哈希表

描述

根据元数据键名和服务名列表,查询注册中心该服务列表里所有服务实例的单个元数据值列表,以Map<String, List<String>>结构返回,Key为元数据键名,Value为该服务下所有实例的单个元数据值列表

请求URL

http://localhost:6001/service/metadata-map/{metadataKey}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
metadataKey String PathVariable 元数据键名
serviceIds List<String> RequestBody 服务名列表

返回参数

参数类型 描述
Map<String, List<String>> 服务名对应单个元数据值列表的哈希表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

对于给定的service-a和service-b,查询出它们所有实例的版本号列表

元数据键名为version,服务名列表为

["discovery-guide-service-a",  "discovery-guide-service-b"]

返回的值类似为

{
  "discovery-guide-service-a": [
    "1.0",
    "1.1"
  ],
  "discovery-guide-service-b": [
    "1.0",
    "1.1"
  ]
}

如果元数据键名改为region,返回的值类似为

{
  "discovery-guide-service-a": [
    "dev",
    "qa"
  ],
  "discovery-guide-service-b": [
    "qa",
    "dev"
  ]
}

注意:IP地址和端口并不包含在元数据范畴里,为了方便起见,当metadataKeyhost:porthostport时,即可查询到IP地址和端口数据

返回目录

根据元数据查询参数对象查询服务名对应多个元数据值列表的哈希表

描述

根据元数据查询参数对象,查询注册中心该服务列表里所有服务实例的多个元数据值列表,以Map<String, List<String>>结构返回,Key为元数据键名,Value为该服务下所有实例的多个元数据值列表

请求URL

http://localhost:6001/service/metadata-map

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
metadataParameter MetadataParameter RequestBody 元数据查询参数对象

返回参数

参数类型 描述
Map<String, List<String>> 服务名对应多个元数据值列表的哈希表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

对于给定的service-a和service-b,查询出它们所有实例的“IP地址和端口 + 实例全局唯一ID + 版本号 + 区域”列表

元数据查询参数对象为(separate为分隔符,默认为" | ",如果采用默认值,可以去掉该行)

{
  "metadataKeys": [
    "host:port", "spring_application_uuid", "version", "region"
  ],
  "serviceIds": [
    "discovery-guide-service-a",  "discovery-guide-service-b"
  ],
  "separate": " | "
}

返回的值类似为

{
  "discovery-guide-service-a": [
    "192.168.31.251:3001 | 20240924-095721-931-0715-793-032 | 1.0 | dev",
    "192.168.31.251:3002 | 20240924-095715-915-8024-924-103 | 1.1 | qa"
  ],
  "discovery-guide-service-b": [
    "192.168.31.251:4001 | 20240924-095715-917-4238-777-279 | 1.0 | qa",
    "192.168.31.251:4002 | 20240924-095721-979-4503-480-801 | 1.1 | dev"
  ]
}

注意:IP地址和端口并不包含在元数据范畴里,为了方便起见,当metadataKeyhost:porthostport时,即可查询到IP地址和端口数据

返回目录

配置接口

查询配置中心类型

描述

查询配置中心类型

请求URL

http://localhost:6001/config/config-type

请求类型

GET

请求参数

返回参数

参数类型 描述
String 配置中心类型。取值:
Nacos
Apollo
Redis
Zookeeper
Consul
Etcd

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

查询规则配置

描述

根据组名和服务名,查询配置中心的规则配置

请求URL

http://localhost:6001/config/remote/view/{group}/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
全局配置下,服务名用组名来代替
服务名加指定后缀,可用于其它规则配置

返回参数

参数类型 描述
String 规则配置内容

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

查询规则配置对象

描述

根据组名和服务名,查询配置中心的规则配置对象RuleEntity,该对象只适用于蓝绿灰度发布,无损下线黑名单,故障转移

请求URL

http://localhost:6001/config/remote/view-rule-entity/{group}/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
全局配置下,服务名用组名来代替
服务名加指定后缀,可用于其它规则配置

返回参数

参数类型 描述
RuleEntity 规则配置对象

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

更新规则配置

描述

根据组名和服务名,更新配置中心的规则配置

请求URL

http://localhost:6001/config/remote/update/{group}/{serviceId}/{formatType}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
全局配置下,服务名用组名来代替
服务名加指定后缀,可用于其它规则配置
formatType String PathVariable 配置类型
xml
json
yaml
properties
html
text
config String RequestBody 规则配置内容

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

更新规则配置对象

描述

根据组名和服务名,更新配置中心的规则配置对象

请求URL

http://localhost:6001/config/remote/update-rule-entity/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
全局配置下,服务名用组名来代替
服务名加指定后缀,可用于其它规则配置
ruleEntity RuleEntity RequestBody 规则配置对象

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

解析规则配置内容成对象

描述

解析规则配置内容Xml成对象RuleEntity

请求URL

http://localhost:6001/config/parse

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
config String RequestBody 组名

返回参数

参数类型 描述
RuleEntity 规则配置对象

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

反解析规则配置对象成内容

描述

反解析规则配置对象RuleEntity成内容Xml

请求URL

http://localhost:6001/config/deparse

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
ruleEntity RuleEntity RequestBody 组名

返回参数

参数类型 描述
String 规则配置内容

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

策略接口

查询蓝绿灰度发布

描述

查询完整的蓝绿灰度发布规则策略,基于Xml对象结构

重用查询规则配置对象接口

步骤

① 调用查询规则配置对象接口,返回RuleEntity对象

② 获取RuleEntity对象中的StrategyEntity对象,即兜底规则策略

③ 获取RuleEntity对象中的StrategyReleaseEntity对象,即蓝绿灰度规则策略

④ 获取StrategyReleaseEntity对象中的List<StrategyConditionBlueGreenEntity>对象,即蓝绿条件列表

⑤ 获取StrategyReleaseEntity对象中的List<StrategyConditionGrayEntity>对象,即灰度条件列表

⑥ 获取StrategyReleaseEntity对象中的StrategyHeaderEntity对象,即内置Header

返回目录

查询版本蓝绿灰度发布

描述

查询版本蓝绿灰度发布规则策略

请求URL

http://localhost:6001/strategy/get-version-release/{group}/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
conditionStrategy ConditionStrategy

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

根据Yaml格式创建版本蓝绿灰度发布

描述

根据Yaml格式,创建API网关的版本蓝绿灰度发布规则策略,返回对应的Xml蓝绿灰度规则策略

请求URL

http://localhost:6001/strategy/create-version-release-yaml/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
conditionStrategyYaml String RequestBody 蓝绿灰度规则策略Yaml

返回参数

参数类型 描述
String 创建后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 兜底规则策略

输入conditionStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
</rule>

② 蓝绿规则策略

输入conditionStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
blueGreen:
  - expression: "#H['xyz'] == '1'"
    route: green
  - expression: "#H['xyz'] == '2'"
    route: blue

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="blue-green">
            <condition id="condition-0" expression="#H['xyz'] == '1'" version-id="route-0"/>
            <condition id="condition-1" expression="#H['xyz'] == '2'" version-id="route-1"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
    </strategy-release>
</rule>

③ 灰度规则策略

输入conditionStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
gray:
  - expression: "#H['xyz'] == '3'"
    weight:
      - 90
      - 10
  - expression: "#H['xyz'] == '4'"
    weight:
      - 70
      - 30
  - weight:
      - 100
      - 0

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="gray">
            <condition id="condition-0" expression="#H['xyz'] == '3'" version-id="route-0=90;route-1=10"/>
            <condition id="condition-1" expression="#H['xyz'] == '4'" version-id="route-0=70;route-1=30"/>
            <condition id="condition-2" version-id="route-0=100;route-1=0"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
    </strategy-release>
</rule>

④ 混合蓝绿灰度 + 内置Header规则策略

使用时候,请删除中文注释,否则会报错

输入conditionStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
blueGreen:
  - expression: "#H['xyz'] == '1'"
    route: green
  - expression: "#H['xyz'] == '2'"
    route: blue
gray:
  - expression: "#H['xyz'] == '3'"
    weight:
      - 90
      - 10
  - expression: "#H['xyz'] == '4'"
    weight:
      - 70
      - 30
  - weight:
      - 100
      - 0
header:
  xyz: 1

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="blue-green">
            <condition id="condition-0" expression="#H['xyz'] == '1'" version-id="route-0"/>
            <condition id="condition-1" expression="#H['xyz'] == '2'" version-id="route-1"/>
        </conditions>
        <conditions type="gray">
            <condition id="condition-0" expression="#H['xyz'] == '3'" version-id="route-0=10;route-1=90"/>
            <condition id="condition-1" expression="#H['xyz'] == '4'" version-id="route-0=40;route-1=60"/>
            <condition id="condition-2" version-id="route-0=0;route-1=100"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
        <header>{"xyz":"1"}</header>
    </strategy-release>
</rule>

返回目录

根据Json格式创建版本蓝绿灰度发布

描述

根据Json格式,创建API网关的版本蓝绿灰度发布规则策略,返回对应的Xml蓝绿灰度规则策略

请求URL

http://localhost:6001/strategy/create-version-release-json/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
conditionStrategy ConditionStrategy RequestBody 蓝绿灰度规则策略对象

返回参数

参数类型 描述
String 创建后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 兜底规则策略

输入ConditionStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"]
}

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
</rule>

② 蓝绿规则策略

输入ConditionStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "blueGreen": [
    {
      "expression": "#H['xyz'] == '1'",
      "route": "green"
    }, 
    {
      "expression": "#H['xyz'] == '2'",
      "route": "blue"
    }
  ]
}

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="blue-green">
            <condition id="condition-0" expression="#H['xyz'] == '1'" version-id="route-0"/>
            <condition id="condition-1" expression="#H['xyz'] == '2'" version-id="route-1"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
    </strategy-release>
</rule>

③ 灰度规则策略

输入ConditionStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "gray": [
    {
      "expression": "#H['xyz'] == '3'",
      "weight": [90, 10]
    },
    {
      "expression": "#H['xyz'] == '4'",
      "weight": [70, 30]
    },
    {
      "weight": [100, 0]
    }
  ]
}

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="gray">
            <condition id="condition-0" expression="#H['xyz'] == '3'" version-id="route-0=90;route-1=10"/>
            <condition id="condition-1" expression="#H['xyz'] == '4'" version-id="route-0=70;route-1=30"/>
            <condition id="condition-2" version-id="route-0=100;route-1=0"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
    </strategy-release>
</rule>

④ 混合蓝绿灰度 + 内置Header规则策略

使用时候,请删除中文注释,否则会报错

输入ConditionStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "blueGreen": [
    {
      "expression": "#H['xyz'] == '1'",
      // 绿(旧版本)路由链路
      "route": "green"
    }, 
    {
      "expression": "#H['xyz'] == '2'",
      // 蓝(新版本)路由链路
      "route": "blue"
    }
  ],
  "gray": [
    {
      "expression": "#H['xyz'] == '3'",
      // 稳定(旧版本)路由链路权重,灰度(新版本)路由链路权重
      "weight": [10, 90]
    },
    {
      "expression": "#H['xyz'] == '4'",
      "weight": [40, 60]
    },
    {
      "weight": [0, 100]
    }
  ],
  "header": {"xyz": "1"}
}

返回

<?xml version="1.0" encoding="UTF-8"?>
<rule>
    <strategy>
        <version>{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</version>
    </strategy>
    <strategy-release>
        <conditions type="blue-green">
            <condition id="condition-0" expression="#H['xyz'] == '1'" version-id="route-0"/>
            <condition id="condition-1" expression="#H['xyz'] == '2'" version-id="route-1"/>
        </conditions>
        <conditions type="gray">
            <condition id="condition-0" expression="#H['xyz'] == '3'" version-id="route-0=10;route-1=90"/>
            <condition id="condition-1" expression="#H['xyz'] == '4'" version-id="route-0=40;route-1=60"/>
            <condition id="condition-2" version-id="route-0=0;route-1=100"/>
        </conditions>
        <routes>
            <route id="route-0" type="version">{"discovery-guide-service-a":"1.0","discovery-guide-service-b":"1.0"}</route>
            <route id="route-1" type="version">{"discovery-guide-service-a":"1.1","discovery-guide-service-b":"1.1"}</route>
        </routes>
        <header>{"xyz":"1"}</header>
    </strategy-release>
</rule>

返回目录

根据Yaml格式重新创建版本蓝绿灰度发布

描述

在已有的蓝绿灰度发布规则策略上,不变动条件表达式,只变动链路路由的方式,根据Yaml格式,重新创建API网关的版本蓝绿灰度发布规则策略,返回对应的Xml蓝绿灰度规则策略

请求URL

http://localhost:6001/strategy/recreate-version-release-yaml/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
conditionRouteStrategyYaml String RequestBody 蓝绿灰度路由策略Yaml

返回参数

参数类型 描述
String 重新创建后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 兜底规则策略

输入conditionRouteStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b

或者

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
condition: false

② 蓝绿灰度规则策略

输入conditionRouteStrategyYaml内容

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
condition: true

返回目录

根据Json格式重新创建版本蓝绿灰度发布

描述

在已有的蓝绿灰度发布规则策略上,不变动条件表达式,只变动链路路由的方式,根据Json格式,重新创建API网关的版本蓝绿灰度发布规则策略,返回对应的Xml蓝绿灰度规则策略

请求URL

http://localhost:6001/strategy/recreate-version-release-json/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
conditionRouteStrategy ConditionRouteStrategy RequestBody 蓝绿灰度路由策略对象

返回参数

参数类型 描述
String 重新创建后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 兜底规则策略

输入conditionRouteStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"]
}

或者

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "condition": false
}

② 蓝绿灰度规则策略

输入conditionRouteStrategy对象内容

{
  "service": ["discovery-guide-service-a", "discovery-guide-service-b"],
  "condition": true
}

返回目录

重置蓝绿灰度发布

描述

在已有的蓝绿灰度发布规则策略上,保留条件表达式,清除链路路由的方式,重置API网关的版本蓝绿灰度发布规则策略,返回对应的Xml规则策略

该API具有备份条件表达式的作用

请求URL

http://localhost:6001/strategy/reset-release/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
String 重置后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

清除蓝绿灰度发布

描述

清除API网关的版本蓝绿灰度发布规则策略,返回对应的Xml规则策略

请求URL

http://localhost:6001/strategy/clear-release/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
String 清除后的蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

校验Yaml格式版本蓝绿灰度发布

描述

根据输入的conditionStrategyYaml蓝绿灰度规则策略内容解析出最终的Xml蓝绿灰度规则策略。适用于预验证蓝绿灰度是否合法,链路智能编排结果是否正确

请求URL

http://localhost:6001/strategy/parse-version-release-yaml

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
conditionStrategyYaml String RequestBody 蓝绿灰度规则策略Yaml

返回参数

参数类型 描述
String 蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

内容格式参考根据Yaml格式创建版本蓝绿灰度发布

返回目录

校验Json格式版本蓝绿灰度发布

描述

根据输入的ConditionStrategy蓝绿灰度规则策略对象解析出最终的Xml蓝绿灰度规则策略。适用于预验证蓝绿灰度是否合法,链路智能编排结果是否正确

请求URL

http://localhost:6001/strategy/parse-version-release-json

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
conditionStrategy ConditionStrategy RequestBody 蓝绿灰度规则策略对象

返回参数

参数类型 描述
String 蓝绿灰度规则策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

内容格式参考根据Json格式创建版本蓝绿灰度发布

返回目录

转换Xml格式版本蓝绿灰度发布

描述

根据输入的ruleXml蓝绿灰度规则策略内容解析出ConditionStrategy蓝绿灰度规则策略对象

请求URL

http://localhost:6001/strategy/deparse-version-release-xml

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
ruleXml String RequestBody 蓝绿灰度规则策略Xml

返回参数

参数类型 描述
conditionStrategy 蓝绿灰度规则策略对象

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

转换Yaml格式版本蓝绿灰度发布

描述

根据输入的conditionStrategyYaml蓝绿灰度规则策略内容解析出ConditionStrategy蓝绿灰度规则策略对象

请求URL

http://localhost:6001/strategy/deparse-version-release-yaml

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
conditionStrategyYaml String RequestBody 蓝绿灰度规则策略Xml

返回参数

参数类型 描述
conditionStrategy 蓝绿灰度规则策略对象

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

内容格式参考根据Yaml格式创建版本蓝绿灰度发布

返回目录

校验条件表达式

描述

条件表达式是通过Spring Spel语言来描述的,存在一定输入错误的可能,根据输入的条件表达式和其条件变量的赋值,进行校验。适用于预验证条件表达式是否合法,赋值后判断结果是否正确

请求URL

http://localhost:6001/strategy/validate-expression

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
expression String RequestParam 条件表达式
validation String RequestParam 赋值表达式

符号和等价符号作用相同,任选一个,等价符号不区分大小写

符号 等价符号 含义 备注
+
-
*
/ div
% mod 求余
== eq 等于 equal缩写
!= ne 不等于 not equal缩写
> gt 大于 greater than缩写
>= ge 大于等于 greater than equal缩写
< lt 小于 less than缩写
<= le 小于等于 less than equal缩写
&& and
|| or
! not
matches 正则表达式 #H['a'] matches '[a-z]{3}2'
contains 包含 #H['a'].contains('123')
between 区间 #H['a'] between {1, 2}
instanceof 实例表达式 #H['a'] instanceof 'T(String)'

返回参数

参数类型 描述
boolean 校验结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 条件表达式

#H['a'] == '1' && #H['b'] != '2'

② 赋值表达式

a=1;b=1

③ 校验逻辑

条件表达式:当a等于1同时b不等于2,返回true

赋值表达式:赋予a和b都等于1

上述示例结果返回true

返回目录

无损下线黑名单接口

查询下线的服务实例的黑名单

描述

重用查询规则配置对象接口

步骤

① 调用查询规则配置对象接口,返回RuleEntity对象

② 获取RuleEntity对象中的StrategyBlacklistEntity对象,即黑名单

返回目录

添加下线的服务实例到黑名单

描述

根据IP地址和端口,添加下线的服务实例UUId到黑名单

请求URL

http://localhost:6001/blacklist/add-address/{group}/{serviceId}/{targetServiceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
targetServiceId String PathVariable 待下线实例的服务名
targetAddressEntity AddressEntity RequestBody 待下线实例的IP地址和端口

返回参数

参数类型 描述
String UUId

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

AddressEntity对象内容格式如下

{
  "host": "192.168.0.1",
  "port": 3001
}

返回目录

通配添加下线的服务实例到黑名单

描述

添加下线的服务实例UUId到黑名单,支持通配符

请求URL

http://localhost:6001/blacklist/add-uuid/{group}/{serviceId}/{targetServiceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
targetServiceId String PathVariable 待下线实例的服务名
targetServiceUUId String RequestBody 待下线实例的UUId

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

日期通配,通配2021年06月01日上线的所有服务实例

20210601*

日期和时间通配,通配2021年06月01日12点上线的所有服务实例

20210601-12*

返回目录

从黑名单删除过期的服务实例

描述

根据服务实例UUId,从黑名单删除过期的服务实例

请求URL

http://localhost:6001/blacklist/delete/{group}/{serviceId}/{targetServiceId}/{targetServiceUUId}

请求类型

DELETE

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名
targetServiceId String PathVariable 待下线实例的服务名
targetServiceUUId String PathVariable 已下线实例的UUId

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

从黑名单清除所有过期的服务实例

描述

从黑名单清除所有过期的服务实例

请求URL

http://localhost:6001/blacklist/clear/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

故障转移接口

查询故障转移

描述

重用查询规则配置对象接口

步骤

① 调用查询规则配置对象接口,返回RuleEntity对象

② 获取RuleEntity对象中的StrategyFailoverEntity对象,即故障转移

返回目录

创建故障转移

描述

创建故障转移,支持七个维度,支持通配符,返回对应的Xml规则策略

请求URL

http://localhost:6001/failover/create/{failoverType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
failoverType String PathVariable 故障转移类型。取值:
version-prefer
version-failover
region-transfer
region-failover
env-failover
zone-failover
address-failover
group String PathVariable 组名
serviceId String PathVariable 服务名
failoverValue String RequestBody 故障转移值

返回参数

参数类型 描述
String 创建后的故障转移策略Xml

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

FailoverValue对象内容格式如下

  • Json格式
{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}
  • 通配格式
1.1*

返回目录

清除故障转移

描述

清除故障转移,支持七个维度

请求URL

http://localhost:6001/failover/clear/{failoverType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
failoverType String PathVariable 故障转移类型。取值:
version-prefer
version-failover
region-transfer
region-failover
env-failover
zone-failover
address-failover
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

网关动态路由接口

查询网关动态路由

描述

查询Spring Cloud Gateway或者Zuul的网关动态路由

请求URL

http://localhost:6001/route/remote/view/{gatewayType}/{group}/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
gatewayType String PathVariable 网关类型。取值:
spring-cloud-gateway
zuul
group String PathVariable 组名
serviceId String PathVariable 网关服务名

返回参数

参数类型 描述
String 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① Spring Cloud Gateway网关动态路由

[
    {
        "id": "route0", 
        "uri": "lb://discovery-guide-service-a", 
        "predicates": [
            "Path=/discovery-guide-service-a/**,/x/**,/y/**"
        ], 
        "filters": [
            "StripPrefix=1"
        ], 
        "order": 0,
        "metadata": {}
    }
]

② Zuul网关动态路由

[
    {
        "id": "route0",
        "serviceId": "discovery-guide-service-a",
        "path": "/discovery-guide-service-a/**"
    },
    {
        "id": "route1",
        "serviceId": "discovery-guide-service-a",
        "path": "/x/**"
    },
    {
        "id": "route2",
        "serviceId": "discovery-guide-service-a",
        "path": "/y/**"
    }
]

返回目录

更新网关动态路由

描述

更新Spring Cloud Gateway或者Zuul的网关动态路由

请求URL

http://localhost:6001/route/remote/update/{gatewayType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
gatewayType String PathVariable 网关类型。取值:
spring-cloud-gateway
zuul
group String PathVariable 组名
serviceId String PathVariable 网关服务名
route String RequestBody 网关动态路由值

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

内容格式参考查询网关动态路由

返回目录

清除网关动态路由

描述

清除Spring Cloud Gateway或者Zuul的网关动态路由

请求URL

http://localhost:6001/route/remote/clear/{gatewayType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
gatewayType String PathVariable 网关类型。取值:
spring-cloud-gateway
zuul
group String PathVariable 组名
serviceId String PathVariable 网关服务名

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

哨兵接口

查询哨兵规则

描述

查询Sentinel规则,支持五种规则

请求URL

http://localhost:6001/sentinel/remote/view/{ruleType}/{group}/{serviceId}

请求类型

GET

请求参数

名称 类型 参数 是否必须 描述
ruleType String PathVariable 规则类型。取值:
flow
degrade
authority
system
param-flow
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
String 规则内容

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

更新哨兵规则

描述

更新Sentinel规则,支持五种规则

请求URL

http://localhost:6001/sentinel/remote/update/{ruleType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
ruleType String PathVariable 规则类型。取值:
flow
degrade
authority
system
param-flow
group String PathVariable 组名
serviceId String PathVariable 服务名
rule String RequestBody 哨兵规则值

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

清除哨兵规则

描述

清除Sentinel规则,支持五种规则

请求URL

http://localhost:6001/sentinel/remote/clear/{ruleType}/{group}/{serviceId}

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
ruleType String PathVariable 规则类型。取值:
flow
degrade
authority
system
param-flow
group String PathVariable 组名
serviceId String PathVariable 服务名

返回参数

参数类型 描述
boolean 操作结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

流量侦测接口

控制台为起点的流量侦测

控制台为起点的流量侦测-返回字符串格式

描述

从控制台发送请求,侦测调试全链路路由,返回字符串格式的结果

请求URL

http://localhost:6001/inspector/inspect

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
inspectorDebugEntity InspectorDebugEntity RequestBody 侦测调试对象

InspectorDebugEntity格式

{
  "protocol": "http",
  "portal": "",
  "path": "",
  "service": [],
  "header": {},
  "filter": []
}

protocol协议类型,取值http或者https

portal入口服务名,支持网关和服务两种入口方式

path网关路由转发路径或者服务调用上下文路径

  • 当以网关为入口时,path为网关路由转发路径。如果网关未对它后面的第一个服务配置网关路由转发路径,则path由该服务名来代替
  • 当以服务为入口时,path为服务调用上下文路径ContextPath。如果服务未配置调用上下文路径,则path留空

service侦测服务列表,可以留空或者删除。网关为入口,例如,想侦测服务A和服务B的链路,侦测服务列表只需要包含服务B,网关路由转发路径已经包含服务A

headerHttp头的哈希表,可以留空或者删除

filter返回结果过滤列表,可以留空或者删除。返回结果可能很长,使用者可以根据具体使用场景,保留他感兴趣的值

  • 候选项包括:ID,UID,AID,T,P,H,V,R,E,Z,G,A,TID,SID
  • 候选项含义:
配置值 含义 描述
ID ServiceId 服务名
UID UUID 服务实例唯一全局ID
AID ApplicationId 服务实例应用ID,Apollo配置中心专属
T ServiceType 服务实例类型,包括gatewayservice
P Plugin 注册中心插件类型,包括NacosConsulEurekaZookeeper
H Host:Port 服务实例的IP地址和端口
V Version 服务实例版本号
R Region 服务实例所属区域
E Environment 服务实例所属环境
Z Zone 服务实例所属专用区
G Group 服务实例所属组
A Active 服务实例是否开启多活单元化
TID TraceId 服务实例在调用链中的TraceId
SID SpanId 服务实例在调用链中的SpanId
  • 示例:当filter设置ID,V,即返回结果只带有服务名和版本号

返回参数

参数类型 描述
String 侦测调试路由结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 以网关为入口进行侦测调试

输入InspectorDebugEntity对象内容

如果网关对服务discovery-guide-service-a的路由转发路径配置为/discovery-guide-service-a/**

{
  "protocol": "http",
  "portal": "discovery-guide-gateway",
  "path": "discovery-guide-service-a",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"}
}

返回

[ID=discovery-guide-gateway][UID=20220927-111127-875-1354-367-132][T=gateway][P=Nacos][H=192.168.31.237:5001][V=1.0][R=default][E=default][Z=default][G=discovery-guide-group][A=false][TID=30186d59ee6e0633][SID=5c2094901666a0ee] 
-> [ID=discovery-guide-service-a][UID=20220927-111127-898-7896-282-453][T=service][P=Nacos][H=192.168.31.237:3001][V=1.0][R=dev][E=env1][Z=zone1][G=discovery-guide-group][A=true][TID=30186d59ee6e0633][SID=65bcb084e10fe9d0] 
-> [ID=discovery-guide-service-b][UID=20220927-111127-603-9037-746-402][T=service][P=Nacos][H=192.168.31.237:4001][V=1.0][R=qa][E=env1][Z=zone1][G=discovery-guide-group][A=false][TID=30186d59ee6e0633][SID=d032cb9f094bf411]

如果加上filter

{
  "protocol": "http",
  "portal": "discovery-guide-gateway",
  "path": "discovery-guide-service-a",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"},
  "filter": ["ID","V"]
}

返回

[ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]

从返回结果查看,在入口服务discovery-guide-gateway上侦测调试服务discovery-guide-service-a和服务discovery-guide-service-b的蓝绿灰度发布、路由隔离等一系列流量管控手段是否符合预期

② 以服务为入口进行侦测调试

输入InspectorDebugEntity对象内容

{
  "protocol": "http",
  "portal": "discovery-guide-service-a",
  "path": "",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"}
}

返回

[ID=discovery-guide-service-a][UID=20220927-111127-898-7896-282-453][T=service][P=Nacos][H=192.168.31.237:3001][V=1.0][R=dev][E=env1][Z=zone1][G=discovery-guide-group][A=true][TID=f953d0cb282ce160][SID=cb45020a6275e68d] 
-> [ID=discovery-guide-service-b][UID=20220927-111127-603-9037-746-402][T=service][P=Nacos][H=192.168.31.237:4001][V=1.0][R=qa][E=env1][Z=zone1][G=discovery-guide-group][A=false][TID=f953d0cb282ce160][SID=ee2ae1d457cd8c98]

如果加上filter

{
  "protocol": "http",
  "portal": "discovery-guide-service-a",
  "path": "",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"},
  "filter": ["ID","V"]
}

返回

[ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]

从返回结果查看,在入口服务discovery-guide-service-a上侦测调试服务discovery-guide-service-b的蓝绿灰度发布、路由隔离等一系列流量管控手段是否符合预期

返回目录

控制台为起点的流量侦测-返回结构化格式

描述

从控制台发送请求,侦测调试全链路路由,返回结构化格式的结果

请求URL

http://localhost:6001/inspector/inspect-to-list

请求类型

POST

请求参数

示例,参考控制台为起点的流量侦测-返回字符串格式

返回参数

参数类型 描述
List<Map<String, String>> 侦测调试路由结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

① 以网关为入口进行侦测调试

输入InspectorDebugEntity对象内容

如果网关对服务discovery-guide-service-a的路由转发路径配置为/discovery-guide-service-a/**

{
  "protocol": "http",
  "portal": "discovery-guide-gateway",
  "path": "discovery-guide-service-a",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"}
}

返回

[
  {
    "ID": "discovery-guide-gateway",
    "UID": "20221026-220729-881-6282-394-753",
    "T": "gateway",
    "P": "Nacos",
    "H": "192.168.31.237:5001",
    "V": "1.0",
    "R": "default",
    "E": "default",
    "Z": "default",
    "G": "discovery-guide-group",
    "A": "false",
    "TID": "12158a1ec82becd0",
    "SID": "58f84c2250629d47"
  },
  {
    "ID": "discovery-guide-service-a",
    "UID": "20221026-220728-411-0772-370-576",
    "T": "service",
    "P": "Nacos",
    "H": "192.168.31.237:3001",
    "V": "1.0",
    "R": "dev",
    "E": "env1",
    "Z": "zone1",
    "G": "discovery-guide-group",
    "A": "true",
    "TID": "12158a1ec82becd0",
    "SID": "92770e49839542f2"
  },
  {
    "ID": "discovery-guide-service-b",
    "UID": "20221026-220727-655-5472-259-437",
    "T": "service",
    "P": "Nacos",
    "H": "192.168.31.237:4001",
    "V": "1.0",
    "R": "qa",
    "E": "env1",
    "Z": "zone1",
    "G": "discovery-guide-group",
    "A": "false",
    "TID": "12158a1ec82becd0",
    "SID": "ca4694d92b3c2cc1"
  }
]

如果加上filter

{
  "protocol": "http",
  "portal": "discovery-guide-gateway",
  "path": "discovery-guide-service-a",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"},
  "filter": ["ID","V"]
}

返回

[
  {
    "ID": "discovery-guide-gateway",
    "V": "1.0"
  },
  {
    "ID": "discovery-guide-service-a",
    "V": "1.0"
  },
  {
    "ID": "discovery-guide-service-b",
    "V": "1.0"
  }
]

从返回结果查看,在入口服务discovery-guide-gateway上侦测调试服务discovery-guide-service-a和服务discovery-guide-service-b的蓝绿灰度发布、路由隔离等一系列流量管控手段是否符合预期

② 以服务为入口进行侦测调试

输入InspectorDebugEntity对象内容

{
  "protocol": "http",
  "portal": "discovery-guide-service-a",
  "path": "",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"}
}

返回

[
  {
    "ID": "discovery-guide-service-a",
    "UID": "20221026-220728-411-0772-370-576",
    "T": "service",
    "P": "Nacos",
    "H": "192.168.31.237:3001",
    "V": "1.0",
    "R": "dev",
    "E": "env1",
    "Z": "zone1",
    "G": "discovery-guide-group",
    "A": "true",
    "TID": "12158a1ec82becd0",
    "SID": "92770e49839542f2"
  },
  {
    "ID": "discovery-guide-service-b",
    "UID": "20221026-220727-655-5472-259-437",
    "T": "service",
    "P": "Nacos",
    "H": "192.168.31.237:4001",
    "V": "1.0",
    "R": "qa",
    "E": "env1",
    "Z": "zone1",
    "G": "discovery-guide-group",
    "A": "false",
    "TID": "12158a1ec82becd0",
    "SID": "ca4694d92b3c2cc1"
  }
]]

如果加上filter

{
  "protocol": "http",
  "portal": "discovery-guide-service-a",
  "path": "",
  "service": ["discovery-guide-service-b"],
  "header": {"xyz": "1"},
  "filter": ["ID","V"]
}

返回

[
  {
    "ID": "discovery-guide-service-a",
    "V": "1.0"
  },
  {
    "ID": "discovery-guide-service-b",
    "V": "1.0"
  }
]

从返回结果查看,在入口服务discovery-guide-service-a上侦测调试服务discovery-guide-service-b的蓝绿灰度发布、路由隔离等一系列流量管控手段是否符合预期

返回目录

服务为起点的流量侦测

描述

从服务(包括网关)发送请求,侦测调试全链路路由

请求URL

网关为入口

http://网关地址:网关端口/网关路由转发路径/inspector/inspect-service

服务为入口

http://服务地址:服务端口/服务调用上下文路径/inspector/inspect-service

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
service List<String> RequestBody 侦测服务列表

侦测服务列表,参考控制台为起点的流量侦测

返回参数

参数类型 描述
String 侦测调试路由结果

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

示例,参考控制台为起点的流量侦测

返回目录

全链路自动化云上测试接口

发起自动化模拟流程测试任务

描述

发起自动化模拟流程测试任务,支持配置文件propertiesyaml两种格式

请求URL

配置文件properties格式

http://localhost:6002/simulator-test/test-config-properties

配置文件yaml格式

http://localhost:6002/simulator-test/test-config-yaml

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
testConfig String RequestBody 测试配置文本

按照次序,由application.properties或者application.yaml、mock-version-release-basic.yamlmock-version-release-1.yamlmock-version-release-2.yaml组成,中间用10个"-"组成换行分隔。例如:

testcase.console.url=http://localhost:6001
testcase.group=discovery-guide-group
testcase.service=discovery-guide-gateway
testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
testcase.inspect.context.service=discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
sort: version
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
blueGreen:
  - expression: "#H['xyz'] == '1'"
    route: green
  - expression: "#H['xyz'] == '2'"
    route: blue
gray:
  - expression: "#H['xyz'] == '3'"
    weight:
      - 90
      - 10
  - expression: "#H['xyz'] == '4'"
    weight:
      - 70
      - 30
sort: version
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
condition: true
sort: version

或者

testcase:
    console:
        url: http://localhost:6001
    group: discovery-guide-group
    service: discovery-guide-gateway
    inspect:
        url: http://localhost:5001/discovery-guide-service-a/inspector/inspect
        context:
            service: discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
sort: version
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
blueGreen:
  - expression: "#H['xyz'] == '1'"
    route: green
  - expression: "#H['xyz'] == '2'"
    route: blue
gray:
  - expression: "#H['xyz'] == '3'"
    weight:
      - 90
      - 10
  - expression: "#H['xyz'] == '4'"
    weight:
      - 70
      - 30
sort: version
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
condition: true
sort: version

返回参数

参数类型 描述
TestCase UUID 测试任务的全局唯一ID
Async Logging Result 测试结果的异步日志输出

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

【模拟场景3】蓝绿策略,测试全链路侦测,Header : 无...
侦测次数 : 100
侦测结果 : discovery-guide-service-a@@1.0 命中次数=100
侦测结果 : discovery-guide-service-a@@1.1 命中次数=0
侦测结果 : discovery-guide-service-b@@1.0 命中次数=100
侦测结果 : discovery-guide-service-b@@1.1 命中次数=0
测试耗时 : 1 秒
【模拟场景3】蓝绿策略,测试全链路侦测,Header : {xyz=1}...
侦测次数 : 100
侦测结果 : discovery-guide-service-a@@1.0 命中次数=100
侦测结果 : discovery-guide-service-a@@1.1 命中次数=0
侦测结果 : discovery-guide-service-b@@1.0 命中次数=100
侦测结果 : discovery-guide-service-b@@1.1 命中次数=0
测试耗时 : 1 秒
【模拟场景3】蓝绿策略,测试全链路侦测,Header : {xyz=2}...
侦测次数 : 100
侦测结果 : discovery-guide-service-a@@1.0 命中次数=0
侦测结果 : discovery-guide-service-a@@1.1 命中次数=100
侦测结果 : discovery-guide-service-b@@1.0 命中次数=0
侦测结果 : discovery-guide-service-b@@1.1 命中次数=100
测试耗时 : 1 秒
【模拟场景3】灰度策略,测试全链路侦测,Header : 无...
侦测次数 : 500
侦测进度 : 第100次...
侦测进度 : 第200次...
侦测进度 : 第300次...
侦测进度 : 第400次...
侦测进度 : 第500次...
侦测结果 : discovery-guide-service-a@@1.0 命中次数=500
侦测结果 : discovery-guide-service-a@@1.1 命中次数=0
侦测结果 : discovery-guide-service-b@@1.0 命中次数=500
侦测结果 : discovery-guide-service-b@@1.1 命中次数=0
期望结果 : 旧版本路由权重=100%, 新版本路由权重=0%
最终结果 : 旧版本路由权重=100.0%, 新版本路由权重=0.0%
测试耗时 : 9 秒
【模拟场景3】灰度策略,测试全链路侦测,Header : {xyz=3}...
侦测次数 : 500
侦测进度 : 第100次...
侦测进度 : 第200次...
侦测进度 : 第300次...
侦测进度 : 第400次...
侦测进度 : 第500次...
侦测结果 : discovery-guide-service-a@@1.0 命中次数=448
侦测结果 : discovery-guide-service-a@@1.1 命中次数=52
侦测结果 : discovery-guide-service-b@@1.0 命中次数=448
侦测结果 : discovery-guide-service-b@@1.1 命中次数=52
期望结果 : 旧版本路由权重=90%, 新版本路由权重=10%
最终结果 : 旧版本路由权重=89.6%, 新版本路由权重=10.4%
测试耗时 : 7 秒
【模拟场景3】灰度策略,测试全链路侦测,Header : {xyz=4}...
侦测次数 : 500
侦测进度 : 第100次...
侦测进度 : 第200次...
侦测进度 : 第300次...
侦测进度 : 第400次...
侦测进度 : 第500次...
侦测结果 : discovery-guide-service-a@@1.0 命中次数=353
侦测结果 : discovery-guide-service-a@@1.1 命中次数=147
侦测结果 : discovery-guide-service-b@@1.0 命中次数=353
侦测结果 : discovery-guide-service-b@@1.1 命中次数=147
期望结果 : 旧版本路由权重=70%, 新版本路由权重=30%
最终结果 : 旧版本路由权重=70.6%, 新版本路由权重=29.4%
测试耗时 : 8 秒
测试结果 : * 通过
【模拟场景3】结束

返回目录

获取当前正在运行的自动化模拟流程测试任务列表

描述

获取当前正在运行的自动化模拟流程测试任务列表

请求URL

http://localhost:6002/simulator-test/testcases-running

请求类型

GET

请求参数

返回参数

参数类型 描述
List<String> group@@serviceId格式的列表

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

返回目录

发起自动化流量侦测测试任务

描述

发起自动化流量侦测测试任务,支持配置文件propertiesyaml两种格式

请求URL

配置文件properties格式

http://localhost:6002/inspector-test/test-config-properties

配置文件yaml格式

http://localhost:6002/inspector-test/test-config-yaml

请求类型

POST

请求参数

名称 类型 参数 是否必须 描述
testConfig String RequestBody 测试配置文本

按照次序,由application.properties或者application.yaml、mock-inspector.yaml组成,中间用10个"-"组成换行分隔。例如:

testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
testcase.inspect.context.service=discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
header:
  xyz: 1

或者

testcase:
    inspect:
        url: http://localhost:5001/discovery-guide-service-a/inspector/inspect
        context:
            service: discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
header:
  xyz: 1

返回参数

参数类型 描述
TestCase UUID 测试任务的全局唯一ID
Async Logging Result 测试结果的异步日志输出

错误编码

错误代码 描述 语义
200 OK 正常
400 Bad Request 客户端请求中的语法错误
403 Forbidden 没有权限
404 Not Found 无法找到资源
500 Internal Server Error 服务器内部错误

示例

【侦测场景1】测试全链路侦测...
侦测次数 : 10
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
测试耗时 : 0 秒
【侦测场景1】结束

返回目录




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally