-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何使用DevOps运维平台对接的公共接口
文档只列出部分重要和常用的接口,更多接口请访问
描述
查询注册中心类型
请求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地址和端口并不包含在元数据范畴里,为了方便起见,当metadataKey
为host:port
或host
或port
时,即可查询到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地址和端口并不包含在元数据范畴里,为了方便起见,当metadataKey
为host:port
或host
或port
时,即可查询到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格式,创建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格式,创建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格式,重新创建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格式,重新创建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 | 服务器内部错误 |
示例
无
描述
根据输入的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格式创建版本蓝绿灰度发布
描述
根据输入的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格式创建版本蓝绿灰度发布
描述
根据输入的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 | 服务器内部错误 |
示例
无
描述
根据输入的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
⑤ header
Http头的哈希表,可以留空或者删除
⑥ 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 | 服务实例类型,包括gateway 和service
|
P | Plugin | 注册中心插件类型,包括Nacos 、Consul 、Eureka 和Zookeeper
|
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 | 服务器内部错误 |
示例
示例,参考控制台为起点的流量侦测
描述
发起自动化模拟流程测试任务,支持配置文件properties
和yaml
两种格式
请求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.yaml、mock-version-release-1.yaml、mock-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 | 服务器内部错误 |
示例
无
描述
发起自动化流量侦测测试任务,支持配置文件properties
和yaml
两种格式
请求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
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发