Spring Cloud Alibaba Gateway 简单使用
文章目录
- Spring Cloud Alibaba Gateway
- 1.Gateway简介
- 2. 流量网关和服务网关的区别
- 3. Spring Cloud Gateway 网关的搭建
- 3.1 Spring Cloud Gateway 配置项的说明
- 3.2 依赖导入
- 3.3 配置文件
Spring Cloud Alibaba Gateway
1.Gateway简介
Spring Cloud Gateway是一个基于Spring Framework开发的反应式API网关,用于构建微服务架构中的网关服务。它提供了一种简单而有效的方式来路由、过滤和处理传入的请求,并与后端微服务进行交互。
Spring Cloud Gateway具有以下特点和功能:
-
路由:可以根据请求的路径、方法、头部等信息将请求路由到不同的目标服务上。
-
过滤:支持使用各种预定义的或自定义的过滤器对请求和响应进行处理,例如认证、鉴权、日志记录等。
-
负载均衡:支持集成服务发现机制,并可通过负载均衡算法将请求分发到多个实例中。
-
断路器:集成了断路器模式,可以在后端服务出现故障或超时的情况下进行熔断和降级处理。
-
集成性:与Spring生态系统紧密集成,可以与Spring Boot、Spring Cloud Config、Eureka等组件无缝协作。
-
反应式支持:基于Reactor提供异步、非阻塞的处理机制,具有更高的性能和可扩展性。
使用Spring Cloud Gateway可以有效地管理和组织微服务架构中的请求流量,提高系统的可伸缩性和可靠性。同时,它还提供了丰富的扩展点和配置选项,使开发人员能够根据自己的需求进行定制和扩展。
2. 流量网关和服务网关的区别

- 流量网关:(如Nignx,OpenRest,Kong, Envoy)是指提供全局性的、与后端业务应用无关的策略,例如
HTTPS证书认证、Web防火墙、全局流量监控,黑白名单等。 - 服务网关:(如Spring Cloud
Gateway)是指与业务紧耦合的、提供单个业务域级别的策略,如服务治理、身份认证等。也就是说,流量网关负责南北向流量调度及安全防护,微服务网关负责东西向流量调度及服务治理。
3. Spring Cloud Gateway 网关的搭建
3.1 Spring Cloud Gateway 配置项的说明
在介绍 Spring Cloud Gateway 的配置项之前,我们先了解几个 Spring Cloud Gateway 的核心术语:
路由(route):由ID、目标URI、断言集合和过滤器集合组成。如果聚合断言结果为真,则转发到该路由。
断言(Predicate):参照 Java8 的新特性Predicate,允许开发人员匹配 HTTP 请求中的任何内容,比如请求头或请求参数或请求路径,最后根据匹配结果返回一个布尔值。
过滤器(filter):可以在返回请求之前或之后修改请求和响应的内容。
-
路由 Route:
Route 主要由 路由id、目标uri、断言集合和过滤器集合组成,那我们简单看看这些属性到底有什么作用。
(1)id:路由标识,要求唯一,名称任意(默认值 uuid,一般不用,需要自定义)
(2)uri:请求最终被转发到的目标地址
(3)order: 路由优先级,数字越小,优先级越高
(4)predicates:断言数组,即判断条件,如果返回值是boolean,则转发请求到 uri 属性指定的服务中
(5)filters:过滤器数组,在请求传递过程中,对请求做一些修改 -
断言 Predicate:
Predicate 来自于 Java8 的接口。Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。
Predicate 可以用于接口请求参数校验、判断新老数据是否有变化需要进行更新操作。Spring Cloud Gateway 内置了许多 Predict,这些 Predict 的源码在 org.springframework.cloud.gateway.handler.predicate 包中。 -
过滤器 filter:
Gateway 过滤器的生命周期:
PRE:这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择请求的微服务、记录调试信息等。
POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的 HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。
Gateway 过滤器从作用范围可分为两种:
局部过滤器: GatewayFilter:应用到单个路由或者一个分组的路由上(需要在配置文件中配置)
全局过滤器: GlobalFilter:应用到所有的路由上(无需配置,全局生效)
内置局部过滤器 GatewayFilter:
局部过滤器需要在指定路由配置才能生效,默认是不生效的。“AddResponseHeaderGatewayFilterFactory” 这个过滤器为例,为原始响应添加Header,配置如下
spring.cloud.gateway.routes[0].id=router1
spring.cloud.gateway.routes[0].uri=http://localhost:9024
spring.cloud.gateway.routes[0].predicates[0]=Path=/a/**
spring.cloud.gateway.routes[0].filters[0]=AddResponseHeader=Foo, Bar
#StripPrefix参数表示在将请求发送到下游之前从请求中剥离的路径个数。
spring.cloud.gateway.routes[0].filters[1]=StripPrefix=1
3.2 依赖导入
这里需要指定版本 spring boot的版本是2.3.11RELEASE
父模块
<parent><groupId>com.hb</groupId><artifactId>spring-cloud-root</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><version>2.2.2.RELEASE</version></dependency>
使用新的web依赖

导入依赖时发现

3.3 配置文件
# 配置路由
spring.cloud.gateway.routes[0].id = test
#这是显示请求详情的网址,同时也是本次被路由到的url
spring.cloud.gateway.routes[0].uri = http://httpbin.org
#配置断言 也就是本次可以被路由出的地址必须在test域名下
spring.cloud.gateway.routes[0].predicates[0] = Path=/test/**
# 配置截取二级目录 也就是 截取 http://httpbin.org/test/** 截取成为 http://httpbin.org/**
spring.cloud.gateway.routes[0].filters[0] = StripPrefix=1
#添加过滤请求时 请求头中添加一个参数
spring.cloud.gateway.routes[0].filters[1] = AddRequestParameter=aa,blue
#请求头中添加参数
spring.cloud.gateway.routes[0].filters[2] = AddRequestHeader=lianxu,shuai
#添加一个返回头
spring.cloud.gateway.routes[0].filters[3] = AddResponseHeader=kuailong,shuaidaile
响应结果

响应头

相关文章:
Spring Cloud Alibaba Gateway 简单使用
文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…...
两种fifo实现方式的差异
减少数据通路翻转来降低功耗: 以FIFO (当容量较小而使用寄存器作为存储部分)设计为例,虽然理论上可以使用比较简单的数据表项逐次移位的方式,实现FIFO 的先入先出功能,但是却应该使用维护读写指针的方式(数据表项寄存器则不用移位)实现先入先出的功能。因为数据表项逐次…...
孜然单授权系统V1.0[免费使用]
您还在为授权系统用哪家而发愁?孜然单授权系统为您解决苦恼,本系统永久免费。 是的,还是那个孜然,消失了一年不是跑路了是没有空,但是这些都是无关紧要的,为大家带来的孜然单授权系统至上我最高的诚意&…...
kubernetes问题(一)-异常事件
1 pod状态处于Evicted 0/1 现象: 1)kubectl get events发现“failed to garbage collect required amount of images”。 2)同时磁盘空间不足的节点有大量pod处于Evicted 0/1状态,但并未进行重新调度。 原因描述: …...
Android Jetpack组件架构 :LiveData的使用和原理
Android Jetpack组件架构: LiveDate的使用和原理 导言 继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件,所谓LiveDate字面意思上就是有声明的数据,当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者,这样…...
【学习笔记】Prufer序列
Prufer序列 起源于对 C a y l e y Cayley Cayley定理的证明,但是其功能远不止于此 现在考虑将一棵n个节点的树与一个长度为n-2的prufer序列构造对应关系 T r e e − > P r u f e r : Tree->Prufer: Tree−>Prufer: ①从树上选择编号最小的叶子节点&#x…...
由于找不到msvcr110.dll的5种解决方法
在使用电脑的过程中,我们可能会遇到一些问题,比如打开软件时提示找不到 msvcr110.dll 文件丢失。这通常意味着该文件已被删除或损坏,导致程序无法正常运行。本文将介绍几种解决方案,帮助您解决这个问题。 首先,我们需…...
最长连续递增子序列
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。 输入格式: 输入第1行给出正整数n(≤105);第2行给出n个整数,…...
Java学习星球,十月集训,五大赛道(文末送书)
目录 什么是知识星球?我的知识星球能为你提供什么?专属专栏《Java基础教程系列》内容概览:《Java高并发编程实战》、《MySQL 基础教程系列》内容概览:《微服务》、《Redis中间件》、《Dubbo高手之路》、《华为OD机试》内容概览&am…...
前端VUE---JS实现数据的模糊搜索
实现背景 因为后端实现人员列表返回,每次返回的数据量在100以内,要求前端自己进行模糊搜索 页面实现 因为是实时更新数据的,就不需要搜索和重置按钮了 代码 HTML <el-dialogtitle"团队人员详情":visible.sync"centerDi…...
Android Studio 的android.jar文件在哪儿
一般在:C:\Users\admin\AppData\Local\Android\Sdk\platforms\android-33下(不一定是33,这个得看你Android Studio->app->builde.gradle的targetSdk是多少) 怎么找: 1.打开Android Studio 粘贴地址后࿰…...
Elasticsearch 部署学习
文章目录 Elasticsearch 部署学习1. 单节点部署 elasticsearch1.1 部署 jdk1.2 下载 elasticsearch1.3 上传文件并修改配置文件1.4 启动1.5 问题总结1.6 浏览器验证 2. 集群部署 elasticsearch3. 常用命令4. Elasticsearch kibana安装:one: 参考部署文档:two: 下载对应版本的安…...
nodejs 如何在npm发布自己的包 <记录>
一、包结构 必要结构: 一个包对应一个文件夹(文件夹名不是包名,但最好与包名保持一致,包名以package.json中的name为主)包的入口文件index.js包的配置文件package.json包的说明文档README.md 二、需要说明的文件 1.配…...
移植RTOS的大体思路
最首先当然是去官网看看是不是已经支持目标芯片啦,没有的话,就需要自己手动移植了 获取源码 一般可以从rtos官网或者GitHub上获取源码 确认源码结构 这种有官方文档说明,需要修改的一般都是BSP和libcpu相关文件夹中的内容 CPU架构移植 …...
FPGA到底是什么?
首先只是凭自己浅略的了解,FPGA好像也是涉及到了开发板,单片机之类的东西,和嵌入式十分相似,但是比嵌入式更高级的东西。 肯定有很多小伙伴如我一样,只是听说过FPGA,听别人说的传呼其神,那么它到…...
算法-单词搜索 II
算法-单词搜索 II 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/word-search-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 DFS 2.1 解题思路 每个格子往上下左右四个方向DFS,拼接后的单词如果在答案集中&…...
怒刷LeetCode的第15天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:哈希表双向链表 方法二:TreeMap 方法三:双哈希表 第二题 题目来源 题目内容 解决方法 方法一:二分查找 方法二:线性搜索 方法三:Arrays类的b…...
Android开发MVP架构记录
Android开发MVP架构记录 安卓的MVP(Model-View-Presenter)架构是一种常见的软件设计模式,用于帮助开发者组织和分离应用程序的不同组成部分。MVP架构的目标是将应用程序的业务逻辑(Presenter)、用户界面(V…...
day2作业
1,输入两个数,完成两个数的加减乘除 #输入两个数,完成两个数的加减乘除 num1int(input("请输入第一个数:")) num2int(input("请输入第二个数:")) print(str(num1)str(num2)str(num1num2)) print(str(num1)-str(num2)str…...
Python办公自动化之Word
Python操作Word 1、Python操作Word概述2、写入Word2.1、标题2.2、章节与段落2.3、字体与引用2.4、项目列表2.5、分页2.6、表格2.7、图片3、读取Word3.1、读取文档3.2、读取表格4、将Word表格保存到Excel5、格式转换5.1、Doc转Docx5.2、Word转PDF1、Python操作Word概述 python-d…...
OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报
OpenClaw社交媒体管理:Gemma-3-12b-it自动回复评论与生成周报 1. 为什么选择OpenClaw管理社交媒体 去年运营个人技术账号时,我每天要花1小时手动回复评论和整理周报。直到发现OpenClaw这个开源自动化框架,配合Gemma-3-12b-it模型࿰…...
FedProx实战:如何用Python在异构网络中优化联邦学习(附代码)
FedProx实战:Python实现异构网络联邦学习优化指南 联邦学习作为分布式机器学习的前沿分支,正面临两大核心挑战:设备间的系统异构性(计算与通信能力差异)和数据分布的统计异构性(non-IID数据)。本…...
NSSCTF做题记录十 | [巅峰极客 2022 决赛]开端:strangeTempreture
[巅峰极客 2022 决赛]开端:strangeTempreture随便点击一个流量包,右击点击追踪流,TCP 流把这几个字母拼接到一起,下面还有很多ZmxhZ3s5N2JmZWIwMy1mYTVjLWFhNmYtYWQxZS05YzVkMzhjNzQ0OWV9base64 解码,得到 flagflag{97…...
2024年Image Caption数据集全攻略:从COCO到TextCaps的实战选择指南
2024年Image Caption数据集实战指南:从基础到行业落地的深度解析 当算法工程师第一次接触图像描述任务时,面对琳琅满目的数据集选择往往会陷入困惑——COCO的通用性、TextCaps的文本理解要求、VizWiz的特殊场景适用性,每个数据集都有其独特的…...
CloudFlare R2的S3兼容性有多香?一个PicGo插件搞定七牛云、阿里云OSS无缝迁移
CloudFlare R2的S3兼容性实战:用PicGo实现多平台图床无缝迁移 当七牛云突然调整存储计费策略时,我服务器上3000多张技术文档配图每月产生了近200元的额外成本。而迁移到阿里云OSS后,又遇到了国内备案的繁琐流程。直到发现CloudFlare R2的S3兼…...
javaweb铁路火车接发车课程作业培训考试系统证书
目录同行可拿货,招校园代理 ,本人源头供货商铁路火车接发车课程作业培训考试系统证书的功能分析系统概述功能模块分析技术实现要点行业合规性扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 …...
从‘歪图’到精准底图:ENVI几何校正实战避坑与精度提升指南
从‘歪图’到精准底图:ENVI几何校正实战避坑与精度提升指南 当你在山区项目中打开刚获取的遥感影像时,那些本该笔直的道路却像蛇形般扭曲,原本规整的农田边界变成了抽象画作——这就是未经几何校正的"歪图"给科研工作者带来的日常困…...
Step3-VL-10B效果展示:10B轻量级模型实现媲美大模型的视觉语言推理能力
Step3-VL-10B效果展示:10B轻量级模型实现媲美大模型的视觉语言推理能力 1. 引言:当“小个子”拥有了“大智慧” 想象一下,你面前有一张复杂的科学图表、一份手写的数学笔记,或者一个满是按钮的软件界面。你能看懂多少࿱…...
2026长沙GEO优化公司权威实测:基于稳定性与转化效率的TOP5服务商深度推荐
2026长沙GEO优化公司权威实测:基于稳定性与转化效率的TOP5服务商深度推荐2026年,生成式AI搜索已深度重塑商业决策与品牌获客的路径。在全国GEO(生成式引擎优化)的版图中,长沙凭借活跃的数字经济生态与扎实的产业基础&a…...
卫生经济学中模型搭建与分析的奇妙之旅
马尔可夫模型,马科夫模型,Markov Model搭建,决策树模型 卫生经济学,药物经济学评价,成本效果分析,成本效益分析,成本效用分析,CEA,health economics,pharmaco…...
