快速理解微服务中Gateway的概念

一.基本概念

定义:

在微服务架构中,Spring Cloud Gateway 是一个用于API网关的框架,它是一个基于 Spring Framework 的高效、可扩展的路由器和反向代理,它能够将外部请求转发到适当的微服务,并提供一些与请求处理相关的功能,如路由、负载均衡、限流、安全性等。

作用:

在微服务的架构下,前端是没有办法直接访问后端的微服务,因为每个微服务都有不同的IP和端口,所以就引入了API网管,引入之后,前端就只需访问API网关就可以了,里面的鉴权和转发、其他功能都是通过API网关来进行处理的。

二.三大核心功能

如图所示:

1.Route(路由) :路由是 Spring Cloud Gateway 的基本构建块,它定义了请求的匹配规则和转发目标,通过配置路由,可以将请求映射到后端的服务实例或URL上,路由规则可以根据请求的路径、方法、请求头等条件进行匹配(第二个核心,断言),并指定转发的目标URI;

2.Predicate(断言) :断言用于匹配请求的条件,如果请求满足断言的条件,则会应用所配置的过滤器(第三个核心,Filter),Spring Cloud Gateway提供了多种内置的断言,如Path(路径匹配)、Method(请求方法匹配)、Header(请求头匹配)等,同时也支持自定义断言;

3.Filter (过滤器) :过滤器用于对请求进行处理和转换,可以修改请求、响应以及执行其他自定义逻辑,Spring Cloud Gateway 提供了多个内置的过滤器,如请求转发、请求重试、请求限流等,同时也支持自定义过滤器(鉴权实现),可以根据实际需求来实现自定义过滤器。

三.工作原理

官网工作原理图如下:

Spring Cloud Gateway 的工作原理可以简要概括为:

1.请求进入网关:当客户端发起请求时,Spring Cloud Gateway 作为入口点接收到请求;

2.路由规则匹配:Spring Cloud Gateway 会根据配置的路由规则(Predicate)检查请求的各项信息,决定将请求转发到哪个微服务;

3.过滤器执行:请求经过前置过滤器(如果有的话),例如:进行身份验证、限流控制、修改请求等;

4.转发请求到微服务:请求被路由到目标微服务,网关通过服务发现机制找到合适的服务实例;

5.响应处理:微服务处理完请求后,将响应返回给网关,网关会经过后置过滤器进行处理(例如:修改响应、记录日志等);

6.响应返回客户端:最终,经过处理的响应会返回给客户端。

两个比较重要的概率:

1.Gateway Handler(网关处理器):网关处理器是Spring Cloud Gateway的核心组件,负责将请求转发到匹配的路由上,它根据路由配置和断言条件进行路由匹配,选择合适的路由进行请求转发,网关处理器还会依次应用配置的过滤器链,对请求进行处理和转换;

2.**Gateway Filter Chain(网关过滤器链):**网关过滤器链由一系列过滤器组成,按照配置的顺序依次执行, 每个过滤器就可以在请求前、请求后或者是发生异常的时候进行处理,过滤器的执行过程可以修改请求、响应以及执行其他自定义逻辑。

四.配置

java 复制代码
spring:
  cloud:
    gateway:
      routes:
        - id: my_route
          uri: lb://my-service
          predicates:
            - Path=/api/**   # 请求路径匹配 /api/**
          filters:
            - AddRequestHeader=X-Request-Foo, Bar   # 添加请求头
            - AddResponseHeader=X-Response-Foo, Bar  # 添加响应头

这个配置中,网关会把匹配 /api/** 路径的请求转发到名为 my-service 的微服务,并添加一些请求和响应头。

相关推荐
米丘2 天前
微前端之 Web Components 完全指南
微服务·html
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
霸道流氓气质5 天前
Spring Boot 微服务性能优化完全指南
spring boot·微服务·性能优化
地瓜伯伯5 天前
从MESI缓存一致性协议讲透synchronized的底层
java·spring boot·spring·spring cloud·微服务·springcloud
Devin~Y5 天前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
递归尽头是星辰5 天前
AI 访问数据仓库:从直连到微服务化
数据仓库·人工智能·微服务·dataagent·ai数据治理
Hadoop_Liang5 天前
使用Kubernetes Gateway API实现域名访问应用
容器·kubernetes·gateway
就改了5 天前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking
worilb5 天前
Spring Cloud 学习与实践(9):Gateway + JWT 统一鉴权
学习·spring cloud·gateway
至乐活着6 天前
Docker Compose多服务编排实战:从零搭建Node.js+MySQL+Redis全栈应用
docker·微服务·devops·容器编排·compose