您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Springcloud-alibaba整合gateway

Springcloud-alibaba整合gateway

来源:五一七教育网

Springcloud-alibaba整合gateway

每天多学一点点~
话不多说,这就开始吧…

文章目录

1.前言

之前学习了nacos,sentinel,并对sentinel进行了持久化改造。现在轮到了gateway了

2. gateWay简介

Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul 网关。网关作为流量的,在微服务系统中有着非常作用。据说性能是第一代网关 zuul的1.5倍。(基于Netty,WebFlux)。
:由于不是Sevlet容器,所以他不能打成war包, 只支持SpringBoot2.X不 支持1.x

网关作用:
路由转发、权限校验、限流控制等作用

没有网关:

使用网关:

2. 搭建SpringCloudGateWay

gateway没有注解。。。

3. gateway转发规则

4. GateWay的核心概念

  1. 路由
    网关的基本构建模块,它是由ID、目标URl、断言集合和过滤器集合定义, 如果集合断言为真,则匹配路由。
  2. Predicate(断言)
    这是java 8的一个函数式接口predicate,可以用于lambda表 达式和方法引用,输入类型是:Spring Framework ServerWebExchange,允许开发人员匹配来自HTTP请求的任何内容,例如请求头headers和参数paramers
  3. Filter(过滤器)
    这些是使用特定工厂构建的Spring Framework GatewayFilter 实例,这里可以在发送下游请求之前或之后修改请求和响应

5. 路由断言工厂

类名必须以 RoutePredicateFactory 结尾,下面有个例子

具体请看gateway官网,都有

6. 自定义谓词工厂

这里以时间举个例子

  1. 书写一个配置类,用于接受配置

    /**

    • Created by zjq on 2020/06/05.
      */
      @Data
      public class MyTimeBetweenConfig {

      private LocalTime startTime;

      private LocalTime endTime;

    }

  2. 写一个自定义谓词工厂,类名必须要以RoutePredicateFactory结尾然后继承AbstractRoutePredicateFactory

    /**

    • Created by zjq on 2020/06/05.
      */
      @Component
      @Slf4j
      public class MyBetweenRoutePredicateFactory extends AbstractRoutePredicateFactory {

      public MyBetweenRoutePredicateFactory() {
      super(MyTimeBetweenConfig.class);
      }

      @Override
      public Predicate apply(MyTimeBetweenConfig config) {

       LocalTime startTime = config.getStartTime();
      
       LocalTime endTime = config.getEndTime();
      
       return new Predicate<ServerWebExchange>(){
           @Override
           public boolean test(ServerWebExchange serverWebExchange) {
               LocalTime now = LocalTime.now();
       		// 判断当前时间是否在在配置的时间范围类
               return now.isAfter(startTime) && now.isBefore(endTime);
           }
       };
      

      }

      public List shortcutFieldOrder() {
      return Arrays.asList(“startTime”, “endTime”);
      }

    }

  3. yml配置

    加上 2 中springcloud搭建gateway的yml文件 spring.profiles.active: 这个文件

    spring:
    cloud:
    gateway:
    routes:
    - id: my-timeBetween #id必须要唯一
    uri: lb://product-center # 任意一个微服务工程
    predicates:
    #当前请求的时间必须在早上7点到 晚上11点 http://localhost:8888/selectProductInfoById/1
    #才会被转发 到http://product-center/selectProductInfoById/1
    - MyTimeBetween=上午7:00,下午11:00

gateway还有很很多,官网都有啦。下面就是sentinel集成gateway了。

7.结语

世上无难事,只怕有心人,每天积累一点点,fighting!!!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务