-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何理解域网关部署模式的示例
HaojunRen edited this page May 31, 2024
·
2 revisions
① 部门1,包括API网关1,A和B服务各两个版本;部门2,包括API网关2,C和D服务各两个版本
② 本部门服务访问必须链路新旧隔离,即部门1的A服务和B服务,必须A v1.0 -> B v1.0,A v1.1 -> B v1.1,不能出现A v1.0 -> B v1.1,A v1.1 -> B v1.0
③ 本部门无权对其它部门服务实施蓝绿灰度,即部门1的API网关1不能配置部门2服务的蓝绿灰度规则策略,部门2的API网关2亦如此
① 两个部门,所有的服务都在并行执行蓝绿灰度
- 增加Spring Cloud Gateway1的版本匹配蓝绿发布策略,Group为discovery-guide-group1,Data Id为discovery-guide-gateway1,策略内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<strategy-release>
<conditions type="blue-green">
<condition id="condition-0" expression="#H['a'] == '1'" version-id="route-0"/>
<condition id="condition-1" expression="#H['a'] == '2'" version-id="route-1"/>
<condition id="condition-2" version-id="route-1"/>
</conditions>
<routes>
<route id="route-0" type="version">{"discovery-guide-service-a":"1.1", "discovery-guide-service-b":"1.1"}</route>
<route id="route-1" type="version">{"discovery-guide-service-a":"1.0", "discovery-guide-service-b":"1.0"}</route>
</routes>
</strategy-release>
</rule>
- 增加Spring Cloud Gateway2的版本权重灰度发布策略,Group为discovery-guide-group2,Data Id为discovery-guide-gateway2,策略内容如下
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<strategy-release>
<conditions type="gray">
<condition id="condition-0" expression="#H['a'] == '1'" version-id="route-0=20;route-1=80"/>
<condition id="condition-1" version-id="route-0=0;route-1=100"/>
</conditions>
<routes>
<route id="route-0" type="version">{"discovery-guide-service-d":"1.1", "discovery-guide-service-c":"1.1"}</route>
<route id="route-1" type="version">{"discovery-guide-service-d":"1.0", "discovery-guide-service-c":"1.0"}</route>
</routes>
</strategy-release>
</rule>
② API网关2配置兜底路由,即灰度兜底路由
③ API网关2拒绝API网关1传递进来的蓝绿灰度规则(默认设置)
④ 测试结果
- 从API网关1进行访问
请求URL
http://localhost:5001/discovery-guide-service-a/invoke/gateway
请求类型
GET
请求参数(Header)
a=1
返回结果
gateway
-> [ID=discovery-guide-service-a][UID=20221012-192103-136-5920-333-865][T=service][P=Nacos][H=192.168.31.237:3002][V=1.1][R=default][E=default][Z=default][G=discovery-guide-group1][A=false]
-> [ID=discovery-guide-service-b][UID=20221012-192110-302-6048-973-128][T=service][P=Nacos][H=192.168.31.237:4002][V=1.1][R=default][E=default][Z=default][G=discovery-guide-group1][A=false]
-> [ID=discovery-guide-service-d][UID=20221012-192123-450-0729-561-734][T=service][P=Nacos][H=192.168.31.237:8001][V=1.0][R=default][E=default][Z=default][G=discovery-guide-group2][A=false]
-> [ID=discovery-guide-service-c][UID=20221012-192114-430-4393-896-177][T=service][P=Nacos][H=192.168.31.237:7001][V=1.0][R=default][E=default][Z=default][G=discovery-guide-group2][A=false]
a
等于1
,A服务和B服务都走1.1版本,C服务和D服务属于跨部门调用,执行它们的兜底路由(1.0版本),结果符合预期
- 从API网关2进行访问
请求URL
http://localhost:5002/discovery-guide-service-d/invoke/gateway
请求类型
GET
请求参数(Header)
a=1
返回结果
gateway
-> [ID=discovery-guide-service-d][UID=20221012-192123-450-0729-561-734][T=service][P=Nacos][H=192.168.31.237:8001][V=1.0][R=default][E=default][Z=default][G=discovery-guide-group2][A=false]
-> [ID=discovery-guide-service-c][UID=20221012-192114-430-4393-896-177][T=service][P=Nacos][H=192.168.31.237:7001][V=1.0][R=default][E=default][Z=default][G=discovery-guide-group2][A=false]
a
等于1
,C服务和D服务新旧路由链路的流量配比是20:80,经过若干次调用测试,结果符合预期。对于C服务和D服务来说,它们在API网关2上流量管控不受API网关1的蓝绿灰度规则策略影响
域网关部署模式指南示例,分支为6.x.x-simple-domain-gateway
2017-2050 ©Nepxion Studio Apache License
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发