Spring Cloud gateway 路由规则

Spring Cloud gateway 路由规则

文章目录

  • Spring Cloud gateway 路由规则
    • 一、路由常用属性解析
      • 1.1 示例配置
      • 1.2 属性解析
    • 二、问题分析,springCloud微服务中没有任何路由配置,网关为什么能根据请求转发到相应的业务服务的
      • 2.1 开启,用于启用通过服务发现来路由到服务的功能
      • 2.2 断点RoutePredicateHandlerMapping类查看自动注册的路由
      • 2.3 自动创建注册到Nacos的路由配置,包括dubbo服务
      • 2.4 未开启 【spring: cloud: gateway: discovery: locator: enabled: false】

一、路由常用属性解析

1.1 示例配置

server:
  port: 90
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #启动DiscoveryClient,可以实现服务的发现,自动根据注册的服务创建对应的路由
      routes:
        - id: Auth
          uri: lb://wuxsms-auth
          order: -1
          predicates:
            - Path=/wuxsms-auth/**
          filters:
            - RewritePath=/wuxsms-auth/(?<segment>.*), /$\{segment}
            - StripPrefix=2

1.2 属性解析

  1. id

    1. 类型:字符串
    2. 作用:唯一标识一个路由。必须是唯一的,不能重复。
    3. 示例:
  2. uri

    1. 类型:字符串
    2. 作用:指定目标微服务的 URI。可以是具体的 URL(http://www.baidu.com等第三方系统),也可以配合nacos服务注册中心负载均衡的 URI(如 lb://service-name)。
  3. predicates

    1. 类型:列表

    2. 作用:定义一组断言,用于决定请求是否匹配该路由。每个断言都是一个条件,所有条件都满足时,请求才会被路由到目标微服务。

    3. 常见断言:

      • Path:匹配请求路径。
      • Method:匹配请求方法(GET、POST 等)。
      • Query:匹配查询参数。
      • Header:匹配请求头。
      • Cookie:匹配请求中的 Cookie。
      • Host:匹配请求主机。
    4. 匹配规则

    5. 匹配规则语法示例解释
      精确匹配Path=/exact/pathPath=/api/user匹配请求路径为 /api/user 的请求
      单级通配符Path=/path/*Path=/api/user/*匹配 /api/user/ 下的一级子路径,例如 /api/user/profile
      多级通配符Path=/path/**Path=/api/user/**匹配 /api/user/ 下的所有子路径,包括多级子路径,例如 /api/user/profile 和 /api/user/orders/123
      正则表达式Path=/patternPath=/api/user/\d+匹配 /api/user/ 后跟一个或多个数字的路径,例如 /api/user/123
  4. filters

    1. 类型:列表

    2. 作用:定义一组过滤器,用于在请求转发前后对请求或响应进行修改。过滤器可以改变请求路径、添加请求头等。

    3. 常见过滤器:

      • StripPrefix:去掉路径前缀。

        • StripPrefix 过滤器可以用来去掉路径中的前缀部分。这个过滤器更简单,适合去掉固定数量的路径段。

          例如:

          spring:
            cloud:
              gateway:
                routes:
                  - id: user-service
                    uri: lb://user-service
                    predicates:
                      - Path=/api/user/**
                    filters:
                      - StripPrefix=2
          

          在这个配置中:

          • Path=/api/user/** 表示匹配以 /api/user/ 开头的路径。
          • StripPrefix=2 表示去掉路径中的前两个段,即 /apiuser
      • RewritePath:重写请求路径。

      • springCloud 中网关自动转发到其他服务就是使用改属性的配置

      • AddResponseHeader:添加响应头。

      • SetStatus:设置响应状态码。

      • Retry:重试机制。

  5. order

    1. 类型:整数
    2. 作用:定义路由的优先级。顺序值越小,优先级越高。默认情况下,路由是按配置顺序依次匹配的,只要匹配到就不再往下匹配。
  6. metadata

    1. 类型:键值对
    2. 作用:存储额外的元数据信息,可以在过滤器或其他组件中使用。

二、问题分析,springCloud微服务中没有任何路由配置,网关为什么能根据请求转发到相应的业务服务的

2.1 开启,用于启用通过服务发现来路由到服务的功能

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true

2.2 断点RoutePredicateHandlerMapping类查看自动注册的路由

在这里插入图片描述

发现有两条【lb://wuxsms-auth】服务的路由配置

在这里插入图片描述

为什么会有两条呢?

  1. 第一条:nacos配置中心自定义配置的一条
  2. 第二条:配置【spring: cloud: gateway: discovery: locator: enabled: true】是自动创建的一条

第一条:

在这里插入图片描述

第二条:

在这里插入图片描述

2.3 自动创建注册到Nacos的路由配置,包括dubbo服务

onNext(Route{id='ReactiveCompositeDiscoveryClient_wuxsms-auth', uri=lb://wuxsms-auth, order=0, predicate=Paths: [/wuxsms-auth/**], match trailing slash: true, gatewayFilters=[[[RewritePath /wuxsms-auth/(?<remaining>.*) = '/${remaining}'], order = 1]], metadata={nacos.instanceId=192.168.1.111#8889#DEFAULT#DEFAULT_GROUP@@wuxsms-auth, nacos.weight=1.0, nacos.cluster=DEFAULT, nacos.healthy=true, dubbo.metadata-service.urls=[ "dubbo://192.168.1.111:20880/com.alibaba.cloud.dubbo.service.DubboMetadataService?anyhost=true&application=wuxsms-auth&bind.ip=192.168.1.111&bind.port=20880&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&group=wuxsms-auth&interface=com.alibaba.cloud.dubbo.service.DubboMetadataService&methods=getAllServiceKeys,getServiceRestMetadata,getExportedURLs,getAllExportedURLs&pid=1540&qos.enable=false&release=2.7.4.1&revision=2.2.0.RELEASE&side=provider&threads=500&timeout=6000&timestamp=1731655720770&version=1.0.0" ], preserved.register.source=SPRING_CLOUD}})
  1. predicate: /wuxsms-auth/**,配置服务名称开头的路由
  2. RewritePath : /wuxsms-auth/(?.*), /${segment} 去掉服务前缀后再转发到相应的服务
  3. order:0 ,小于nacos配置中心的优先级
  4. match trailing slash:true 匹配尾部斜杠
  5. Metadata: 元数据 (存储额外的元数据信息,可以在过滤器或其他组件中使用)

2.4 未开启 【spring: cloud: gateway: discovery: locator: enabled: false】

在这里插入图片描述

不开启该配置,则需要手动配置路由规则。若两者都没有配置则系统无法正常访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、理论基础-PSI

之前参加了隐语第2期&#xff0c;对隐语SecretFlow框架有了大致的了解&#xff0c;这次参加隐语第4期&#xff0c;学习下PSI和PIR。 一、PSI定义 首先介绍PSI的定义&#xff0c;PSI&#xff08;隐私集合求交&#xff0c;Private Set Intersection即PSI)是安全多方计算&#x…

ZLMediaKit+wvp (ffmpeg+obs)推拉流测试

这里使用了两种方式: ffmpeg命令和 OBS OBS推流在网上找了些基本没有说明白的, 在ZLMediaKit的issues中看到了一个好大哥的提问在此记录一下 使用OBS推流&#xff0c;rtmp&#xff0c;报鉴权失败 推流 1. ffmpeg命令推流 官方说明文档地址: 推流规则 rtsp://192.168.1.4:10554…

K8S,StatefulSet

有状态应用 Deployment实际上并不足以覆盖所有的应用编排问题&#xff1f; 分布式应用&#xff0c;它的多个实例之间&#xff0c;往往有依赖关系&#xff0c;比如&#xff1a;主从关系、主备关系。 还有就是数据存储类应用&#xff0c;它的多个实例&#xff0c;往往都会在本地…

openEuler 知:安装系统

文章目录 前言图形化安装文本方式安装 前言 本文只介绍安装过程中需要特别注意的地方&#xff0c;常规的内容需要参考其它文档。 图形化安装 自定义分区&#xff1a; 说明&#xff1a;anaconda 默认分区&#xff0c;在 OSNAME.conf 中进行了配置&#xff0c;openEuler 默认根…

打通Vue3+Flask(python3)+Mysql-实现简单数据交互

一、需要准备的工具 下载python3&#xff0c;Vscode&#xff0c;pycharm&#xff08;这里用的社区版&#xff09;&#xff0c;phpstudy_pro&#xff0c;Node.js&#xff08;建议下载长期支持版本&#xff0c;版本不宜过低&#xff0c;比如18,20&#xff09;&#xff0c;Vue.js…

SpringBoot的validation参数校验

文章目录 前言一、引入validation 依赖二、validation中的注解说明 &#xff08;1&#xff09;Validated&#xff08;2&#xff09;Valid&#xff08;3&#xff09;NotNull&#xff08;4&#xff09;NotBlank&#xff08;5&#xff09;NotEmpty&#xff08;6&#xff09;Patte…

Webhook应用指南:借助mc工具实现智能自动化

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 Webhook应用指南&#xff1a;借助mc工具实现智能自动化 前言Webhook 基础知识什么是 Webhook&…

【全网最新】若依管理系统基于SpringBoot的前后端分离版本配置部署

目录 提前准备&#xff1a; 下载源代码 设置依赖 设置后台连接信息 运行后台 运行前端 安装npm依赖 启动前端 登录网页客户端 提前准备&#xff1a; 1、安装mysql 5以上就可以。 2、安装redis. 3、安装npm npm下载地址&#xff1a;https://nodejs.org/dist/v22.12…

科学演进:现代视角下的亚里士多德理论100例

科学演进&#xff1a;现代视角下的亚里士多德理论100例 引言 亚里士多德&#xff08;Aristotle&#xff09;&#xff0c;公元前384年出生于希腊北部的斯塔吉拉&#xff0c;是古希腊最杰出的哲学家、科学家和教育家之一。他不仅是柏拉图的学生&#xff0c;深入学习了柏拉图的理…

98.【C语言】数据结构之队列

目录 1.定义 2.队头和队尾 3.示意图 4.实现队列 两种解决方法 1.使用双向带头循环链表 2.为单向链表再定义一个尾指针tail 操作队列的函数 初始化函数QueueInit 插入函数QueuePush 删除函数QueuePop 写法1 注意 写法2 计算队列大小函数QueueSize 销毁函数Queu…

SQL项目实战与综合应用——项目设计与需求分析

项目设计与需求分析是软件开发过程中的核心环节&#xff0c;尤其在涉及数据库的应用时&#xff0c;良好的设计将直接影响到项目的可扩展性、性能和维护性。本文将深入探讨数据库设计的最佳实践&#xff0c;结合 C 与 SQL 的实际应用场景&#xff0c;涵盖项目需求收集、数据库设…

TCP的“可靠性”(下)——三次握手四次挥手

目录 建立连接&#xff08;三次握手&#xff09;为啥要进行握手&#xff1f;&#xff1f;意义何在&#xff1f;&#xff1f;常见面试题&#xff1a;为啥必须是三次握手&#xff1f; 断开连接&#xff08;四次挥手&#xff09;三次握手和四次挥手的相同点和不同点连接过程中涉及…

煤矿 35kV 变电站 3 套巡检机器人 “上岗”,力破供电瓶颈

近日&#xff0c;杭州旗晟智能科技与甘肃陈家沟煤矿35kV变电站配电室的三套智能巡检机器人线下测试顺利完成&#xff0c;并成功交付使用&#xff0c;这为陈家沟煤矿的电力运维工作注入了全新的活力与强大的技术支撑。 一、项目背景 甘肃陈家沟煤矿35kV变电站于2024年3月13日动…

【AI系统】推理参数

推理参数 本文将介绍 AI 模型网络参数方面的一些基本概念&#xff0c;以及硬件相关的性能指标&#xff0c;为后面让大家更了解模型轻量化做初步准备。值得让人思考的是&#xff0c;随着深度学习的发展&#xff0c;神经网络被广泛应用于各种领域&#xff0c;模型性能的提高同时…

列表| 习题+思维导图

列表习题 1. 已知列表xlist(range(9))&#xff0c;那么执行语句del x[:2]之后&#xff0c;x的值为&#xff08;D&#xff09; A.[1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9] B.[1&#xff0c;3&#xff0c;5&#xff0c;7] C.[0&#xff0c;1&#xff0c;3&a…

在freeBSD上开启IPSec内核功能

我使用的版本strongSwan 6.0.0, FreeBSD 14.1-RELEASE, amd64 背景 在freeBSD上配置strongSwan&#xff0c;启动charon时&#xff0c;一直遇到如下错误&#xff1a; unable to set IPSEC_POLICY on socket: Protocol not available过程 此前查阅的某个文档说 freeBSD已经默…

初识树(二叉树,堆,并查集)

本篇博客将涉及到一些专业名词&#xff1a;结点、深度、根、二叉树、满二叉树、完全二叉树、堆、并查集等。 概要 树型结构是一类重要的非线性数据结构。其中以树和二叉树最…

知从科技闪耀汽车智能底盘大会:共探软件安全新篇章

在汽车科技蓬勃发展的浪潮中&#xff0c;智能底盘技术正成为引领行业变革的关键力量。11月27日-28日&#xff0c;盖世汽车 2024 第四届汽车智能底盘大会盛大召开&#xff0c;上海知从科技有限公司受邀出席此次盛会&#xff0c;与众多汽车领域的精英齐聚一堂&#xff0c;共话智能…

TCP Analysis Flags 之 TCP Spurious Retransmission

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

241205_使用本地vosk模型实现流式语音识别

241205_使用本地vosk模型实现流式语音识别 上一篇我们使用了vosk模型实现了本地的语音识别&#xff0c;但是存在一个严重的问题&#xff0c;因为我们采用的是整段音频录制结束之后再进行转文字并进行关键字检索&#xff0c;就会导致识别不实时&#xff0c;在环境噪音较为复杂&…