Gateway网关

发布时间 2023-11-16 22:35:34作者: 3DG

Gateway 是 SpringCloud 研发的一款开源 API 服务网关组件 (替代原 Zuul 1.x 版) Gateway 使用的 Webflux 中的 reactor-netty响应式编程组件,底层使用了 Netty 通讯框架

特性

基于 Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建

易于编写的 Predicate (断言)和 Filter (过滤器)

动态路由能够匹配任何请求属性

集成 Hystrix 的断路器功能

集成 Spring Cloud 服务发现功能

可以对路由指定断言和过滤器

支持请求限流功能

支持路径重写

三大核心

路由Route

路由是构建网关的基本模块,它由ID、目标URI、一系列的断言和过滤器组成

过滤器Filter

使用过滤器,可以在请求被路由前或者之后对请求进行修改

断言Predicate

开发人员可以匹配 HTTP 请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由

路由 (Route) = 断言(Prediate) + 过滤器 (Eilter)

为什么引入网关

微服务中需要在客户端和服务端之间加一个统一的入口,而在微服务的体系中,承担这个角色的就是网关

常见微服务网关

Nginx: Nginx由内核和模块组成,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件与客户端请求进行 URL 匹配,用于启动不同的模块去完成相应的工作。

Spring Cloud GetWay: Spring Cloud Gateway 是 Spring Cloud 的一个全新的API网关项目,目的是为了替换掉 Zuul1.Gateway 可以与 Spring Cloud Discovery Client (如Eureka) 、Ribbon、Hystrix 等组件配合使用,实现路由转发、负载均衡、熔断等功能,并目 Gateway 还内置了限流过滤器,实现了限流的功能。