当前位置: 首页 > news >正文

springCloud-2021.0.9 之 GateWay 示例

文章目录

  • 前言
    • springCloud-2021.0.9 之 GateWay 示例
      • 1. GateWay 官网
      • 2. GateWay 三个关键名称
      • 3. GateWay 工作原理的高级概述
      • 4. 示例
        • 4.1. POM
        • 4.2. 启动类
        • 4.3. 过滤器
        • 4.4. 配置
      • 5. 启动/测试

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


springCloud-2021.0.9 之 GateWay 示例

这里我介绍一下,我用到的springCloud 是2021.0.9版本。
Maven 依赖管理配置引入 Spring Cloud 的 BOM(Bill of Materials)文件,主要作用如下:

  • 版本统一:通过引入 BOM 文件,您可以统一管理项目中所有 Spring Cloud 相关依赖的版本,避免版本冲突和不一致。

  • 简化依赖声明:在子模块中,您无需显式指定 Spring Cloud 相关依赖的版本号,Maven 会自动从 BOM 中获取版本信息。

与以前的引入方式相比,这种方法提供了更好的版本控制和依赖管理,特别是在处理多个子模块和复杂的依赖关系时,能够有效减少手动管理版本的复杂性。

1. GateWay 官网

下面是我用的版本官网api:

https://docs.spring.io/spring-cloud-gateway/docs/3.1.9/reference/html/

2. GateWay 三个关键名称

Route:网关的基本构建块。它由 ID、目标 URI、谓词集合和过滤器集合定义。如果聚合谓词为真,则路由匹配。

Predicate:这是一个Java 8 函数谓词。输入类型是Spring 框架ServerWebExchange。这允许您匹配 HTTP 请求中的任何内容,例如标头或参数。

Filter:这些是GatewayFilter使用特定工厂构建的实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。

3. GateWay 工作原理的高级概述

下图提供了 Spring Cloud Gateway 工作原理的高级概述:

在这里插入图片描述
客户端向 Spring Cloud Gateway 发出请求。如果 Gateway Handler Mapping 确定请求与路由匹配,
则将其发送到 Gateway Web Handler。此处理程序通过特定于请求的过滤器链运行请求。过滤器被虚线分开的原因是过滤器可以在发送代理请求之前和之后运行逻辑。所有“前”过滤器逻辑都​​会执行。然后发出代理请求。发出代理请求后,运行“后”过滤器逻辑。

4. 示例

4.1. POM
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.15</version></parent><groupId>org.example</groupId><artifactId>springCloud-Gateway</artifactId><version>1.0-SNAPSHOT</version><name>springCloud-Gateway</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version><spring-cloud.version>2021.0.9</spring-cloud.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!--作用: Spring Cloud Gateway 是一个基于 Spring WebFlux 和 Project Reactor 实现的 API 网关服务,它可以作为微服务架构的入口,处理路由请求、负载均衡、身份认证等功能。用途: 主要用于处理微服务的路由请求,你可以定义路由规则,决定哪些请求转发到哪些微服务。--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--作用: 为你的应用程序提供 Eureka 客户端的支持,能够与 Eureka 服务发现注册中心交互。客户端可以向 Eureka 服务器注册自身,并从中获取其他服务实例的注册信息,实现服务发现和负载均衡。用途: 当应用启动时,它会自动注册到 Eureka Server,并能够根据其他服务的注册信息进行服务发现。--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--a作用: 提供了一组用于监控和管理应用程序的端点,比如健康检查、性能指标、日志级别调整等。它能够暴露很多应用的内部状态,并支持通过 HTTP、JMX 或其他方式访问这些信息。用途: 通过 Actuator,你可以轻松地监控和管理 Spring Boot 应用,结合 Spring Boot Admin 还能进行图形化管理。--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--作用: Sleuth 提供了分布式追踪的功能,可以在微服务架构中追踪请求的流转路径,帮助诊断和调试系统性能问题。Sleuth 会为每个请求生成追踪 ID 和 span ID,记录请求在不同微服务中的处理过程。用途: 在微服务架构中,用于监控和分析请求的处理流程,帮助你追踪请求跨多个服务的链路。--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.6.15</version></plugin></plugins></build>
</project>
4.2. 启动类
package org.example;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.3. 过滤器
package org.example.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.sleuth.CurrentTraceContext;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;@Component
public class ResponseFilter implements GlobalFilter , Ordered {private static final String CORRELATION_ID = "yzy-correlation-id";@Autowiredprivate CurrentTraceContext currentTraceContext;@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange).then(Mono.fromRunnable(() -> {ServerHttpResponse response = exchange.getResponse();response.getHeaders().add(CORRELATION_ID, currentTraceContext.context().traceId());}));}@Overridepublic int getOrder() {return -1;}
}
4.4. 配置
server:port: 8809netty:idle-timeout: 10m # Netty 服务器的空闲超时时间为 10 分钟,这决定了在没有网络活动时,连接会被关闭。
eureka:instance:prefer-ip-address: true # 优先ip注册client:service-url:defaultZone: http://127.0.0.1:8761/eureka # 注册中心地址
spring:application:name: springCloud-Gatewaycloud:gateway:httpclient:connect-timeout: 1000 # 配置全局 http 超时response-timeout: 5s # 配置全局 http 超时defaultFilters:- StripPrefix=1 # 默认移除前1个路径段routes:- id: springCloudServiceAuri: lb://SPRINGCLOUDSERVICEApredicates:- Path=/springCloudServiceA/**- id: springCloudServiceBuri: lb://SPRINGCLOUDSERVICEBpredicates:- Path=/springCloudServiceB/**

5. 启动/测试

如下图,启动成功!!

在这里插入图片描述
在这里插入图片描述

测试:
http://127.0.0.1:8809/springCloudServiceA/api/test/scan
在这里插入图片描述
请求链路:
postmain -> SPRINGCLOUD-GATEWAY->SPRINGCLOUDSERVICEA

相关文章:

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收…...

JDK8 stream API用法汇总

目录 1.集合处理数据的弊端 2. Steam流式思想概述 3. Stream流的获取方式 3.1 根据Collection获取 3.1 通过Stream的of方法 4.Stream常用方法介绍 4.1 forEach 4.2 count 4.3 filter 4.4 limit 4.5 skip 4.6 map 4.7 sorted 4.8 distinct 4.9 match 4.10 find …...

windows生成SSL的PFX格式证书

生成crt证书: 安装openssl winget install -e --id FireDaemon.OpenSSL 生成cert openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365 -nodes -subj "/CN=localhost" 转换pfx openssl pkcs12 -export -out certificate.pfx…...

玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…...

2025 西湖论剑wp

web Rank-l 打开题目环境&#xff1a; 发现一个输入框&#xff0c;看一下他是用上面语言写的 发现是python&#xff0c;很容易想到ssti 密码随便输&#xff0c;发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload&#xff0c; {{(lipsum|attr(‘global…...

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…...

单片机简介

一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC...

C++ 设计模式-桥接模式

C桥接模式的经典示例&#xff0c;包含测试代码&#xff1a; #include <iostream> #include <string>// 实现化接口 class Device { public:virtual ~Device() default;virtual bool isEnabled() const 0;virtual void enable() 0;virtual void disable() 0;vi…...

不小心删除服务[null]后,git bash出现错误

不小心删除服务[null]后&#xff0c;git bash出现错误&#xff0c;如何解决&#xff1f; 错误描述&#xff1a;打开 git bash、msys2都会出现错误「bash: /dev/null: No such device or address」 问题定位&#xff1a; 1.使用搜索引擎搜索「bash: /dev/null: No such device o…...

16.React学习笔记.React更新机制

一. 发生更新的时机以及顺序## image.png props/state改变render函数重新执行产生新的VDOM树新旧DOM树进行diff计算出差异进行更新更新到真实的DOM 二. React更新流程## React将最好的O(n^3)的tree比较算法优化为O(n)。 同层节点之间相互比较&#xff0c;不跨节点。不同类型的节…...

【Elasticsearch】词干提取(Stemming)

词干提取是将一个词还原为其词根形式的过程。这确保了在搜索过程中&#xff0c;一个词的不同变体能够匹配到彼此。 例如&#xff0c;walking&#xff08;行走&#xff09;和walked&#xff08;走过&#xff09;可以被还原到同一个词根walk&#xff08;走&#xff09;。一旦被还…...

【AI论文】10亿参数大语言模型能超越405亿参数大语言模型吗?重新思考测试时计算最优缩放

摘要&#xff1a;测试时缩放&#xff08;Test-Time Scaling&#xff0c;TTS&#xff09;是一种通过在推理阶段使用额外计算来提高大语言模型&#xff08;LLMs&#xff09;性能的重要方法。然而&#xff0c;目前的研究并未系统地分析策略模型、过程奖励模型&#xff08;Process …...

【设计模式】【行为型模式】状态模式(State)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…...

PostgreSQL错误: 编码“UTF8“的字符0x0xe9 0x94 0x99在编码“WIN1252“没有相对应值

错误介绍 今天遇到一个错误&#xff0c;记录一下 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"WIN1252"的字符0x0x81在编码"UTF8"没有相对应值 2025-02-10 17:04:35.264 HKT [28816] 错误: 编码"UTF8"的字符0x0xe9 0x94 0x99在编码&quo…...

Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U

在 Mac ARM 架构的命令行&#xff08;终端&#xff09;中&#xff0c;删除整行的快捷键是&#xff1a; Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容&#xff0c;可以使用&#xff1a; Ctrl K这两个快捷键可以帮助你快速清除当…...

Vue2下判断有新消息来时以站内信方式在页面右下角弹出

以下是完整的Vue2全局通知组件实现方案&#xff0c;包含自动挂载和全局调用方法&#xff1a; 第一步&#xff1a;创建通知组件 <!-- src/components/Notification/index.vue --> <template><div class"notification-container"><transition-g…...

AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘

云边有个稻草人-CSDN博客 目录 第一章&#xff1a;DeepSeek与ChatGPT的基础概述 1.1 DeepSeek简介 1.2 ChatGPT简介 第二章&#xff1a;模型架构对比 2.1 Transformer架构&#xff1a;核心相似性 2.2 模型规模与参数 第三章&#xff1a;训练方法与技术 3.1 预训练与微调…...

网络安全中的account和audit区别

一、AWD介绍 AWD&#xff1a;Attack With Defence&#xff0c;即攻防对抗&#xff0c;比赛中每个队伍维护多台服务器&#xff08;一般两三台&#xff0c;视小组参赛人数而定&#xff09;&#xff0c;服务器中存在多个漏洞&#xff08;web层、系统层、中间件层等&#xff09;&a…...

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题&#xff1a;在默认的Visual Studio中&#xff0c;选择单行代码后&#xff0c;按下Ctrl /键会将代码注释掉&#xff0c;但再次按下Ctrl /键时&#xff0c;会进行双重注释&#xff0c;这不是我们想要的。 实现效果&#xff1a;当按下Ctrl /键会将代码注释掉&#xff0c;…...

【密评】 | 商用密码应用安全性评估从业人员考核题库(23)

在GM/T0048《智能密码钥匙密码检测规范》中,产品的对称算法性能应满足哪个标准中的要求()。 A.GM/T 0016《智能密码钥匙密码应用接口规范》 B.GM/T 0017《智能密码钥匙密码应用接口数据格式规范》 C.GM/T 0027《智能密码钥匙技术规范》 D.GM/T 0028《密码模块安全技术要求》…...

Java基础全套教程(三)—— 控制语句、方法、递归算法

Java基础全套教程&#xff08;三&#xff09;—— 控制语句、方法、递归算法 本章是Java编程从基础语法走向逻辑编程的核心转折点。前面我们学习了变量、数据类型、运算符&#xff0c;只能实现简单的顺序执行代码。而真正的程序&#xff0c;需要具备判断能力、重复执行能力、代…...

基于Helm Chart在Kubernetes中部署docker-mailserver邮件服务器

1. 项目概述与核心价值最近在折腾自建邮件服务器&#xff0c;发现了一个宝藏项目&#xff1a;docker-mailserver。它把邮件服务里那些复杂的组件&#xff0c;比如 Postfix、Dovecot、SpamAssassin、ClamAV 这些&#xff0c;全都打包进了一个 Docker 镜像里&#xff0c;开箱即用…...

锌电池技术解析:长时储能的安全经济新选择

1. 储能技术演进与锌电池的崛起在能源转型的浪潮中&#xff0c;储能系统的角色已经从“锦上添花”变成了“不可或缺的基石”。我们从业者最直观的感受是&#xff0c;早期的储能项目大多围绕“削峰填谷”展开&#xff0c;目标相对单一。但随着可再生能源渗透率的急剧提升&#x…...

观察Taotoken用量看板如何帮助团队透明化管理API成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken用量看板如何帮助团队透明化管理API成本 作为团队的技术负责人&#xff0c;管理大模型API成本是一项持续且细致的工作…...

企业微信代开发应用:CallBackUrl验证失败排查与CorpID加密升级实战

1. 企业微信代开发应用验证失败的典型场景 最近不少服务商朋友反馈&#xff0c;代开发应用在验证CallBackUrl时频繁失败。这个问题其实源于企业微信在2022年6月底进行的一次安全升级。当时官方发布公告称&#xff0c;为了提升账户安全性&#xff0c;所有新建的代开发应用都需要…...

Tempera风格+古典画框+羊皮纸基底=高转化商业图?:电商视觉团队实测ROI提升210%的紧急部署方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Tempera风格古典画框羊皮纸基底高转化商业图&#xff1f;&#xff1a;电商视觉团队实测ROI提升210%的紧急部署方案 在Q3大促前72小时&#xff0c;某头部服饰品牌视觉中台紧急启用Tempera风格渲染管线&a…...

基于大语言模型的自动化信息处理系统:从RSS聚合到AI摘要的实践

1. 项目概述&#xff1a;一个能帮你“读”新闻的AI助手 在信息爆炸的时代&#xff0c;每天光是处理订阅的RSS、关注的社交媒体动态、收藏的YouTube视频和没读完的长文&#xff0c;就足以让人精疲力尽。我们总想保持对行业趋势的敏感&#xff0c;却又被海量信息淹没&#xff0c…...

Hermes Agent:引爆企业AI革命!自进化智能体协作实战与落地指南

Hermes Agent 是一款自进化AI代理系统&#xff0c;具备完整学习循环、跨会话记忆、用户建模等核心特性。本文深入解析其架构、多智能体协作机制及自进化能力&#xff0c;并通过智能客服、DevOps自动化、数据分析等企业级案例&#xff0c;展示如何构建高效AI代理系统。同时提供性…...

2026年录音转换文字的软件推荐:从微信小程序到专业工具的实用对比

做视频或音频素材处理的时候&#xff0c;经常卡在这几个环节&#xff1a;转出来的文字有错别字需要反复核对、处理一个长视频得等半天、格式导出后没法直接用到其他软件。这些都是常见的痛点。本文会从实际应用出发&#xff0c;先重点讲一个相对高效的方案——微信小程序提词匠…...

模型运行记录

1753...