当前位置: 首页 > news >正文

SpringCloud gateway配置predicates的匹配规则

需求

通过gateway的route规则,实现分组流量配置

资源

一个nacos,一个gateway ,一个服务app(部署双实例group-1,group-2),实现特定条件下往分组一和分组二流量切换。

方案

1 配置文件
  • nacos 默认配置即可
  • gateway 配置
server:port: 8062spring:application:name: api-gatewaycloud:gateway:routes:- id: id-group-grepuri: lb://app-group-2predicates:- Header=X-VERSION, v2  # 匹配Header中X-VERSION为v2的请求# - Query=type, mobile2    # 匹配包含type=mobile参数的请求# - Host=192.168.0.73  #这里配置域名  IP貌似不管用# - RemoteAddr=192.168.0.73,192.168.2.0/24,127.0.0.1 # 不建议配置IP 有匹配范围的风险以及IP变化风险# - Cookie=userType, premium  # 匹配包含特定Cookie的请求 没试- Path=/app/**# - Weight=app-group,1filters:- StripPrefix=1        - id: app-group-produri: lb://app-group-1predicates:- Header=X-VERSION, v1  # 匹配Header中X-VERSION为v2的请求# - Query=type, mobile1    # 匹配包含type=mobile参数的请求# - Host=192.168.0.73  #这里配置域名  IP貌似不管用# - RemoteAddr=192.168.0.73,192.168.2.0/24,127.0.0.1 # 不建议配置IP 有匹配范围的风险以及IP变化风险# - Cookie=userType, premium  # 匹配包含特定Cookie的请求- Path=/app/**# - Weight=app-group,1filters:- StripPrefix=1
  • app-group-2:127.0.0.1:8082

写一个测试Controller 打印   hello world22222

    @RequestMapping(value = "", method = RequestMethod.GET)public ResultServer<String> hello() {System.out.println("我是group-22222");return new ResultServer().success("hello world22222");}
server:port: 8082
spring:application:name: app-group-2
  • app-group-1:127.0.0.1:8081 写一个测试Controller 打印   hello world11111
    @RequestMapping(value = "", method = RequestMethod.GET)public ResultServer<String> hello() {System.out.println("我是group-22222");return new ResultServer().success("hello world11111");}
server:port: 8081
spring:application:name: app-group-1

2 启动四个服务,
  • nacos 127.0.0.1:8848
  • gateway 127.0.0.1:8209
  • app-group-2:127.0.0.1:8082 
  • app-group-1:127.0.0.1:8081 

Nacos的注册情况

验证Header
  • 证明Header是管用的。

验证Query

证明Query是管用的。

host和别的我就不验证了,实际生产不太能用的到

除非部署一套灰度的前端环境,这样可以

1 指定灰度环境的为 grey.*****.com 走灰度分组

2 指定生产环境的为 prod.*****.com 走生产分组

注意

1 网关路由的配置我是放在了nacos上边,完整的gateway配置文件为;
server:port: 8062spring:application:name: api-gatewaymain:allow-bean-definition-overriding: trueprofiles:active: devcloud:nacos:discovery:server-addr: 127.0.0.1:8848namespace: devconfig:server-addr: 127.0.0.1:8848file-extension: yamlnamespace:devshared-configs[0]:data-id: ${spring.application.name}-route.yamlrefresh: trueusername: @nacos.username@password: @nacos.password@logging:level:com.alibaba.nacos.client.*: WARN
2  predicates 应该是只支持一种类型,要么header 要么query,如果配置两个,直接就抛异常了。
3 如果设置了断言,那么权重配比也要去掉,否则会覆盖断言配置,依旧走权重的配置

# - Weight=app-group,1。

参考文献

https://docs.spring.io/spring-cloud-gateway/reference/4.1-SNAPSHOT/spring-cloud-gateway/request-predicates-factories.html


文章转载自:

http://KkUG0XLp.Ljcky.cn
http://dlBdrawh.Ljcky.cn
http://dbs3BRp0.Ljcky.cn
http://xd1oIppt.Ljcky.cn
http://Mb6SQN6L.Ljcky.cn
http://d5l37Jay.Ljcky.cn
http://huFG1iDk.Ljcky.cn
http://v3DLJYFC.Ljcky.cn
http://bgU2Z4z4.Ljcky.cn
http://2wdxEh6J.Ljcky.cn
http://K5fgdO41.Ljcky.cn
http://YiYVNrs4.Ljcky.cn
http://jhHf7Oeo.Ljcky.cn
http://chUdXHlc.Ljcky.cn
http://QNjeqFkK.Ljcky.cn
http://DW3RxYrb.Ljcky.cn
http://kwpAPmKW.Ljcky.cn
http://6KOoouJ1.Ljcky.cn
http://GIALGpha.Ljcky.cn
http://K1ZH79q0.Ljcky.cn
http://RiggASTQ.Ljcky.cn
http://Un14zu3H.Ljcky.cn
http://6lVahQ41.Ljcky.cn
http://6CxaQp3g.Ljcky.cn
http://aXK0Kb4D.Ljcky.cn
http://vaWIm6yR.Ljcky.cn
http://DRtJXi6e.Ljcky.cn
http://zKFUp6ke.Ljcky.cn
http://20n89afM.Ljcky.cn
http://izSB7w1G.Ljcky.cn
http://www.dtcms.com/a/374478.html

相关文章:

  • Win系统下配置PCL库第一步之下载Visual Studio和Qt 5.15.2(超详细)
  • 腾讯云负载均衡增加访问策略后访问失败
  • 【Java EE进阶 --- SpringBoot】Spring DI详解
  • 内存中读写文件:设计原理与C/C++实现
  • 光场显微镜及其在三维生物成像中的应用
  • 基于FPGA的实时图像处理系统(3)——实时视频显示
  • 【慢教程】Ollama4:ollama命令汇总
  • 当医疗健康遇见RWA:区块链技术如何重塑医疗资产的未来
  • 【内存管理】6.6内核 - Vmalloc机制 - __purge_vmap_area_lazy
  • 第3周 机器学习课堂记录
  • 机器学习、深度学习与大模型:技术选型的思考与实战指南
  • 深度学习(四):数据集划分
  • Python最新的好用技巧和特性总结
  • 看不见的安全防线:信而泰仪表如何验证零信任有效性
  • PyQt 界面布局与交互组件使用指南
  • 资产 OCR 识别:批量导入效率提升指南
  • 萝卜切丁机 机构笔记
  • Java学习笔记三(封装)
  • 使用云手机能否给企业降本增效
  • Linux笔记---进程间关系与守护进程
  • 详细:虚拟机 + Linux 环境搭建 + Oracle 11.2.0 EE 安装全流程
  • 思利普科技:用BCG心冲击技术重新定义睡眠监测,掀起床垫行业智能化革命
  • 2025世界智博会,揭幕AI触手可及的科幻生活
  • 探索 CSS 3D 属性:从基础到炫酷动画案例
  • “从零到一:使用GitLab和Jenkins实现自动化CI/CD流水线”
  • 考研408《计算机组成原理》复习笔记,第六章(1)——总线概念
  • adb的常用命令
  • 设计模式:策略模式
  • 【华为OD】数字游戏
  • 分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案