• Spring Cloud Gateway学习


    API网关:作用就是把各个服务对外提供的API汇集起来,让外界看起来是一个统一的接口。

    网关 = 路由转发 + 过滤器(编写额外功能)

    Spring Cloud Gateway是Spring Cloud的二级子项目,提供了微服务网关功能。

    Spring Cloud Gateway主要包含:

    Route:路由,一个路由包含ID、URI、Predicate(附加条件和内容,如当满足某种条件再进行路由转发)集合、Filter(在Gateway运行过程中Filter负责在代理服务『之前』或『之后』去做一些事情 )集合

    在这里插入图片描述

    网关客户端访问Gateway网关,Gateway中Handler Mapping对请求URL进行处理。处理完成后交换Web Handler,Web Handler会被Filter进行过滤。Filter中前半部分代码是处理请求的代码。处理完成后调用真实被代理的服务。被代理服务响应结果,结果会被Filter中后半部分代码进行操作,操作完成后把结果返回给Web Handler,再返回给Handler Mapping,最终响应给客户端。

    spring:
      application:
        name: gateway-demo
      cloud:
        gateway:
          discovery:
            locator:
              # 开启当前项目服务注册与发现功能
              enabled: true
              # 把服务名称转换为小写,Eureka中默认都是大写
              lower-case-service-id: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Route规则参考:org.springframework.cloud.gateway.route.RouteDefinition

    谓词Predicate:在Spring Cloud Gateway中谓词实现org.springframework.cloud.gateway.handler.predicate.GatewayPredicate接口。其中类名符合XXXRoutePredicateFactory,其中XXX就是在配置文件中谓词名称。Path=/server/book/** 实际使用的就是PathRoutePredicateFactory

    Query:设置必须包含的参数名。

    Header:设置请求头中必须包含的内容(参数、参数值)。

    Method:设置允许的请求方式。

    RemoteAddr:设置允许访问的客户端地址。

    Host:设置匹配请求参数中Host参数的值。(支持?匹配一个字符,*匹配0个或多个字符,**匹配0个或多个目录)。

    Cookie:设置请求中包含指定Cookie名和满足特定正则要求的值(Cookie必须有两个值,第一个Cookie包含的参数名,第二个表示参数对应的值(可以正则表达式))。

    Before:设置在指定时间点之前。

    After:设置在指定时间点之后。

    Between:请求时必须在设定的时间范围内容,才进行路由转发。

    Weight:设置负载均衡中权重。同一组中URIne进行负载均衡。(语法:Weight=组名,负责均衡权重),默认条件是标准轮询。分组名称必须相同。

    Filter

    在路由转发到代理服务之前和代理服务返回结果之后额外做的事情。Filter执行了说明谓词条件通过了。

    在Spring Cloud Gateway的路由中Filter分为:

    内置Filter,都是org.springframework.cloud.gateway.filter.GatewayFilter实现类

    自定义GlobalFilter,所有的路由都会运行

    自定义GatewayFilter,在特定的路由上运行

    内置Filter

    AddRequestHeader:添加请求头参数,参数和值之间使用逗号分隔

    Add

  • 相关阅读:
    MySQL数据库技术笔记(1)
    华为云云耀云服务器L实例评测|教你如何使用云服务器L实例
    Vue的三种安装方式
    笨方法学Python
    Docker介绍
    反转链表系列
    [Linux]多线程编程
    ZYNQ图像处理项目——线性神经网络识别mnist
    【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】
    mysql5.7安装教程
  • 原文地址:https://blog.csdn.net/liwenyang1992/article/details/126356802