Spring Cloud Gateway网关快速入门

Gateway网关
微服务越来越多,网关可以统筹全局,可以指挥所有的微服务
解决问题:
1.统一入口:为全部微服务提供唯一入口点,网关起到外部和内部隔离,保障了后台服务的安全性。
2.鉴权校验:识别每个请求的权限,拒绝不符合要求的请求。
3.动态路由:动态的将请求路由到不同的后端集群中。
4.减少客户端与服务的耦合,服务可以独立发展,通过网关层来做映射。

目前网关解决方案:Nginx+Lua,NetflixZuul,Spring Cloud Gateway
网关快速入门

1 搭建网关模块
----------------------------------
2 引入依赖:starter-gateway
 >
            >org.springframework.cloud>
            >spring-cloud-starter-gateway>
 >
------------------------------------
3 编写启动类
------------------------------------
4 编写配置文件
server:
  port: 80

spring:
  application:
    name: api-server-dateway  #当前应用名称
  cloud:
    #网关配置
    gateway:
      #路由配置:转发规则
      routes:   # 集合
      # id: 唯一标识。默认是一个UUID
      # uri: 转发路径
      # predicates: 条件,用于请求网关路径的匹配规则
      # filters:配置局部过滤器的
      - id: gateway-provider
        uri: http://localhost:8000/ #静态路由
        predicates:
          - Path=/goods/**
        filters: username,whh

      - id: gateway-consumer
        uri: lb://gateway-consumer/ #动态路由
        predicates:
          - Path=/order/**
        # 微服务名称配置
      discovery:
        locator:
          enabled: true #设置true 请求路径前可以添加微服务名称
          lower-case-service-id: true # 允许为小写
          
eureka:
  client:
    service-url: http://localhost:8761/eureka # eureka注册地址
------------------------------------
5 启动测试

GatewayFilter 局部过滤器:是针对单个路由的过滤器。只需要在配置文件配置局部过滤器名称,并为其指定对应的值,就可以让其生效。

GlobalFilter 全局过滤器:不需要在配置文件中配置,系统初始化时加载,并作用在每个路由上。
自定义全局过滤器步骤:
1、定义类实现 GlobalFilter 和 Ordered接口
2、复写方法
3、完成逻辑处理

@Component
public class MyFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("自定义全局过滤器执行了~~~");
        return chain.filter(exchange);//放行
    }

    /**
     * 过滤器排序
     * @return 数值越小 越先执行
     */
    @Override
    public int getOrder() {
        return 0;
    }
}

你可能感兴趣的:(Spring,Cloud,java,spring)