Gateway

作者: 乌鲁木齐001号程序员 | 来源:发表于2020-07-11 19:21 被阅读0次

    Gateway | 简介

    • Spring Cloud Gateway 是 Spring 官方提供的 API 网关;
    • Gateway 是基于 Spring5 和 Springboot2 做开发的;
    • Gateway 是基于 Netty 开发的异步调用网关;

    Gateway | 特性

    • 提供动态路由和限流等措施;
    • 提供了易于编写的 Predicate 和 Filter,提供了良好的扩展性;
    • 提供了 Discovery 和 Hystrix 的集成;

    Gateway | 架构图

    Gateway 架构图.png

    Gateway | Predicate

    Predicate 使用
    • Predicate 是路由匹配规则,满足条件即可触发路由;
    • Predicate 可以进行自定义,满足个性化要求;
    • Spring Cloud Gateway 预置了很多 Predicate;
    自定义 Predicate
    • 写一个类继承 AbstractRoutePredicateFactory,泛型指定了用来装 application.yml 中参数值的是哪个类;
    • 这个类的名字必须以 RoutePredicateFactory 为结尾,RoutePredicateFactory 之前的内容就是 application.yml 中 predicates 的 key;
    • shortcutFieldOrder 方法指明了,application.yml 中的参数值存储在泛型类中的哪个属性;
    • apply 方法,实现了匹配规则;请求来了,如果配这个类的规则匹配到了,就代理到其 uri 指定的地方去;
    预定义 Predicate
    类型 作用 入参
    After 在该日期之后发生的请求都将被匹配 日期时间
    Before 在该日期时间之前的请求都将被匹配 日期时间
    Between datetime1 和 datetime2 日期时间、日期时间
    Cookie 请求包含次 cookie 名称且正则表达式为真的将会被匹配 cookie 名称和正则表达式
    Header 请求包含次 header 名称且正则表达式为真的将会被匹配 header 名称和正则表达式
    Host 使用 Ant 路径匹配规则,. 做分隔符 host name 列表
    Method 需要匹配的 HTTP 请求方式 HTTP Method 字符串
    Path 判断请求路径是否满足要求 Path 表达式和可选标识
    Gateway | Filter
    • Filter 可以对 Request 进行请求过滤处理;
    • Gateway 的 Filter 分为全局和局部两种;
    Gateway | 自定义全局 Filter
    • 实现接口 GlobalFilter,Ordered;
    • 注入 IoC 中就行;
    Gateway | 自定义局部 Filter
    • 继承 AbstractGatewayFilterFactory,和自定义 Predicate 一样;
    • 注入 IoC;
    Gateway | 预置全局 Filter
    类型 作用
    LoadBalancerClientFilter 负载均衡过滤器
    NettyRoutingFilter 默认使用 Netty 的底层
    RouteToRequestUrlFilter 新的请求路由
    WebSocketRoutingFilter websocket 路由
    GatewayMetricsFilter 路由监控,配合 spring-boot-starer-actuator
    Gateway | 预置局部 Filter
    类型 作用
    AddRequestHeader 添加请求 Header
    AddRequestParameter 添加请求参数
    AddResponseHeader 添加响应 header
    DedupeResponseHeader 响应头去重
    HystrixGatewayFilters 断路器的网关
    PrefixPath 路径匹配
    PreserveHostHeader 发送原始 host
    RequestRateLimiter 限流
    RedirectTo 重定向

    相关文章

      网友评论

          本文标题:Gateway

          本文链接:https://www.haomeiwen.com/subject/efqbcktx.html