gateway基本配置详解与深入分析

Spring Cloud Gateway 是基于 SpringBootProject Reactor 构建的 API 网关,用于提供路由、过滤和监控等功能。以下是V哥在 SpringBoot 3 项目中集成和配置 Spring Cloud Gateway 的基本步骤和深入分析,提供给你参考:

1、添加依赖

在你的 pom.xml 文件中,添加 Spring Cloud Gateway 的依赖以及 Spring Boot 的依赖管理。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.0</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><!-- Spring Cloud Gateway 依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 其他依赖... -->
</dependencies>

2、配置 application.yml

在你的 Spring Boot 项目的 application.ymlapplication.properties 文件中配置 Gateway 的路由规则和其他相关设置。

spring:application:name: gateway-servicecloud:gateway:enabled: true # 启用 Gateway 功能discovery:locator:enabled: true # 启用服务发现功能routes:- id: example_route # 路由的唯一标识uri: http://example.org # 目标服务的 URIpredicates:- Path=/example/** # 断言,匹配以 /example/ 开头的路径filters:- StripPrefix=1 # 过滤器,去掉路径前缀

3、启动类

创建一个启动类,使用 @SpringBootApplication 注解,并调用 SpringApplication.run() 方法启动 Spring Boot 应用。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}

4、配置路由和过滤器

application.yml 中配置路由规则,id 是路由的唯一标识,uri 是目标服务的地址,predicates 定义了路由的匹配条件,filters 定义了如何处理请求和响应。

例如,使用 Path 断言来匹配特定的路径,并使用 StripPrefix 过滤器来移除请求路径的前缀。

spring:cloud:gateway:routes:- id: example_routeuri: http://example.orgpredicates:- Path=/example/**filters:- StripPrefix=1

5、动态路由配置

如果你的项目中使用了服务发现(如 Eureka),你可以配置动态路由,让 Gateway 动态地发现和路由到服务实例。

    spring:cloud:gateway:discovery:locator:enabled: trueroutes:- id: example_routeuri: lb://example-service # 使用服务名predicates:- Path=/example/**

6、启动服务

运行你的 Spring Boot 应用,Spring Cloud Gateway 会根据配置的路由规则将请求转发到对应的服务。

7、验证配置

通过发送 HTTP 请求到你的网关服务,验证路由和过滤器是否按预期工作。

例如,如果你配置了一个路由规则将 /example/ 路径转发到 http://example.org,那么访问 http://gateway-host/example/ 应该返回 http://example.org 服务的响应。

以上步骤提供了一个基本的 Spring Cloud Gateway 配置示例。在实际应用中,你可能需要根据具体需求配置更多的路由规则、过滤器和全局设置。此外,还可以通过 Java 配置类来定义更复杂的路由和过滤器逻辑。

8、Spring Cloud Gateway 的深入分析

我们可以从以下几个方面进行探讨:

1. 路由详解:

路由是 Spring Cloud Gateway 的核心功能,它定义了如何将外部请求转发到后端服务。每个路由由以下几部分组成:

  • ID:路由的唯一标识。

  • URI:后端服务的地址。

  • Predicates:路由匹配条件,例如路径、方法、主机等。

  • Filters:路由过滤器,用于修改请求和响应。

通过组合不同的 predicatesfilters,可以实现复杂的路由逻辑,如负载均衡、认证、限流等。

2. 过滤器链:

Spring Cloud Gateway 使用过滤器链来处理请求和响应。过滤器可以按顺序执行,也可以根据特定条件执行。过滤器链的执行顺序是由过滤器的 order 属性决定的,数值越小,优先级越高。

3. 常见的过滤器类型包括:

  • AddRequestHeader:添加请求头。

  • AddRequestParameter:添加请求参数。

  • RewritePath:重写请求路径。

  • StripPrefix:移除请求路径的前缀。

  • CircuitBreaker:熔断器,用于防止服务雪崩。

  • RateLimiter:限流器,控制请求的速率。

4. 服务发现与负载均衡:

Spring Cloud Gateway 可以与服务发现组件(如 Eureka、Consul)集成,实现服务的动态发现和负载均衡。通过使用 lb:// 前缀的 URI,网关可以将请求负载均衡到不同的服务实例。

此外,Spring Cloud Gateway 还支持 Spring Cloud LoadBalancer,它提供了一种简单的方法来实现客户端负载均衡。

5. 安全性:

Spring Cloud Gateway 可以与 Spring Security 集成,提供认证和授权功能。通过配置相应的过滤器,可以实现基于 OAuth2JWT 等机制的安全策略。

6. 监控和指标:

Spring Cloud Gateway 支持与 Spring Boot Actuator 集成,提供了一系列的端点来监控网关的运行状态和性能指标。例如,可以通过 /gateway/metrics 端点获取网关的度量信息,通过 /gateway/routes 端点查看当前的路由配置。

7. 性能优化:

Spring Cloud Gateway 基于 WebFlux,使用异步非阻塞的方式处理请求,这有助于提高网关的性能。在高并发场景下,可以通过配置线程池大小、调整内存限制等参数来优化性能。

8. 自定义过滤器和路由:

除了使用内置的过滤器和路由配置,Spring Cloud Gateway 还支持通过 Java 配置类来自定义过滤器和路由。这为实现特定业务逻辑提供了灵活性。

通过深入理解这些高级特性和配置选项,你可以更好地利用 Spring Cloud Gateway 来构建强大、灵活且高性能的微服务网关。在实际项目中,根据业务需求和系统架构来设计和调整网关的配置,以满足不同的应用场景。

欢迎关注 威哥爱编程 一起交流学习,人生海海,相遇就是缘分,让我们以技术为信物,成为相互惦记的人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qwen模型】QWEN TECHNICAL REPORT

【Qwen模型】QWEN TECHNICAL REPORT 论文信息 阅读评价 Abstract Introduction PreTraining ALIGNMENT&#xff08;对齐&#xff09; CODE-QWEN: SPECIALIZED MODEL FOR CODING MATH-QWEN: SPECIALIZED MODEL FOR MATHEMATICS REASONING RELATED WORK CONCLUSION 论文…

v1.9.2-httpsok快速申请免费SSL证书

v1.9.2-&#x1f525;httpsok快速申请免费SSL证书 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具&#xff0c;专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分钟轻松搞定SSL证书自动续期 更新日志 V1…

endnote21从安装到使用!文献引用!Mac版

视频学习和资源获取 新建库 选择上方导航栏处的File下的New 软件 软件界面可以分成四个部分 2是个人图书馆 3是对某一分类中文献的展示 最右侧是对具体一篇文献的摘要、编辑以及PDF 有回形针标志意味着这篇有全文&#xff0c;也就是有pdf 如果没有回形针代表它只有引文信…

HCIP的学习(10)

OSPF不规则区域划分 区域划分 非骨干与骨干区域直接相连骨干区域唯一 限制规则&#xff1a; 非骨干区域之间不允许直接相互发布区域间路由信息OSPF区域水平分割&#xff1a;从非骨干区域收到的路由信息&#xff0c;ABR设备能接收到不能使用&#xff08;从某区域传出的路由&…

敢不敢挑战?看完这篇 Python 学习攻略不成大牛就请我退出 IT !

目录 0基础小白怎么学Python&#xff1f; Python基本概念最全图 1.Python 解释器&#xff1a; 2.Python数据结构&#xff1a; 3.变量与运算符&#xff1a; 4.Python 流程控制&#xff1a; 5.Python 文件处理&#xff1a; 6.Python 输入输出&#xff1a; 7.Python 异常…

注意力机制基本思想(一)

​&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客&#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习基础知识》 相关专栏&#xff1a; ⚽《机器学习基础知识》 &#x1f3d0;《机器学习项目实战》 &#x1f94e;《深度学习项目实战…

2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总 https://docs.qq.com/doc/DSExMdnNsamxCVUJt 行车轨迹估计交通信号灯周期问题 摘要 在城市化迅速发展的今天&#xff0c;交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据&#xff0c;对行车轨迹估计交通信号灯…

DBA面试(ORACLE ADG篇)

一、在Oracle的DG中&#xff0c;RFS、LNSn、MRP、LSP进程的作用分别是什么&#xff1f; 1.RFS进程 RFS&#xff08;Remote File Server&#xff09;进程主要用来接受从主库传送过来的日志信息。对于物理备库而言&#xff0c;RFS进程可以直接将日志写进Standby Redo logs&…

七月论文审稿GPT第4.5版:通过15K条paper-review数据微调Llama2 70B(含各种坑)

前言 当我们3月下旬微调完Mixtral 8x7B之后(更多详见&#xff1a;七月论文大模型&#xff1a;含论文的审稿、阅读、写作、修订 )&#xff0c;下一个想微调的就是llama2 70B 因为之前积攒了不少微调代码和微调经验&#xff0c;所以3月底apple便通过5K的paper-review数据集成功…

在Java Swing的JPanel中实现动态水印添加技术

在Java Swing的JPanel中实现动态水印添加技术 引言场景一&#xff1a;静态图片水印实现步骤应用示例 场景二&#xff1a;动态生成的组件水印应用示例结论 后续拓展 引言 在Java Swing应用程序开发中&#xff0c;JPanel作为基本的容器组件&#xff0c;常被用来构建丰富的图形用户…

机器视觉【1】-机械臂视觉

文章目录 Eye-to-HandEye-in-Hand基于Eye-in-Hand型机械臂单目视觉定位单目相机标定针孔相机模型畸变标定方法机械臂手眼标定手眼标定求解图像预处理图像灰度化与二值化图像滤波图像特征匹配机械臂单目视觉定位目标物体图像深度信息目标物体中心定位参考文献根据机械臂与相机所…

深圳南玻集团(二面)

不得不说这家公司的办事效率是真的高。我昨天下午3点面试的&#xff0c;4点结束。然后4点45分就跟我说面试通过了&#xff0c;叫我明天早上10点进行二面。二面聊了大概20分钟左右吧&#xff0c;那个面试官是信息部的&#xff0c;好像是个总监还是总经理&#xff0c;反正叫沈总。…

详解人证合一API接口背后的身份信息认证

人证合一API接口是一种高级的身份验证解决方案&#xff0c;它将姓名、身份证号码、头像照片等多种生物特征和身份标识信息相结合&#xff0c;通过云端智能分析并与公安部门权威数据库进行实时比对&#xff0c;以确定用户身份的真实性。这个过程不仅仅停留在表面文字信息的匹配&…

基于PyAutoGUI图片定位的自动化截图工具--完成了

1、计划 压测完成后需要编写性能测试报告&#xff0c;报告中所需数据截图较多&#xff0c;使用自动化操作方便快捷&#xff0c;就编写一个界面工具以便后续复用。 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分 基于PyAutoGUI图片定位的自动化截图工具–jmeter部分&#…

jenkins从节点配置说明

目的 打包构建时使用从节点&#xff0c;从节点所在服务器配置4C8G5000G&#xff08;服务器2&#xff09; 前提 首先在服务器1上部署jenkins服务&#xff0c;即主节点&#xff0c;默认节点名称为master 步骤 1&#xff09;登录进入jenkins平台&#xff0c;在系统设置中&…

AJAX 入门到实战 第1天 2024 笔记

1.1-AJAX入门与axios使用 1.2-认识URL 1.3-查询参数 1.4-案例_地区查询 <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>/*获取地区列表: http://hmajax.itheima.net/api/area查询参数:pname: 省份或直辖市…

基于adb操作安卓手机封装的python库

import re import shlex import subprocessclass ADBClient:def __init__(self, ip, port):"""初始化ADBClient实例。:param ip: 远程设备的IP地址。:param port: 远程设备的端口号。"""self.ip ipself.port portdef is_app_running(self, pac…

李沐53_语言模型——自学笔记

语言模型 1.预测文本序列出现的概率 2.应用在做预训练模型 3.生成文本&#xff0c;给定前面几个词&#xff0c;不断生成后续文本 4.判断多个序列中哪个更常见 真实数据集的统计 《时光机器》数据集构建词表&#xff0c; 并打印前10个最常用的&#xff08;频率最高的&…

1942年苏军反攻哈尔科夫失败

1942年5月&#xff0c;苏军计划夺回哈尔科夫&#xff0c;消灭城内的德国南方集团军群第6集团军。苏军为这次战役投入了西南方面军和南方面军&#xff0c;苏军元帅铁木辛哥制定了作战计划&#xff0c;非常凑巧的是&#xff0c;德军也于大致相同的时间制定了进攻计划。5月12日&am…

C语言 | 动态内存管理

目录&#xff1a; 1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常见的动态内存的错误 5. 动态内存经典笔试题分析 6. 柔性数组 1. 为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间上开辟四个字节 cha…