微服务网关GateWay

news2024/11/20 9:03:39

在微服务架构下,网关的本质,其实就是对请求进行路由转发,在此基础上我们可以根据网关在整个微服务架构中的特殊位置,对请求进行前置和后置的处理。

请求转发和路由:网关类似于一个门面,微服务的组织细节对外界来说是不可知的,网关作为统一的接口提供方,将部分微服务系统的能力提供给客户端

请求过滤和控制:主要包含鉴权、限流、参数统一加密解密等

常见的开源网关方案有:Zuul、GateWay


Zuul:Netflix公司开源的一款为服务网关,主要功能是实现请求的转发和过滤控制。它定义了4种过滤器:Pre Filters、Routing Filters、Post Filters和Error Filters。

当请求进来时,先经过前置过滤器Pre Filters,所以这个过滤器常用作权限校验、参数解密和限流操作,此时如果发生错误,则会调用错误过滤器Error Filters;

当请求通过Pre Filters后,通过路由过滤器Routing Filters,将请求转发到不同的微服务进行处理,如果在执行过滤器逻辑过程中,或在调用微服务处理期间发生错误,则会调用错误过滤器Error Filters;

当请求经微服务正常处理之后,则调用后置过滤器Post Filters,后置过滤器一般会用作一些数据统计和监控,我们可以采用Prometheus的手段采集到微服务的调用时间和接口调用次数的数据,统计得到相应的热点接口予以性能优化。期间如果发生调用错误,也会调用错误过滤器Error Filters;


GateWay:是Spring官网团队研发的一款API网关。主要目的是为了取代Zuul。

Zuul存在一个问题,就是在处理一个请求的时候,Zuul内部会专门创建一个线程去进行请求的处理,并且只有当请求完成才会释放这个线程。这就导致线程在高并发场景下会被阻塞,降低系统的整体吞吐能力,影响服务的稳定运行。

看得出来Zuul初期是基于BIO模型进行设计的。后来Netflix团队也意识到这个问题,但因为迟迟未能完成版本更新,所以Spring团队决定采用非阻塞IO的模型来开发网关产品。

GateWay是依赖于SpringBoot2.x、Spring WebFlux和Reactor等技术进行开发,不仅提供了统一的路由请求方式,还基于过滤链的方式提供了网关的过滤控制功能。


GateWay的基本架构图:

 一句话描述:GateWay启动时,内置的Netty Server监听指定端口。当客户端的请求到达Gateway时,它将基于Predicate的匹配结果,计算得到访问的路由Router,然后通过Router中的Filter链进行请求的处理。处理的过程和Zuul的那四类Filter的处理流程大致相同,就不再赘述。


GateWay支持多种路由匹配的Predicate:

1.基于Header的路由匹配

2.基于Host的路由匹配

3.基于请求路径的路由匹配

4.基于请求方式的路由匹配

5.基于Cookie的路由匹配

6.基于时间的路由匹配,常用于做灰度发布

如果需要更详细信息,可以移步官网进行了解


GateWay内的过滤器分为前置过滤器和后置过滤器。它内部内置了很多过滤器,分类一共有两类,即GatewayFilter和GlobalFilter。GlobalFilter的作用域是所有请求,而GatewayFilter仅会作用域单个路由或者若干个分组的路由上。

此外,如果GateWay提供的Filter不能满足需求的话,它也提供了自定义扩展的功能,通过自定义继承AbstractGatewayFilterFactory或实现GlobalFilter即可完成扩展。

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

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

相关文章

三维数字化开发管理中心

目录一、前言二、项目依赖2.1 后端2.2 前端三、快速运行3.1 启动后台服务3.2 启动前台页面四、使用手册4.1 登录4.2 首页4.3 资源中心4.4 在线预览4.5 三维开发4.6 信息管理4.6.1 用户信息4.6.2 模型信息4.7 个人中心五、数据库5.1 数据需求5.2 数据流图5.3 数据字典1&#xff…

马斯克辞任CEO,产品经理如何用项目协作软件武装自己?

自马斯克接管推特以来,已经发起了多轮裁员潮,仅第一波就裁掉了50%的员工。11月14日,马斯克开启第二波裁员。而IT之家12 月 21 日消息,埃隆・马斯克在推特发文对网友的投票结果做出回应,称会尽快找到一个足够傻的人来接…

蓝桥杯备赛Day3——基础数据结构(一维数组)

目录 数据结构 什么是数据结构? 《数据结构》教材一般包含 基础数据结构 最简单的数据结构——一维数组 一维数组的定义 一维变长数组 一维正向遍历 一维反向遍历 一维数组区间操作(实际上就是切片操作) 一维数组从a[1]开始赋值 一维数组的读…

热门项目披露:四川超声印制板有限公司100%股权转让

热门项目披露:四川超声印制板有限公司100%股权转让 项目推荐指数:;该项目由 北京产权交易所 发布,于2022年12月11日被塔米狗平台收录。 项目方 四川超声印制板有限公司, 成立于 1998年7月5日 , 注册资金 2…

Unity 3D Hierarchy 视图 || Unity 3D Project 视图

Unity 3D 的 Hierarchy 视图包含了每一个当前场景的所有游戏对象( GameObject ),如下图所示。 其中一些是资源文件的实例,如 3D 模型和其他预制物体( Prefab )的实例,可以在 Hierarchy 视图中选…

Mac 截图工具 iShot Pro - 软件介绍、下载安装详细教程

Mac 截图工具 iShot Pro -软件介绍、下载安装详细教程 iShot -优秀,功能齐全的区域截图,窗口截图,多窗口截图,长屏幕截图,shell截图,时间间隔截图,快速注释,纹理,颜色匹配…

虚拟专用网VPN(计算机网络-网络层)

目录 专用网络与专用地址 RFC 1918指明的专用地址 互连两个地点的专用网络 虚拟专用网VPN (Virtual Private Network) IP 隧道技术 VPN 的要点 专用网络与专用地址 世界上有很多机构有自己独立的网络,这些网络并不与因特网 互连,为该机构所专有&…

【LeetCode】有效的数独 [M](模拟)

36. 有效的数独 - 力扣(LeetCode) 一、题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔…

国产CAE的涅槃-岩土行业高性能离散元软件MatDEM

作者 | 刘春博士 一、导读 2019年9月11日,ANSYS公司公开宣称:“收购LSTC公司,一举获得其旗下拥有LS-DYNA(结构&流体&电磁的多物理场求解器)、LS-PrePost(前后处理器)、LS-OPT/LS-TASC…

基于Web的文件管理系统,支持Office、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点

基于Web的文件管理系统,支持权限管理、历史版本管理、Office预览/编辑、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点续传、智能搜索、文件备注、本地自动备份、异地自动备份、一键迁移、集群部署。 主要应用场景&#xff1…

14_视图

1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改&…

STM32正点原子图片——显示实验

目录 一、图片显示部分 GIF piclib.c介绍 图像显示实验main.c介绍 二、SD卡模块 1、SD卡基础知识 2、SD卡读操作 3、SD卡写操作 一、图片显示部分 GIF GIF(Graphics Interchange Format)的原义是“图像互换格式”,是CompuServe公司在1987年开发的图像文件格式。GI…

敏捷价值流管理

对团队或企业来说,敏捷能够通过快速迭代、改进来更好地为客户或终端用户交付价值。但有些团队在引入敏捷项目管理模式之后,团队管理层看了看埋头工作的团队,“唉?团队的效率好像并没有提升啊,这不和以前一样吗……”在…

怎样给黑白照片上色?2个技能教你如何给黑白照片上色

大家看过长辈的黑白照片吗?最近我的爷爷翻出了几十年前的老照片,给我细细道来每张照片背后的故事。可惜那个年代的技术水平有限,没办法拍出好看的彩色照片。如今照片修复技术层层递进,我想借助一些图片处理软件,将这些…

Qt QCustomPlot 添加多个坐标系区域

Qt QCustomPlot 添加多个坐标系区域 文章目录Qt QCustomPlot 添加多个坐标系区域摘要1 新建多个坐标系QCPAxisQCPAxisRectQCPLayoutGrid2 多个坐标轴如何更新数据添加数据3 遇到的问题最后关键字: Debian、 Linux、 QCustomPlot、 Qt、 QCPAxisRect内容背景&#xf…

vue3的中间值思维

在用vue框架的开发的时候,经常使用到的一种中间值思维,什么是中间值思维,就是通过一个间接的属性去改变需要渲染的值 我们在传值的时候,如果是用的mitt传值,那传过来的值就是在bus.on函数中,我们就得取出来…

消息中间件RocketMQ快速入门

目录前言消息中间件需要解决哪些问题?Publish/SubscribeMessage PriorityMessage FilterBroker端消息过滤Consumer端消息过滤Message Persistence消息可靠性低延迟消息回溯消费消息堆积定时消息消息重试RocketMQ 物理部署结构RocketMQ 逻辑部署结构RocketMQ 数据存储…

Scala 基础函数

1.前言 为什么要学习Scala 分布式高并发语言Go、R、Erlang等等为何选择Scala? Spark是大数据处理的核心方式,用scala语言编写! Kafka分布式发布订阅消息系统,由LinkedIn捐给Apache,以极高的吞吐量著称,是…

人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统

1、 seaborn 作用:更高效地绘图 #安装 pip3 install seaborn#导入 import seaborn as sns单变量:直方图或核密度曲线 双变量:散点图、二维直方图、 主要函数:distplot()与joinplot()函数 1.1 单变量绘图 API import seabor…

cookie, session,redis全解析

cookie session redis 一. 前言 最近在学习node的过程中对于cookie,session,redis有了和之前不一样的理解,记录一下之前不了解的知识点。二.cookie的重点概念 存储在客户端浏览器中的字符串,最大5kb跨域不共享,每一个…