Spring Cloud2024.x实战 | Gateway系列 | 第1篇:springcloud整合网关gateway

1 引言

Spring Cloud Gateway 是 Spring Cloud 生态系统中的一部分,它是一个基于 Spring Framework 构建的 API 网关解决方案,用于构建微服务架构中的路由、过滤和转发请求,是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等等。它的主要作用和意义包括:

1.路由和转发

路由管理:Gateway 可以将传入的请求路由到不同的微服务。这通过定义路由规则来实现,这些规则可以基于请求的路径、头信息或其他条件来决定请求应该被转发到哪个服务。

请求转发:一旦确定了目标服务,Gateway 将请求转发到相应的服务,并将响应返回给客户端。

2.安全性

认证和授权:Gateway 可以集中处理安全性需求,如基于令牌的认证、OAuth2 认证等,确保只有经过授权的请求才能访问后端服务。

SSL/TLS 终止:可以在 Gateway 级别处理 SSL/TLS,减轻后端服务的负担,提高性能和安全性。

3.负载均衡

请求分发:通过集成 Ribbon 或 Spring Cloud LoadBalancer,Gateway 可以实现请求的负载均衡,确保请求能够平均分配到多个实例上,提高系统的可用性和性能。

4.限流和熔断

流量控制:通过内置的限流器(如 Redis RateLimiter),Gateway 可以限制对后端服务的访问频率,防止服务过载。

熔断机制:集成 Hystrix 或 Resilience4j 等熔断器,可以在后端服务失败时提供后备处理,防止级联失败。

6.API 聚合和组合

请求聚合:可以将多个微服务的响应组合成一个单一的响应返回给客户端,简化客户端的调用逻辑。

请求修改:在请求被转发之前,可以对请求进行修改(如添加或修改头信息),或在响应返回之前对响应进行修改。

7.监控和日志记录

集中日志:通过集成 Sleuth 和 Zipkin,Gateway 可以收集并记录所有通过网关的请求和响应的信息,便于监控和问题追踪。

指标监控:与 Prometheus 或其他监控系统集成,可以实时监控网关的性能和健康状况。

8.易于扩展和维护

动态路由配置:通过配置中心(如 Spring Cloud Config),可以动态地更新路由规则,无需重启应用。

插件化架构:Spring Cloud Gateway 的设计允许通过添加自定义过滤器轻松扩展功能。

总之,Spring Cloud Gateway 通过提供高效、安全和灵活的路由、过滤和转发机制,极大地简化了微服务架构中的API管理任务,帮助开发者构建可伸缩、可靠且易于维护的系统。

2 什么是微服务网关?

微服务网关是位于服务之前或者应用程序之前的一个切面,用于保护、增强和控制微服务的访问。

其常见的作用有:

  • 鉴权校验:验证是否认证和授权
  • 统一入口:提供所有微服务的入口点,起到隔离作用,保障服务的安全性
  • 限流熔断
  • 路由转发
  • 负载均衡
  • 链路追踪

3 网关如何选型?

至于为什么使用Gateway而放弃Zuul?

SpringCloud 生态提供了两种API网关产品,分别是Netflix开源的Zuu1和Spring自己开发的SpringCloud Gateway,SpringCloud以Finchely版本为分界线,之前版本使用Zuul作为API网关,之后更推荐使用Gateway。

Netflix已经在2018年开源了Zuul2,但是SpringCloud已经推出了Gateway,并且在github标识没有集成Zuul2的计划。

SpringCloud Gateway和Zuul对比及技术选型?

4 快速入门

示例代码对应:sc-gateway-demo01

本小节我们来对 Spring Cloud Gateway 进行快速入门。创建一个sc-gateway-demo01 项目,最终项目结构如下图:
在这里插入图片描述

4.1 引入依赖

创建 pom.xml 文件中,主要引入 Spring Cloud Gateway 相关依赖。代码如下:

<properties>
        <spring.boot.version>3.4.4</spring.boot.version>
        <spring.cloud.version>2024.0.1</spring.cloud.version>
        <spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>
    </properties>

    <!--
        引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
        在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
     -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhuzhongji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值