快速理解微服务中Gateway的概念

一.基本概念

定义:

在微服务架构中,Spring Cloud Gateway 是一个用于API网关的框架它是一个基于 Spring Framework 的高效、可扩展的路由器和反向代理,它能够将外部请求转发到适当的微服务,并提供一些与请求处理相关的功能,如路由、负载均衡、限流、安全性等。

作用:

在微服务的架构下,前端是没有办法直接访问后端的微服务,因为每个微服务都有不同的IP和端口,所以就引入了API网管,引入之后,前端就只需访问API网关就可以了,里面的鉴权和转发、其他功能都是通过API网关来进行处理的。

二.三大核心功能

如图所示:

1.Route(路由):路由是 Spring Cloud Gateway 的基本构建块,它定义了请求的匹配规则和转发目标,通过配置路由,可以将请求映射到后端的服务实例或URL上,路由规则可以根据请求的路径、方法、请求头等条件进行匹配(第二个核心,断言),并指定转发的目标URI;

2.Predicate(断言)断言用于匹配请求的条件,如果请求满足断言的条件,则会应用所配置的过滤器(第三个核心,Filter),Spring Cloud Gateway提供了多种内置的断言,如Path(路径匹配)、Method(请求方法匹配)、Header(请求头匹配)等,同时也支持自定义断言;

3.Filter (过滤器)过滤器用于对请求进行处理和转换,可以修改请求、响应以及执行其他自定义逻辑,Spring Cloud Gateway 提供了多个内置的过滤器,如请求转发、请求重试、请求限流等,同时也支持自定义过滤器(鉴权实现),可以根据实际需求来实现自定义过滤器。

三.工作原理

官网工作原理图如下:

Spring Cloud Gateway 的工作原理可以简要概括为:

1.请求进入网关:当客户端发起请求时,Spring Cloud Gateway 作为入口点接收到请求;

2.路由规则匹配:Spring Cloud Gateway 会根据配置的路由规则(Predicate)检查请求的各项信息,决定将请求转发到哪个微服务;

3.过滤器执行:请求经过前置过滤器(如果有的话),例如:进行身份验证、限流控制、修改请求等;

4.转发请求到微服务:请求被路由到目标微服务,网关通过服务发现机制找到合适的服务实例;

5.响应处理:微服务处理完请求后,将响应返回给网关,网关会经过后置过滤器进行处理(例如:修改响应、记录日志等);

6.响应返回客户端:最终,经过处理的响应会返回给客户端。

两个比较重要的概率:

1.Gateway Handler(网关处理器):网关处理器是Spring Cloud Gateway的核心组件,负责将请求转发到匹配的路由上,它根据路由配置和断言条件进行路由匹配,选择合适的路由进行请求转发,网关处理器还会依次应用配置的过滤器链,对请求进行处理和转换;

2.Gateway Filter Chain(网关过滤器链):网关过滤器链由一系列过滤器组成,按照配置的顺序依次执行, 每个过滤器就可以在请求前、请求后或者是发生异常的时候进行处理,过滤器的执行过程可以修改请求、响应以及执行其他自定义逻辑。

四.配置

spring:cloud:gateway:routes:- id: my_routeuri: lb://my-servicepredicates:- Path=/api/**   # 请求路径匹配 /api/**filters:- AddRequestHeader=X-Request-Foo, Bar   # 添加请求头- AddResponseHeader=X-Response-Foo, Bar  # 添加响应头

这个配置中,网关会把匹配 /api/** 路径的请求转发到名为 my-service 的微服务,并添加一些请求和响应头。

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

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

相关文章

【消息序列】详解(7):剖析回环模式--设备测试的核心利器

目录 一、概述 1.1. 本地回环模式 1.2. 远程环回模式 二、本地回环模式(Local Loopback mode) 2.1. 步骤 1:主机进入本地环回模式 2.2. 本地回环测试 2.2.1. 步骤 2a:主机发送HCI数据包并接收环回数据 2.2.2. 步骤 2b&…

GCP Dataproc有什么特点,有什么最佳实践

Google Cloud Dataproc 是一个完全托管的 Apache Hadoop 和 Apache Spark 服务,旨在快速处理大数据工作负载。以下是 Dataproc 的一些主要特点和最佳实践: 特点 托管服务:Dataproc 是一个完全托管的服务,用户无需管理基础设施&…

sunshine和moonlight串流网络丢失帧高的问题(局域网)

注:此贴结果仅供参考 场景环境:单身公寓 路由器:2016年的路由器 开始:电脑安装sunshine软件,手机安装moonlight软件开始串流发现网络丢失帧发现巨高 一开始怀疑就是路由器问题,因为是局域网,而…

STL容器1

STL容器1 1.1 vector1.2 set1.3 map 1.1 vector vector的优点: 1.动态大小调整‌:vector可以根据需要动态地调整大小,自动分配和释放内存,确保在添加或删除元素时实现高效的内存管理‌ 2.连续存储‌:vector的元素在内存…

第六届国际科技创新学术交流大会暨新能源科学与电力工程国际(NESEE 2024)

重要信息 会议官网:nesee.iaecst.org 会议时间:2024年12月6-8日 会议地点: 中国-广州(越秀国际会议中心) 大会简介 新能源科学与电力工程国际学术会议(NESEE 2024)作为第六届国际科技创新学术交流大会分…

RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程

这是一篇基于RL78/G15 Fast Prototyping Board的Arduino IDE开发记录 RL78/G15 Fast Prototyping Board硬件简介(背景)基础测试(方法说明/操作说明)开发环境搭建(方法说明/操作说明代码结果)Arduino IDE RL…

visionpro实践项目(一)

1.需求:测量零件的宽度。 2.解决思路:使用模板匹配工具先匹配到零件,使用卡尺工具测量宽度,使用标签工具显示宽度信息。 3.步骤: 导入CogPMAlignTool工具,训练模板,实现模板匹配功能。 导入卡…

Scala习题

姓名,语文,数学,英语 张伟,87,92,88 李娜,90,85,95 王强,78,90,82 赵敏,92,88,91 孙涛&#xff0c…

mvn-mac操作小记

1.安装brew 如果报错,Warning: /opt/homebrew/bin is not in your PATH. vim ~/.zshrc,最后一行追加 export PATH“/opt/homebrew/bin:$PATH” source ~/.zshrc 2.安装brew install maven mvn -version查看路径 Maven home: /opt/homebrew/Cellar/mav…

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑 3、结语 &#x1f49…

路由器中继与桥接

一 . 背景 现在的路由器大多数已经开始支持多种网络连接模式,以下将以TP-Link迷你无线路由器为例进行展开介绍。在TP-Link迷你无线路由器上一般有AP(接入点)模式,Router(无线路由)模式,Repeate…

基于springboot的县市级土地使用监控系统的设计与实现

文末获取本系统(程序源码数据库调试部署开发环境)文末可获取,系统界面在最后面。 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的…

Java【多线程】(1)进程与线程

目录 1.前言 2.正文 2.1什么是进程 2.2PCB(进程控制块) 2.2.1进程id 2.2.2内存指针 2.2.3文件描述符表 2.2.4进程状态 2.2.4.1就绪状态 2.2.4.2阻塞状态 2.2.5进程优先级 2.2.6进程上下文 2.2.7进程的记账信息 2.3CPU操作进程的方法 2.4什…

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明, 将Form的属性Opacity,由默认的100% 调整到 80%,这个数字越小越透明(尽量别低于50%,不信你试试看)! 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&…

金融租赁系统助力企业升级与风险管理的新篇章

内容概要 在当今的商业环境中,“金融租赁系统”可谓是企业成功的秘密武器。简单来说,这个系统就像一位聪明的财务顾问,帮助企业在资金和资源的运用上达到最优化。从设备采购到项目融资,它提供了一种灵活的方式,让企业…

突破内存限制:Mac Mini M2 服务器化实践指南

本篇文章,我们聊聊如何使用 Mac Mini M2 来实现比上篇文章性价比更高的内存服务器使用,分享背后的一些小的思考。 希望对有类似需求的你有帮助。 写在前面 在上文《ThinkPad Redis:构建亿级数据毫秒级查询的平民方案》中,我们…

scala模式匹配

object test47 {def main(args: Array[String]): Unit {val id"445646546548858548648"//取出id前两位val provinceid.substring(0,2) // println(province) // if (province"42"){ // println("湖北") // }else if(province&quo…

第R4周:LSTM-火灾温度预测(TensorFlow版)

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 往期文章可查阅: 深度学习总结 任务说明:数据集中提供了火灾温度(Tem1)、一氧化碳浓度…

transformer.js(三):底层架构及性能优化指南

Transformer.js 是一个轻量级、功能强大的 JavaScript 库,专注于在浏览器中运行 Transformer 模型,为前端开发者提供了高效实现自然语言处理(NLP)任务的能力。本文将详细解析 Transformer.js 的底层架构,并提供实用的性…

spf算法、三类LSA、区间防环路机制/规则、虚连接

1.构建spf树: 路由器将自己作为最短路经树的树根根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。广播网络中DR和其所连接路由器的Cost值为0。SPF树中只有单向的最短路径,保证了OSPF区域内路由计管不…