SpringCloud--Gateway--网关

Spring Cloud Gateway作为Spring Cloud的全新网关,旨在替代Zuul,它基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术构建,提供统一的路由管理方式和过滤器链功能,用于实现安全验证、流量控制、日志输出等。文中详细介绍了API网关的作用、Gateway的三大核心概念:Route、Predicate和Filter,以及如何配置和使用Gateway。
摘要由CSDN通过智能技术生成

Gateway–网关

1、什么是API网关

​ 网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。

​ API网关的职能:

​ 请求接入:作为所有API接口服务请求的接入点

​ 业务聚合:作为所有后端业务的聚合点

​ 中介策略:实现安全、验证、路由、过滤和流控等策略

​ 统一管理:对所有的API服务和策略进行统一管理

​ 总而言之,API网关的作用除了核心的路由功能之外,还可以实现安全验证、流量控制、日志统计等功能。
在这里插入图片描述

2、什么是Gateway

​ Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL1.X,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

​ 官方文档:

​ https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/

3、为什么使用Gateway

​ 从商业上讲,Spring Cloud Gateway可以看做是Zuul1.X的升级版和替代品,因为目前Zuul1.X已经停止维护了,并且Spring尚没有整合Zuul2.X版本,所以Spring官方就自己出品了一个API网关,用来代替Zuul。正是因为 Zuul 2.x 的不断跳票,Spring Cloud 才釜底抽薪推出了自己的服务网关:Spring Cloud Gateway,栈长看了下,使用起来比 Zuul 更简单,配置更方便,所以说选 Spring Cloud Gateway 没错,毕竟是 Spring Cloud 亲儿子,不会始乱终弃。

​ 从性能上讲,Gateway是基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,底层使用的是Spring WebFlux,而Spring WebFlux底层使用的是高性能的Reactor模式通信框架Netty。Zuul1.X构建于 Servlet 2.5,兼容 3.x,使用的是阻塞式的 API,不支持长连接,比如 websockets。另外Spring Cloud Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持websockets,和 Spring 框架紧密集成,开发体验相对来说十分不错。

4、Gateway中的三大核心概念

​ Route(路由):这是网关的基本构建块、它由一个ID,一个目标URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。

​ Predicate(断言):输入类型是一个ServerWebExchange。我们可以使用它来获取HTTP请求中的任何内容,例如headers、cookie、参数等。Gateway提供了十几种断言工厂,用来匹配HTTP请求中的不同内容。

​ Filter(过滤器):Gateway的安全防护、日志输出、流量监控等功能都是通过这些过滤器实现的。Gateway中的Filter按照生命周期可以分为两种类型:pre(业务逻辑执行之前对请求进行操作)和post(业务逻辑执行之后对响应进行操作);按照种类可以也可以分为两种类型:GatewayFilter(单一,由Gateway提供的,一共有30几种)和GlobalFilter(全局,一共10种),此外,我们还可以自定义一些过滤器。

5、Gateway网关路由的配置方式

​ 在Gateway中,路由的跳转方式、跳转前后要执行的过滤器都是在网关路由的配置中进行设置的。Gateway为我们提供了两种网关路由的配置方式,一种是在yml文件中配置,一种是通过配置类配置。

1、yml文件(properties也行)

基本格式:

spring:
	cloud:
		gateway:
			routes:
				#路由1
				- id: service_name1 #路由的唯一标识,一般使用service_name
				  uri: uri #路由的跳转地址
				  predicates: #断言规则,可以用多个,and关系
				  	- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
				  	...
				  filters: #过滤器,可以由多个,and关系
                  	- AddRequestparameter=X-Request-Id,1024
                  	...
                 #路由2 	
                 - id: service_name2 
				  uri: uri 
				  predicates:
				  	- Header=X-Request—Id,\d+
				  	- RemoteAddr=192.168.1.56/24
				  	- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
				  	...
				  filters:
                  	- AddRequestparameter=X-Request-Id,1024
                  	...
                  #路由3、4、5...	
                  ...

2、配置类配置

​ 向容器中注入一个RouteLocator实例,如下:

@Configuration
public class GateWayConfig {
   

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder) {
   
        RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
        routes.route("route_id", r 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值