Spring Cloud Gateway 新一代网关
一.简介
Gateway是在Spring生态系统上构建的API网关服务,基于Spring5,Spring Boot,Project Reactor等技术。
Gateway旨在提供一种简单有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等……
Spring Cloud Gateway目标是为了替换zuul,为了提升网关性能,Spring Cloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层是使用了高性能的Reactor模式通信框架Netty。
能干什么:反向代理、鉴权、流量控制、熔断、日志监控……
Gateway是基于异步非阻塞模型上进行开发的。
特性:
1.动态路由:能够匹配任何请求属性
2.可以对路由指定Predicate(断言)和Filter(过滤器)、
3.集成SpringCloud服务发现功能
4.集成Hystrix的断路器功能
5.易于编写的Predicate和Filter
6.请求限流功能
7.支持路径重写
二.三大核心概念
1.Route(路由)
路由是构建网关的基本模块,它由ID、目标URI、一系列的断言和过滤器组成,如果断言为true则匹配该路由
2.Predicate(断言)
开发人员可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由
3.Filter(过滤)
指的是Spring框架中的GatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改。
三.操作
①导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
记得移除spring-boot-starter-web依赖
②yml配置
server:
port: 9527
spring:
application:
name: cloud-gateway
cloud:
gateway:
routes:
-id: payment_routh
uri: http://localhost:8001
predicates:
- Path=/payment/get/**
-id: payment_routh2
uri: http://localhost:8001
predicates:
- Path=/payment/lb/**
(由于博主没电脑,这个yml格式不一定准确,大家看着改,见谅)
浏览器输入 localhost:9527/payment/lb/1查看结果