一、 Gateway 是什么
Gateway 是 Spring cloud 的一个全新项目,基于 Spring 5 、Spring Boot 2 和 Project Reactor等技术开发的网关
旨在 是为微服务架构提供一种简单有效的统一的 API 路由管理方式
目标 是替代 Zuul
优势 性能更佳,Gateway 是基于 异步非阻塞模型 进行开发的
二、Gateway 的特性
- 基于Spring Framework 5、Project Reactor和Spring Boot 2构建。
- 支持在任何请求属性上匹配路由。
- 提供断言(Predicates)和过滤器(Filters)功能,用于实现灵活的路由和请求处理。
- 具有强大的路由功能,可以根据请求属性进行路由匹配。
- 支持动态配置,可以根据需要动态调整路由规则。
- 集成了服务发现,可以与服务注册中心集成,实现服务路由和负载均衡。
- 具备可扩展性,可以通过自定义过滤器和断言来扩展网关功能。
- 支持负载均衡和集成Spring生态系统的各种功能。
- 提供了高度可扩展性和灵活性,适用于构建复杂的微服务架构和网关服务。
三、使用 Gateway
Maven pom 文件中添加 Gateway 依赖
application.yml 文件,将 此 Gateway 微服务(eureka 需要自己写一个微服务作为 Gateway,Nacos 好像就不需要了,它有自己的客户端)注册进注册中心
将Gateway微服务注册到注册中心的原因包括:
- 服务发现: 注册中心可以让其他微服务发现和访问Gateway服务,实现服务之间的通信和调用。
- 负载均衡: 注册中心可以对Gateway进行负载均衡,确保请求能够平均分配到多个Gateway实例上,提高系统的性能和可靠性。
- 动态路由: 注册中心可以帮助管理和维护Gateway的路由信息,实现动态路由配置和更新。
- 故障恢复: 注册中心可以监控Gateway的健康状态,及时发现故障并进行故障恢复,保证系统的稳定性。
- 统一管理: 将Gateway注册到注册中心可以实现统一的服务管理和监控,方便运维人员对Gateway进行管理和监控。
application.yml ,配置路由规则
四、动态路由
默认情况下 Gateway 会根据注册中心的服务列表,以注册中心中微服务名为路径创建动态路由进行转发,从而实现动态路由的功能
application.yml 开启从注册中心创建动态路由的功能,利用微服务名进行路由,使用 “uri: lb”
这个意思吧,大概就是:
a. 创建 Gateway 微服务,并注册进注册中心,开启发现路由的功能
b. Gateway 微服务就可以根据微服务名称实现动态路由,且负载均衡
五、Predicate 断言
Predicate 就是为了实现一组匹配规则,让请求过来找到对应的 Route 进行处理
六、Filter 过滤器
指的是 Spring 框架中 GatewayFilter 实例,使用过滤器,可以在请求被路由前或者之后对请求进行修改
能干嘛: 全局日志记录,统一网关鉴权