【微服务架构实战】第2篇之Spring Cloud Gateway介绍

news2024/10/5 18:32:09

我们的项目采用 Spring Cloud Gateway gateway 的版本为:2.2.8.RELEASE

简介:

Spring Cloud Gateway(2.2.8.RELEASE) 是 Spring 公司基于 Spring 5.0, Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

其不仅提供了统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流、重试等。

它的目标是替代 Netflix Zuul,在 Spring Cloud2.0 以上版本中,没有对新版本的 Zuul 2.0 以上最新高性能版本进行集成,仍然还是使用的 Zuul 1.x 非 Reactor模式的老版本。

为了提升网关性能,Spring Cloud Gateway 是基于 WebFlux 框架实现的,而 WebFlux 框架底层则使用了高性能的 Reactor 模式通信框架 Netty。

内部工作原理:

  1. 客户端请求到 Gateway 网关,会先经过 Gateway Handler Mapping 进行请求和路由匹配。

  2. 匹配成功后再发送到 Gateway Web Handler 处理,然后会经过特定的过滤器链,经过所有前置过滤后,会发送代理请求。

  3. 请求结果返回后,最后会执行所有的后置过滤器。

image

通过上图可以看出,Spring Cloud Gateway 的主要流程为:

  1. 客户端请求会先进入到 Gateway,具体的讲应该是 DispacherHandler(因为 Gateway 引入了 WebFlux,作用可以类比 MVC 的 DispacherServlet)

  2. Gateway 根据用户的请求找到相应的 HandlerMapping,请求和具体的 handler 之间有一个映射关系,网关会对请求进行路由,handler 会匹配到 RoutePredicateHandlerMapping,匹配请求对应的 Route,然后到达 Web 处理器。

  3. WebHandler 代理了一系列网关过滤器和全局过滤器的实例,这些过滤器可以对请求和响应进行修改,最后由代理服务完成用户请求,并将结果返回。

Spring Cloud Gateway 官方文档:

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

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

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

相关文章

Linux系统运行时参数命令--网络IO性能监控

目录 5 网络IO性能监控 5.1 性能指标 5.2 网络信息 5.2.1 套接字信息 5.2.2 协议栈统计信息-netstat命令 5.2.3 网络吞吐-sar命令 5.2.4 连通性和延时 5.3 其他常用的网络相关命令 telnet nc mtr连通性测试 nslookup traceroute iptraf强大的网络监控 tcpdump- …

(二十五)Vue之mixin混入/合

文章目录mixin局部混入全局混入Vue学习目录 上一篇:(二十四)Vue之props配置项 下一篇:(二十六)Vue之插件 mixin 在有些业务逻辑中,发现在多个组件的功能业务逻辑一样,可以把多个…

秋招荆棘之路

找工作期间,在牛客网上面看到很多前辈的面经和经验总结,给我面试带来了很多的帮助,本着互助原则,我也总结下自己秋招的经验,算是一种反馈了,给即将毕业的学弟学妹问一些经验。 1.1 背景 首先介绍下我的背景…

Project 2: CS61BYoG

Project 2主要分为两个部分:phase 1(World Generation)和 phase 2(Interactivity)。 最难的个人认为是phase 1中的生成随机地图的算法。这里也主要总结以下phase1。 自己一开始在这个位置卡了一天,一开始做…

Android动态代理源码分析

前言 前面我们简单介绍了代理模式的使用Android设计模式详解之代理模式,我们也明白了动态代理模式的重要性,那动态代理究竟是如何实现将方法交给InvocationHandler.invoke执行的呢?本文就从源码的角度一步步去探究这个问题; 源码…

开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务

Grapecity 提供软件开发技术和低代码平台 通过各类软件开发工具和服务 提升开发效率 推动软件产业发展 葡萄城研发各类开发控件和 商业智能报表工具 提供控件技术和数据分析工具 基于专业控件的技术积累 发布低代码开发平台 开发商介绍 葡萄城成立于1980年&#xff0c…

C# XML基本操作

一 XML的内容 二 XML的处理方式 1 DOM 文档对象模型(Document Object Model) 2 SAX XML解析的简单API(Simple API for XML) 3 .NET提供了XML支持:System.XML名称空间 三 常用的XML类 1 XmlDocument .LoadXml()…

linux安装mongodb的详细教程

目录 一、下载MongoDB Community Server(社区版) 三、启动mongodb 四、利用配置文件启动mongodb服务 一、下载MongoDB Community Server(社区版) 1.1、下载地址 Download MongoDB Community Server | MongoDB 1.2、选择安装版本 二、上传下载后的mongodb安装包,如…

vue路由写法小结

咱们先说路由的匹配语法,动态路由在项目中经常用到,在某些情况下我们要对路径参数进行正则表达式校验。 基础用法: 使用正则表达式后(仅匹配数字): 加入*传入多个params参数,此时参数可以传多个…

使用Nordic的nrf52832进行主从机连接抓包分析

主机使用例程:nRF5_SDK_17.1.0_ddde560\examples\ble_central\ble_app_blinky_c\pca10040\s132\arm5_no_packs 从机使用例程:nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_blinky\pca10040\s132\arm5_no_packs nrf528321. 空中数据包格式1.…

基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备

文章目录一、前言二、系列文章三、替换部分3.1 自动分配设备号3.2 自动创建设备四、解析:完整源码4.1 helloworld_amlogic_char_driver_auto_mknode.c4.2 Makefile五、编译执行(1)编译及部署(2)加载ko文件(…

HCIP作业三

文章目录一,建立拓扑图1,目的:实现全网可达二,在OSPF1区域1,所有路由器配置IP地址(包含OSPF100区域)2,进行O1的宣告,不能宣告ISP网段3,在O1区域的R3写缺省去I…

MIT6.830-2022-lab3实验思路详细讲解

文章目录一、实验概览二、实验过程成本估算(Cost Estimation):基数和选择率Exercise 1: IntHistogramExercise 2: TableStatsExercise 3: Join Cost EstimationExercise 4: Join Cost EstimationExtra Credit总结一、实验概览 对于这次lab&a…

尚医通-数据字典接口-前端列表(十三)

目录: (1)数据字典接口-需求和准备 (2)数据字典接口-列表 (3) 数据字典前端-列表 (1)数据字典接口-需求和准备 前面我们完成了医院设置模块的开发,现在来…

js数组篇

数组定义 var arr1new Array(33,44,55,66); var arr2[A,B,C,D]; var arr3new Array(4); 数组常用方法 splice()方法用于替换数组中的指定项 splice(3,2,X,Y,Z):从下标为3的项开始,连续替换2项 ,插入XYZ var arr[A,B,C,D,E,F,G]; arr.spl…

Java线程间通信机制 (等待唤醒机制)

1.1 线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。 比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动…

[JavaEE] Thread类及其常见方法

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1.Thread 的常见构造方法 2.Thread 的几个常见属性…

机器学习基石2(noise和error)

文章目录一、什么是noise?二、什么是error?三、常用error一、什么是noise? 我们之前的讨论都是一种理想化的说明,比如数据来源于目标函数fff,似乎我们手里拿到的数据是这样得来的,随机取一个输入&#xff0…

DOM算法系列009-判断给定节点是否为块级元素

UID: 20221227215215 aliases: tags: source: cssclass: created: 2022-12-27 块级元素 给定一个节点,如何判定它是否为块级元素呢? 首先,块级元素一定是元素节点,所以它的nodeType 1其次,我们思考,有什…

Redis分布式缓存、秒杀

目录一、单点Redis的问题二、RDB三、AOF四、Redis优化秒杀流程1、秒杀步骤:2、Redis优化秒杀步骤:3、秒杀的lua脚本4、调用秒杀的lua脚本5、通过线程池,操作阻塞队列五、基于Redis实现共享session登录NoSQL数据库进阶实战哪吒精品系列文章一、…