了解Spring Cloud Gateway让微服务API网关难题迎刃而解!

在微服务架构中,随着服务数量的增加,如何高效地管理和路由客户端请求成为了一个棘手的问题

你是否遇到过这样的场景:

前端需要调用多个后端服务,但每个服务的地址、协议、路径各不相同,导致客户端代码复杂且难以维护?  这时,API 网关应运而生,而 Spring Cloud Gateway 作为 Spring 生态中的佼佼者,提供了强大的路由转发功能,能够轻松解决这些问题。

 所以本章我们来了解并学习 Spring Cloud Gateway的一些知识,首先要明白我们在上边提到的API网关是什么?

API网关就是一个位于前端客户端和后端服务之间的中间层,负责接收客户端的所有API请求,让外部看起来是一个统一的接口,并根据不同的规则将这些请求路由到合适的后端微服务,还可以对请求和响应进行一系列处理与转换

当后端微服务完成请求处理并生成响应结果后,这个结果并不会直接返回给前端应用,而是会再次经过网关。网关会对响应结果进行必要的处理和优化,比如统一格式、添加额外的元数据等,之后再将处理好的响应结果交付给前端应用。通过这种方式,能够简化前端代码的编写,同时也提升了整个系统的可维护性和灵活性。

Gateway API网关的组成

【网关 = 路由转发+过滤器】

路由转发:是指API网关根据预先定义的规则,将客户端的请求转发到后端特定的微服务实例

这里我举一个简单的路由配置例子

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GatewayConfig {

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("user_service_route", r -> r
                        .path("/user/**") // 路径匹配
                        .filters(f -> f
                                .addRequestHeader("X-Request-User", "Value") // 添加请求头
                        )
                        .uri("http://user-service") // 目标服务地址
                )
                .build();
    }
}

以上代码例子有三个关键组件

Route:是路由的唯一标识符,这里设置为user_service_route

URL:是路由的目标地址,表示请求将被转发到该地址

Filters过滤器:过滤器则是用于对请求进行处理和转换,可以修改请求,响应以及执行其他自定义逻辑,提供了多个内置的过滤器,如请求转发,请求重试,请求限流,同时也可自定义过滤器

Spring Cloud Gateway的具体工作流程

1.-- 客户端的所有请求都会先到达发起Spring Cloud Gateway

2.--Gateway内部会先将请求交给Handler Mapping进行处理 ,Handler Mapping会根据配置的路由规则确定请求是否匹配

3. -- 如果匹配成功,请求就会被传递给FilteringWebHandler(过滤处理器)

4.-- 一旦条件满足,请求就会进入到(Filter Chain)过滤器链中,并依次执行前置过滤器逻辑(可修改请求,添加请求头,记录日志等)

5.-- 请求经过前置过滤器处理后,请求会被转发到具体的后端服务,后端服务处理完请求后,返回响应给Gateway,响应会经过后置过滤器(Post-Filters)的处理,然后返回给客户端

【 理解两个重要概念】

Gateway Handler(网关处理器)

1.它是Spring Cloud Gateway的核心组件,负责将请求转发到匹配的路由上

2.根据路由配置和断言条件进行路由匹配,选择合适的路由进行请求转发

3.然后网关处理器依次应用配置的过滤器链,对请求进行处理和转换

Gateway Filter Chain(网关过滤器链

它是由一系列过滤器组成,按照配置的顺序依次执行,每个过滤器可以在请求前,请求后或者发生异常的时候进行处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值