SpringCloud之Gateway

文章目录

  • 一、服务网关简介
    • 1、什么是服务网关?
    • 2、服务网关的作用
  • 二、Spring Cloud Gateway
    • 1、简介
    • 2、三大核心概念
  • 三、Gateway之路由
    • 1,基础路由配置方式
    • 2,基于代码的路由配置方式
    • 3,和服务注册中心相结合的路由配置方式
  • 四、Gateway之断言条件
    • 1、简介
    • 2、常见predicate的使用
  • 五、Gateway之过滤器
    • 1、内置过滤器
    • 2、自定义过滤器
      • 2.1、全局过滤器
      • 2.2、局部过滤器
  • 六、Gateway之高级特性
    • 1、熔断降级
    • 2、跨域配置

一、服务网关简介

1、什么是服务网关?

        简单理解服务网关就是一个网络关口、通道,是整个服务的统一入口;所有客户端的请求都通过统一的网关接入服务。

2、服务网关的作用

        为微服务云平台提供统一的入口是API网关最主要的用途,除此之外,网关还可承担认证授权、访问控制、路由、负载均衡、缓存、日志、限流限额、转换、映射、过滤、熔断、注册、服务编排、API管理、监控、统计分析等等非业务性的功能。

二、Spring Cloud Gateway

1、简介

        SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
        SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
        Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。
        注意:Spring Cloud Gateway 底层使用了高性能的通信框架Netty。

2、三大核心概念

Filter(过滤器):
       和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对下游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

Route(路由):
       网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

Predicate(断言):
       这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

三、Gateway之路由

1,基础路由配置方式

server:
  port: 9002
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        - id: service1
          uri: http://127.0.0.1:9001
          predicates:
            - Path=/api/bill
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9004/eureka

各字段含义如下:
● id:我们自定义的路由 ID,保持唯一
● uri:目标服务地址
● predicates:路由条件,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。

       上面这段配置的意思是,配置了一个id为service1的URI代理规则,路由的规则为,当访问地址http://localhost:9002/api/bill时,会路由到上游地址http://127.0.0.1:9001/api/bill

2,基于代码的路由配置方式

       转发功能同样可以通过代码来实现,我们可以在启动类 GateWayApplication 中添加方法 customRouteLocator() 来定制转发规则:
SpringCloud之Gateway_第1张图片

3,和服务注册中心相结合的路由配置方式

server:
  port: 9002
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      routes:
        - id: service1
          uri: http://127.0.0.1:9001
          predicates:
            - Path=/api/bill
        - id: service2
            uri: lb://cloud-payment-service
            predicates:
              - Path=/payment/id
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0

你可能感兴趣的:(笔记,spring,cloud,java,gateway,网关)