springcloud GateWay介绍

SpringCloud Gateway作为服务的统一入口,具备路由、鉴权、限流等功能。它包含route定义,使用了predicate断言进行条件判断,并通过filter进行请求处理。内置多种断言工厂,如时间、Cookie、Header等匹配。过滤器能修改请求和响应,实现服务熔断、限流等高级功能。

网关是对外提供服务的唯一入口,介于客户端与服务器段之间,可以用于鉴权、限流、路由、监控等功能

重要角色

route路由

路由包括一个路由id+一个目标url地址+一组断言工厂+一组过滤器

predicate断言

相当于一个条件判断,对http请求进行指定规则的匹配,如果匹配通过返回true,此时请求会进入过滤器链,经过过滤器链的层层处理之后,再路由到指定url地址

filter过滤器

请求处理前,对请求进行一些加工操作

使用

通过配置文件的方式

spring:
  cloud:
    gateway:
#      路由1(请求转发)
      routes:
        #路由到百度
        - id: baidu_route
#          路由uri地址
          uri: https://www.baidu.com
#          断言:路由规则
          predicates:
#            拦截
            - Path= /baidu
        #路由2到 consumer
        - id: consumer_route
          #          路由uri地址
          uri: http://127.0.0.1:8080
          #          断言:路由规则
          predicates:
            #            拦截
            - Path= /consumer/**
        #路由3到 provider
        - id: provider_route
          #          路由uri地址
          uri: http://127.0.0.1:8081
          #          断言:路由规则
          predicates:
            #            拦截
            - Path= /provider/**
    nacos:
      # 指定nacos注册中心的地址
      discovery:
        server-addr: 127.0.0.1:8848
  # 指定微服务的名称
  application:
    name: msc-gateway

 通过configuration类的方式


@Configuration
public class ApiConfig {
    /**
     * 路由规则写在配置类中
     * @param builder
     * @return
     */
    @Bean
    public RouteLocator routeLocator(RouteLocatorBuilder builder) {
        return builder.routes().route(predicateSpec -> predicateSpec
                .path("/**")
                .uri("https://www.baidu.com").id("baidu_route")).build();
    }
}

断言

springcloud gateway有许多内置的断言工厂

请求时间在指定时间之后,断言为true

请求时间在指定时间之前,断言为true

请求时间在指定时间范围内,断言为true

请求携带了cookie中包含了指定的key和vaue时,匹配为true

请求携带了Header中包含了指定的key和vaue时,匹配为true

请求头中的host属性携带了指定的host时,匹配为true

请求头中请求方式是指定的请求方式,断言为true、

请求路径是指定的请求路径,断言为true

请求路径所要访问的ip是指定的ip区间,断言为true

权重断言工厂

过滤器

往request添加指定的header

往request中添加指定key和vaue的过滤器

往response中添加指定header的过滤器

为指定的url添加一个url前缀的过滤器

为指定的url去除掉指定长度的前缀

为一个url,替换成另一个url的过滤器

过滤器完成网关层的服务熔断和降低

对请求进行限流的过滤器,redis令牌桶实现

全局的过滤器GlobalFilter

在自定义了一些 GlobalFilter 后,为了保证这些Filter 的执行顺序,在每个返回 GlobalFilter的
方法上添加@Order,或直接使自定义的 GlobalFilter 类实现 Order 接口,就可以修改Filter的执行顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值