GateWay原理

1. 网关Gateway的基本组成

GateWay官网地址

中文官网

  • Route:路由是GateWay最基础的组件,它包含一个ID,一个目标Url,一些断言集合,一些过滤器集合;如果断言成功的话,路由器就会被匹配
  • Predicate:输入类型是Spring FrameworkServerWebExchange。这使您可以匹配HTTP请求中的所有内容,例如标头或参数。
  • Filter:这些是使用特定工厂构造的Spring FrameworkGatewayFilter实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。

2. 工作原理

客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。该处理程序通过特定于请求的过滤器链运行请求。筛选器由虚线分隔的原因是,筛选器可以在发送代理请求之前和之后运行逻辑。所有“前置”过滤器逻辑均被执行。然后发出代理请求。发出代理请求后,将运行“后”过滤器逻辑。

3.Predicate的两种配置方式

  • 快捷方式配置

    快捷方式配置由过滤器名称识别,后跟一个等号(=),然后是由逗号分隔的参数值(,

    spring:
      cloud:
        gateway:
          routes:
          - id: after_route
            uri: https://example.org
            predicates:
            - Cookie=mycookie,mycookievalue
    
  • 扩展方式配置

    参数看起来更像带有名称/值对的标准Yaml配置。通常,将有一个name钥匙和一个args钥匙,args键是用于配置断言器或过滤器的键值对的映射

    spring:
      cloud:
        gateway:
          routes:
          - id: after_route
            uri: https://example.org
            predicates:
            - name: Cookie
              args:
                name: mycookie
                regexp: mycookievalue
    
  • properties 配置

    server.port=8080
    spring.application.name=api-gateway
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    #表明gateway开启服务注册和发现的功能,并且spring cloud gateway自动根据服务发现为每一个服务创建了一个router,这个router将以服务名开头的请求路径转发到对应的服务。
    spring.cloud.gateway.discovery.locator.enabled=true
    #是将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了),比如以/service-hi/*的请求路径被路由转发到服务名为service-hi的服务上。
    spring.cloud.gateway.discovery.locator.lower-case-service-id=true
    spring.cloud.gateway.routes[0].id=gateway-service
    spring.cloud.gateway.routes[0].uri=lb://service-provider
    spring.cloud.gateway.routes[0].predicates[0]=Path=/provider/**
    

4. Route Predicate Factories (路由断言工厂)

SpringCloudGateway将路由作为SpringWebFlux HandlerMapping基础设施的一部分进行匹配。SpringCloudGateway包含许多内置的路由断言工厂。所有这些断言都匹配HTTP请求的不同属性。可以将多个路由断言工厂与逻辑and语句组合在一起使用。

  • The After Route Predicate Factory
  • The Before Route Predicate Factory

  • The Between Route Predicate Factory

  • The Cookie Route Predicate Factory

  • The Header Route Predicate Factory

  • The Host Route Predicate Factory

  • The Method Route Predicate Factory

  • The Path Route Predicate Factory(基于请求路径的断言,也是用的最多一个)

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值