Spring Cloud Gateway整合Sentinel

日升时奋斗,日落时自省 

目录

1、实现整合

1.1、添加框架依赖

 1.2、设置配置文件

1.3、设置限流和熔断规则

1.3.1、限流配置

Route ID限流配置

API限流配置

1.3.2、熔断配置

2、实现原理


先前Sentinel针对是业务微服务,没有整合Sentinel到Spring Cloud Gateway

Spring Cloud Gateway 默认是有限流功能的,但限流功能比较简单,所以咱们今天要实现的是 Spring Cloud Gateway 整合 Spring Cloud AlibabaSentinel 实现限流和熔断功能,这种方式也是目前生成环境主流的限流和熔断的实现方法。

1、实现整合

Gateway整合Sentinel总共分为以下4步:

(1)添加框架依赖

(2)设置配置文件

(3)配置拦截规则

(4)验证效果

接下来,我们一步一步来实现

1.1、添加框架依赖

需要框架依赖有3个:gateway、sentinel和sentinel-gateway(Sentinel对接Gateway的适配框架,Sentinel1.6新增模块),如下配置所示:

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

 1.2、设置配置文件

在application中设置sentinel控制台的地址,以及限流之后的响应信息:

spring:cloud:gateway:routes:- id: userserviceuri: http://localhost:9090predicates:- Path=/user/**sentinel:transport:dashboard: localhost:18086scg:fallback:mode: responseresponse-status: 200response-body: '{"code":429,"message":"被限流了!"}'application:name: gateway-service
server:port: 10086

scg(Spring Cloud Gateway):配置网关专用

fallback:降级处理配置

mode:response 指定降级处理的模式为返回响应

response-status:表示响应状态

response-body:就是响应信息

限制规则中的重定位配置如下:

      scg:fallback:mode: redirectresponse-status: 200response-body: '{"code":429,"message":"被限流了!"}'redirect: https://blog.csdn.net/c_study__c?spm=1011.2124.3001.5343    #跳转地址

1.3、设置限流和熔断规则

进入sentinel控制台,内容有变

 限流或熔断配置就在“请求链路”中配置

1.3.1、限流配置

限流可以配置两种 API 类型: Route ID 和 API 分组

  • Route ID 是和 Gateway 中的 Routes (每个路由)一一对应的API 分组是自定义
  • API 规则 (开发人员可以自定义)
Route ID限流配置

限流配置参数:

resourceMode: 规则是针对API Gateway 的 Route ID (RESOURCE MODE_ROUTE ID),还是用户在Sentinel 中定义的 API分组 (RESOURCE MODE CUSTOM API NAME) ,默认是 Route ID.

resource: 资源名称,可以是网关中的 Route ID 名称或者用户自定义的 API 分组名称

grade: 阈值类型,QPS 或线程数。

count: 具体值intervalSec: 统计时间窗口,单位是秒,默认是 1 秒

controlBehavior: 流量整形的控制效果,目前支持快速失败和匀速排队两种模式,默认是快速失败。

controlBehavior: 流量整形的控制效果,目前支持快速失败和匀速排队两种模式,默认是快速失败

Burst size: 应对突发请求时额外允许的请求数目。

maxQueueingTimeoutMs: 匀速排队模式下的最长排队时间,单位是毫秒,仅在匀速排队模式下生效

paramItem: 参数限流配置。若不提供,则代表不针对参数进行限流,该网关规则将会被转换成普通流控规8则;否则会转换成热点规则,它包含的字段:

  • parseStrategy:从请求中提取参数的策略,目前支持提取来源 IPa.(PARAM PARSE STRATEGY CLIENT IP) 、Host (PARAM PARSE STRATEGY HOST) 、 Header(PARAM PARSE STRATEGY HEADER) 意 URL 参 (PARAM PARSE STRATEGY URL PARAM)种模式。
  • fieldName: 若提取策略选择 Header 模式或 URL 参数模式,则需要指定对应的 header 名称或 URL参数名称
  • pattern:参数值的匹配模式,只有匹配该模式的请求属性值会纳入统计和流控,若为空则统计该请求属性的所有值。
  • matchStrategy: 参数值的匹配策略,目前支持精确匹配 (PARAM MATCH STRATEGY_EXACT)、子串匹 (PARAM MATCH STRATEGY CONTAINS) 和E则匹 (PARAM MATCH STRATEGY REGEX)。
API限流配置

先到API管理

 这是API组名: 并且添加匹配规则

匹配规则顾名思义:

  • 精确:访问那个写那个(写全)
  • 前缀:凡是这个前缀的都受到限制
  • 正则:就是类似正则表达匹配方式

 新增好以后,回到请求链路

此时API名称会有内容供友友们选择

 注:操控其实差不多,更加灵活了

1.3.2、熔断配置

降级配置也就是熔断配置,在程序运行期间出现了某种异常就会触发的机制。它是在"请求链路“中点击“降级”按钮就能看到:

 

熔断策略: 使用哪种策略来进行熔断操作。

慢调用比例: 在统计时长内的所有请求,如果请求时间超过 xx 秒则为慢请求,且慢请求的超过一定的比例,且请求数大于最小请求数将触发熔断操作,也就是一段时间内 (熔断时长参数设置) 的请求会快速失败。

异常比例: 在统计时长内的所有请求,如果异常的比例大于闯值,且请求数大于最小请求数,将触发熔断,也就是一段时间内 (熔断时长参数设置)的请求会快速失败。

异常数:在统计时长内的所有请求,如果异常数大于闯值,且请求数大于最小请求数,将触发熔断,也就是一段时间内 (熔断时长参数设置)的请求会快速失败。

2、实现原理

外部请求进入 API Gateway 时会经过 Sentinel 实现的 filter,其中会依次进行 路由/API 分组匹配请求属性解析参数组装。Sentinel 会根据配置的网关流控规则来解析请求属性,并依照参数索引顺序组装参数数组,最终传入 SphU.entry(res, args) 中。Sentinel API Gateway Adapter Common 模块向 Slot Chain 中添加了一个 GatewayFlowSlot,专门用来做网关规则的检查。GatewayFlowSlot 会从 GatewayRuleManager 中提取生成的热点参数规则,根据传入的参数依次进行规则检查。若某条规则不针对请求属性,则会在参数最后一个位置置入预设的常量,达到普通流控的效果。

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

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

相关文章

uView-UI v2.x常见问题整理

为了更好的给大家提供 uView UI 的技术支持&#xff0c;uView UI 团队整理常见问题文档&#xff0c;大家可以阅读查找常见的问题解决办法。 uView 2.x 文档 https://www.uviewui.com uView 1.x 文档 https://v1.uviewui.com uView UI uni-app 主页 DCloud 插件市场 uVie…

机器视觉系统选型-案例分享

客户要求&#xff1a; 1、测量物体&#xff1a;圆直径&#xff1a;15mm 2、公差带&#xff1a;0.2mm 0.1mm 3、工作距离&#xff1a;50~500mm 4、静态还是动态拍摄 5、视野 测量精度&#xff1a; 1、0.10.20.02mm 公式&#xff1a;机械误差公差带系统精度 2、0.2/100.02mm 公式…

前端发开的性能优化 请求级:请求前(资源预加载和预读取)

预加载 预加载&#xff1a;是优化网页性能的重要技术&#xff0c;其目的就是在页面加载过程中先提前请求和获取相关的资源信息&#xff0c;减少用户的等待时间&#xff0c;提高用户的体验性。预加载的操作可以尝试去解决一些类似于减少首次内容渲染的时间&#xff0c;提升关键资…

SQL优化:分区表

前面我们讲述了物化视图。物化视图对查询的加速效果是显而易见的,但并不是所有的查询都适合用物化视图来提速。比如只是常规的范围查询,因为表的数据量太大而导致较慢,就不推荐使用物化视图了,徒增冗余数据。 这个时候比较常用的手段是使用分区表。 概念 分区表,顾名思…

python统计分析——直方图(sns.histplot)

使用seanborn.histplot()函数绘制直方图 from matplotlib.pyplot as plt import seaborn as snsdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) &#xff08;1&#xff09;dataNone, 表示数据源。 &#xff08;2&#xff09;xNone, 表示直方图的分布垂直与x轴…

程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash

进入终端(Terminal)为新下载的应用配置环境&#xff0c;是Mac生产力up up的关键一步&#xff0c;更是编程小白装大神的第一步。Fake it till you make it , 硅谷大神标准路径&#xff5e; shell的基本原理 为应用配置环境&#xff0c;相当于在应用和操作系统间架桥。由此&…

Linux: dev: gcc: plugin: annobin

https://developers.redhat.com/blog/2018/02/20/annobin-storing-information-binaries# https://www.mankier.com/1/annobin 这个的功能是记录一些编译信息在二进制文件里,stip的时候,不会被strip掉,同时也不会被加载到运行时的内存里。方便查看编译信息,有利于问题分析…

Flink Watermark和时间语义

Flink 中的时间语义 时间语义&#xff1a; EventTime&#xff1a;事件创建时间&#xff1b;Ingestion Time&#xff1a;数据进入Flink的时间&#xff1b;Processing Time&#xff1a;执行操作算子的本地系统时间&#xff0c;与机器无关。不同的时间语义有不同的应用场合&#x…

Go语言开发利器:几种主流IDE的优势与应用

摘要&#xff1a;Go 语言因其简洁、高效和强大的并发模型而受到越来越多开发者的青睐。为了提高 Go 语言开发的效率&#xff0c;选择一款合适的集成开发环境&#xff08;IDE&#xff09;至关重要。本文将详细介绍几种 Go 语言开发常用的 IDE&#xff0c;包括 Visual Studio Cod…

PostgreSQL教程(一):前言

本文档基于9.6.x 版本&#xff01; 何为PostgreSQL&#xff1f; PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES&#xff0c;版本4.2为基础的对象关系型数据库管理系统&#xff08;ORDBMS&#xff09;。POSTGRES领先的许多概念在很久以后才出现在一些商业数据库中。…

数据分析基础之《numpy(6)—IO操作与数据处理》

了解即可&#xff0c;用panads 一、numpy读取 1、问题 大多数数据并不是我们自己构造的&#xff0c;而是存在文件当中&#xff0c;需要我们用工具获取 但是numpy其实并不适合用来读取和处理数据&#xff0c;因此我们这里了解相关API&#xff0c;以及numpy不方便的地方即可 2…

【JavaFX】JavaFX11开发踩坑记录

文章目录 技术栈踩坑记录 技术栈 JavaFX 11MavenJDK 11 踩坑记录 这些坑对于初学者很容易踩&#xff0c;JavaFX经常会报错空指针异常遇到其中一个问题可能就会消耗好几天的时间。 JavaFX 采用的是MVC架构设计&#xff0c;页面设计使用 fxml文件&#xff1b;业务逻辑采用Con…

【实用工具】FFmpeg常用的命令

前言 FFmpeg是一个强大的多媒体处理工具&#xff0c;可以用于处理音频、视频和图像。 命令格式 ffmpeg {1} {2} -i {3} {4} {5} 上面命令中&#xff0c;五个部分的参数依次如下。 1.全局参数 2.输入文件参数 3.输入文件 4.输出文件参数 5.输出文件 常见命令行参数 -c&…

漏洞复现-天融信TOPSEC static_convert 远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

2016年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天我们来看2016年的AMC8竞赛真题的典型考题和解析&#xff0c;最后利用碎片化时间冲刺&#xff0c;查漏补缺&#xff0c;提高成绩。温馨提示&#xff1a;2024年AMC8比赛现在还可以报名&#xff0c;自由报名截止到1月7日&#xff0c;我这里有官方自由报名通道。后续官方模拟题…

美国地质调查局历史地形图

简介 美国地质调查局地形图的历史可以追溯到 19 世纪末&#xff0c;当时美国地质调查局开始着手绘制整个美国的详细地图。1:24,000 比例尺&#xff0c;也称为 7.5 分四边形地图&#xff0c;成为最广泛使用的比例尺之一。每张地图覆盖 7.5 分经纬度的区域&#xff0c;从而详细呈…

element ui图片上传组件封装+校验黑白照片

项目需求是在上传照片的时候&#xff0c;不能上传黑白照片。如果上传的黑白照片需要提示。所以就封装的一个组件&#xff0c;校验照片颜色也是我在网上找到的&#xff0c;但是原文链接找不见了。所以自己改了改封装的一个小功能。 // components/ImageUpload/index.vue <tem…

计算机基础面试题 |07.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

HackTheBox - Medium - Linux - BroScience

BroScience BroScience 是一款中等难度的 Linux 机器&#xff0c;其特点是 Web 应用程序容易受到“LFI”的攻击。通过读取目标上的任意文件的能力&#xff0c;攻击者可以深入了解帐户激活码的生成方式&#xff0c;从而能够创建一组可能有效的令牌来激活新创建的帐户。登录后&a…

canvas绘制椭圆形示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…