网关
网关运行分析报告
网关运行分析报告 - 2025-02-15
网关运行分析报告 - 2025-02-22
网关运行分析报告 - 2025-02-28
1.shenyu网关内外网使用
2.shenyu网关的具体使用
记一次网关线上问题之icsp访问ERP
再次思考多套ak/sk同时访问同一资源路径问题
网关接入说明
网关接入说明补充
网关分配各系统命名
网关BUG及二开
网关管理端访问地址
修改requestBody与responseBody
shenyu工程理解
获取requestBody异步问题
shenyu工程部署
排查sign插件报错500问题
shenyu数据结构设计
shenyu网关请求过程
shenyu自定义插件
记一次网关线上问题----网关无法对外提供服务
网关插件更新报错问题
网关中grayTag的使用
Exceeded limit on max bytes to buffer : 262144
网关中Divide插件中Selector中Handler中配置丢失问题
网关请求下游系统时长记录
通用测试:获取网关的sign值
网关分发主数据设想方案
铁骑主数据分发机制完善
27.GTMS&ITMS与gateway的关系
28.ZPI与gateway的关系
26.网关验签场景
29.PC端空值,服务端正常请求
30.网关requestMaxSize值
31.跨系统跨语言日志链路追踪
32.网关异步分发讨论
33.网关LoggingConsole丢失日志排查
34.网关升级shenyu-admin
35.网关异步分发插件 - 接入文档
本文档使用「觅思文档专业版」发布
-
+
首页
网关中grayTag的使用
## 场景需求 实际生产中如有需求变更,并不会直接更新线上服务,最通常的做法便是:切出线上的小部分流量进行体验测试,经过测试后无问题则全面的上线。 举例子:我们存在ucenter服务,注册到nacos上,如下图  同时存在gateway服务,注册到与ucenter同一个nacos上。 此时,我需要通过gateway服务调用ucenter服务,且需要gateway调度到我本地的ucenter实例上。 ## 方案设计 某系统(假设CCS、SRM等)向网关服务发起请求时,需要带上特殊标识符(称之为grayTag),网关根据grayTag选择指定的ucenter实例。 ## 具体实施 gateway代码如下 ``` private List<Upstream> buildUpstream(final String serviceId, final ServerWebExchange exchange) { List<ServiceInstance> serviceInstanceList = this.getServiceInstance(serviceId); //oyjg 这里做一个处理,请求的时候header中包含的一个字段必须匹配元数据 if (exchange != null) { List<String> _gray = exchange.getRequest().getHeaders().get("grayTag"); if (_gray != null && !_gray.isEmpty()) { String _grayName = _gray.get(0); serviceInstanceList = serviceInstanceList.stream().filter(item -> _grayName.equals(item.getMetadata().get("grayTag"))).collect(Collectors.toList()); } else { serviceInstanceList = serviceInstanceList.stream().filter(item -> item.getMetadata().get("grayTag") == null || StringUtils.isEmpty(item.getMetadata().get("grayTag"))).collect(Collectors.toList()); } } if (serviceInstanceList.isEmpty()) { return Collections.emptyList(); } return serviceInstanceList.stream() .map(serviceInstance -> buildDefaultSpringCloudUpstream(serviceInstance.getUri().getRawAuthority(), serviceInstance.getScheme() + "://")) .distinct() .collect(Collectors.toList()); } ``` 由如下图可知:   很明显,网关从实例列表中 找到了 我本地启动的实例。
李贤利
2023年12月26日 16:10
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期