4.gateway在项目中的应用

4.gateway在项目中的应用,第1张

目录:

  1. 自定义网关过滤器的方式:Spring Cloud Gateway系列【7】自定义过滤器_云烟成雨TD的博客-CSDN博客_gateway自定义过滤器
    1. 继承AbstractGatewayFilterFactory
    2. 实现GatewayFilter接口
    3. 注意:网关过滤器和全局过滤器GlobalFilter的区别
  2. 应用方式一:自定义网关过滤器实现GatewayFilter 接口+数据库存储路由信息
  3. 应用方式二:自定义网关过滤器继承AbstractGatewayFilterFactory+配置文件存储路由信息
  4. 思考:
    1. 那什么应该用全局过滤器?什么时候用网关过滤器呢?比如,用户认证授权,ip拦截应该用什么?
    2. 有了网关,还需要用serlvet的过滤器filter和springmvc的拦截器Interceptor吗?
    3. 关于MVC 拦截器 InterceptorServlet Filterspring aop
      MVC 拦截器 Interceptor 是一个仅仅针对 “MVC” 这种特定场景的概念。这玩意和Servlet Filter差不多,只能用来拦截通往Controller的请求。 AOP应用就广泛了,任何Spring管理的bean,它public的方法,都能使用AOP来拦截。
  5. 扩展
    1. 与nocas整合:spring cloud gateway能读取到naco的服务注册信息,通过这些服务注册信息进行分发:spring cloud gateway和nacos整合 - 大笨象会跳舞 - 博客园
    2. 限流简单实现:SpringCloud 微服务网关Gateway常用限流算法以及简单实现_liuhenghui5201的博客-CSDN博客_gateway 限流算法
    3. 项目参考:SpringCloud之服务网关Gateway_intomylife的博客-CSDN博客_springgateway

一.自定义网关过滤器实现GatewayFilter 接口+数据库存储路由信息 

https://www.jb51.net/article/150507.htm

二. 自定义网关过滤器继承AbstractGatewayFilterFactory+配置文件存储路由信息

application.yml

server:
  port: 50066
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        namespace: 795b600f-8115-4ba8-9238-ea9db26b960c
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名称进行路由
          lower-case-service-id: true
      routes:
        - id: path_route # 1.路径过滤器
          uri: lb://nacos-provide # 将请求交给在nacos注册服务名为nacos-provide的服务
          predicates:
            - Path=/goods/** # 拦截所有请求路径以goods开头的请求
          filters:
            - StripPrefix=1     # StripPrefix参数表示在将请求发送到下游之前从请求中剥离的路径个数。
            # 本来请求为http://localhost:50066/goods/getGoods,现在要为http://localhost:50066/goods/goods/getGoods
        - id: time_route # 2.时间过滤器
          uri: https://www.baidu.com/
          predicates:
            - Path=/after/aaa
            - After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
          filters:
            - Ip=true
            - Authorize=true
        - id: ip_route # 3.ip过滤器
          uri: lb://nacos-provide
          predicates: 
            - RemoteAddr=127.0.100.0
        - id: baidu_route
          uri: https://www.baidu.com/
          predicates:
            - Path=/baidu/aaa
          filters:
            - StripPrefix=1     # StripPrefix参数表示在将请求发送到下游之前从请求中剥离的路径个数。
        # 自定义过滤器的第三种方式的配置
        - id: ipAndAuthGatewayFilerFactory # 4.自定义ip过滤器 ip+oauth
          uri: lb://nacos-feign # 关联feign
          predicates:
            - Path=/feign/**
          filters:
          # IpGatewayFilterFactory名字有限制,必须是自定义+GatewayFilterFactory的格式,如Ip+GatewayFilterFactory,Authorize+GatewayFilterFactory
          # 关键在下面一句,值为true则开启认证,false则不开启
          # 这种配置方式和spring cloud gateway内置的GatewayFilterFactory一致
            - Ip=true
            - Authorize=true

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/890129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存