当前位置: 首页 > news >正文

微服务门神-Gateway与Sentinel的集成

目录

引言

概述

集成Sentinel

限流维度

网关集成

Route维度

API分组

精准匹配

前缀匹配

正则匹配  

自定义限流返回格式

转视频版


引言

书接上篇:微服务门神-Gateway过滤器Filter,讲完了解Gateway过滤器之后,接下来看下Gateway与Sentinel的集成

概述

微服务中整合了网关,那网关就成了项目的守门神了,所有请求必须途径网关之后,再借助网关路由转发到其他微服务。

所以,当服务有限流需求时,网关就是绕不开关注点。提起限流,方案很多,比如过滤器,拦截器,网关过滤器,这些都可以,不过今天要讲的是阿里的Sentinel。来看下,Gateway是怎么整合Sentinel实现限流的。

集成Sentinel

Sentinel支持集成SpringCloud Gateway、Zuul等主流网关,从1.6.0版本开始,Sentinel提供了SpringCloud Gateway的适配模块,可以提供两种资源维度的限流:

限流维度

  • Route维度

    即在Spring配置文件中配置的路由条目,资源名为对应的routeId,简单理解就是针对具体的某个微服务实施的限流。
  • 自定义API维度

    用户可以利用Sentinel提供的API来自定义一些API分组。可以理解针对具体的接口url实现限流。

网关集成

1>添加依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>

2>添加配置

spring:cloud:sentinel:transport:port: 8719dashboard: localhost:8080

Route维度

针对的是接入网关的微服务,做统一流通控制,比如下面的网关接入的商品服务:

 sentinel对商品服务配置

 

 限流逻辑跟之前流控配置一样,如果不理解,可以看:SpringCloud Alibaba极简入门

API分组

Sentinel中支持按照API分组进行限流,就是我们可以按照特定规则进行限流.

在管控台页面中提供了三种方式的API分组管理

  • 精准匹配

  • 前缀匹配

  • 正则匹配

以商品服务做测试案例,在shop-product-server服务中定义了如下的接口地址

@RestController
@RequestMapping("/v1")
public class TestController {@RequestMapping("/test1")public String test1(){return "test1";}@RequestMapping("/test2")public String test2(){return "test2";}@RequestMapping("/test3/test")public String test3(){return "test3";}
}

精准匹配

1.在API管理中新建API分组,匹配模式选择精准匹配,匹配串写请求URL地址

限制api可以:product-service 也可以使product-serv, 测试时需要跟反问一样,另外注意通过网关访问

 2.在流控规则中,API类型中选择API分组,然后在API名称中选择我们刚刚定义的V1限流

3.此时上面三个请求中,只有/product-service/v1/test1会被限流

前缀匹配

1.在API管理中新建API分组,匹配模式选择前缀匹配,匹配串写请求URL地址

 

此时/product-service/v1/test1/product-service/v1/test2会被限流

注意: 如果路径为/*表示匹配一级路径,如果路径为/**表示多级路径

正则匹配  

1.在API管理中新建API分组,匹配模式选择正则匹配,匹配串写请求URL地址

此时所有路径都会被限流

自定义限流返回格式

 默认情况下,Gateway触发限流规则之后,返回限流字符串提示,这很明显不符合接口统一响应的规则,这是我们对这个响应值进行定制。

1>在配置类GatewayConfiguration.java中添加如下配置

@PostConstruct
public void initBlockHandlers() {BlockRequestHandler blockRequestHandler = new BlockRequestHandler() {public Mono<ServerResponse> handleRequest(ServerWebExchange serverWebExchange, Throwable throwable) {Map map = new HashMap<>();map.put("code", 0);map.put("message", "接口被限流了");return ServerResponse.status(HttpStatus.OK).contentType(MediaType.APPLICATION_JSON).body(BodyInserters.fromValue(map));}
};GatewayCallbackManager.setBlockHandler(blockRequestHandler);
}

  2>重启并测试

到这,本篇就结束了,欲知后事如何,请听下回分解~

转视频版

看文字不过瘾可以切换视频版:SpringCloud Alibaba极简入门

 

相关文章:

微服务门神-Gateway与Sentinel的集成

目录 引言 概述 集成Sentinel 限流维度 网关集成 Route维度 API分组 精准匹配 前缀匹配 正则匹配 自定义限流返回格式 转视频版 引言 书接上篇&#xff1a;微服务门神-Gateway过滤器Filter&#xff0c;讲完了解Gateway过滤器之后&#xff0c;接下来看下Gateway与…...

查找的基本概念

查找表是由同一类型的数据元素&#xff08;或记录&#xff09;构成的集合。根据给定的某个值&#xff0c;在查找表中确定一个其关键字等于给定值的数据元素或记录。关键字&#xff1a;用来标识一个数据元素&#xff08;或记录&#xff09;的某个数据项的值。查找算法的评价指标…...

安装v-router出错

一、场景 1、安装v-router npm i --save vue-router 2、报错&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: sph20.1.0 npm ERR! Found: vue2.7.14 npm ERR! node_modules/vue npm ERR! v…...

2023美赛C题:预测 Wordle 结果

以下内容全部来自本人人工翻译&#xff0c;仅供参考。 文章目录背景要求附件数据文件条目描述纽约时报网站上发布的Wordle指导方针词汇表参考文献服务背景 Wordle是目前纽约时报每天提供的一种受欢迎的谜题。玩家试图通过在六次或更少的机会内猜测一个五个字母的单词来解决谜题…...

minio public桶禁止在直接访问桶位置时列出所有文件url

minio的public桶因为没有限制&#xff0c;所以在直接访问到桶地址的时候会列出桶内所有文件的url&#xff0c;这样很不安全&#xff0c;如何禁止这个功能&#xff0c;可以使用三种方法 1、如果是新版的可以直接设置桶的Access Policy为自定义就好 编辑custom的Policy&#xff…...

Python 元组简介

Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。元组使用小括号&#xff0c;列表使用方括号。元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。如下实例&#xff1a;实例(Python 2.0)tup1 (physics, chemistry, 1997…...

python gui构造openai api可视化页面

背景&#xff1a;最近chatgpt很火&#xff0c;前几天也想注册体验一下&#xff0c;一顿操作之后&#xff0c;卡在该国家不支持。最后发现自己的代理开在香港&#xff0c;改在漂亮国就行了。虽然有chatgpt可以用&#xff0c;但是小平是自己封装了一个&#xff0c;我不能输。正好…...

服务网格领域的百花齐放,是否存在一个更优解?

作者 lingsamuel&#xff0c;API7.ai 云原生技术专家&#xff0c;Apache APISIX Committer。作者 林志煌&#xff0c;API7.ai 技术工程师&#xff0c;Apache APISIX contributor。 服务网格是一种技术架构&#xff0c;它用于管理微服务系统中各个服务之间的通信&#xff0c;旨…...

Zynq 裸机 PS + PL 双网口实现之 lwip 库文件修改

基于 xilinx vivado 2017.4 库文件 lwip141_v2_0 的修改&#xff1a; 添加对 PHY 芯片 ksz9031 的支持&#xff1b; 添加 SDK 中 LWIP 参数设置对话框 emio_options 选项&#xff1b; 添加 XPAR_GMII2RGMIICON_0N_ETH0_ADDR 和 XPAR_GMII2RGMIICON_0N_ETH1_ADDR 宏配置&#…...

金三银四丨黑蛋老师带你剖析-CTF岗

作者丨黑蛋二进制是个庞大的方向&#xff0c;对应着许许多多方向的岗位&#xff0c;除了之前说过的逆向岗位&#xff0c;漏洞岗位&#xff0c;病毒岗位&#xff0c;还有专门打CTF的岗位&#xff0c;CTF是网络安全领域的一种比赛。普遍来讲&#xff0c;大学生学习网络安全都会参…...

Linux find命令

哈喽&#xff0c;大家好&#xff0c;我是有勇气的牛排&#xff08;全网同名&#xff09;&#x1f42e; 有问题的小伙伴欢迎在文末评论&#xff0c;点赞、收藏是对我最大的支持&#xff01;&#xff01;&#xff01;。 1 介绍 find命令用来查找置顶目录下的文件。任何位于参数…...

vue项目实现会议预约(包含某天的某个时间段和某月的某几天)

一、一天的时间段预约 会议预约有以下操作&#xff1a; 1.点击预约按钮&#xff0c;弹窗最近一周的预约时间点&#xff08;半小时一个点&#xff09;&#xff0c;预约时间为5:00到24:00; 2.超过当前时间的时间点不允许再预约&#xff0c;已经预约的时间不允许再预约&#xff0c…...

javacv桌面推送 通过推送和拉取udp组播视频流实现

ffmpeg udp 推流拉流命令单播推流E:/工具/ffmpeg/ffmpeg -f gdigrab -r 23 -i desktop -pkt_size 1316 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f h264 udp://192.168.1.20:5001拉流ffplay -f h264 udp://192.168.1.20:5001 -fflags nobuffer -nofind_strea…...

2022年直播电商成交额,更是达到了24816亿元的成交额

近年来移动网络覆盖率、网速提升&#xff0c;直播行业不在是陌生的行业&#xff0c;直播也诞生了繁多的领域&#xff0c;游戏直播、户外直播等&#xff0c;当然还有今天的主题“直播带货”。直播带货是线上销售模式的一种&#xff0c;由衷是为了更好的把商品展示给用户观看&…...

【学习总结】2023寒假总结

写在前面时光匆匆&#xff0c;白驹过隙&#xff0c;转眼间寒假就过去了&#xff0c;这次寒假可以算的上是最长的一次假期&#xff0c;经历了从疫情到放开&#xff0c;从患病到阳康&#xff0c;在现实与虚幻的世界中玩耍&#xff0c;在痛苦的数据结构中徘徊&#xff0c;在每次早…...

宝塔搭建实战php源码人才求职管理系统后台端thinkphp源码(一)

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 在开源社区里看到了这一套系统&#xff0c;骑士人才系统SE版&#xff0c;搭建测试了&#xff0c;感觉很不错。能够帮助一些想做招聘平台的朋友降低开发成本&#xff0c;就是要注意&#xff0c;想商业使用的话&…...

stk 根据六根数文件生成卫星轨迹(一)

先简单介绍下上面的参数。 Propagator预报轨道模型。 TwoBody为二体&#xff08;开普勒运动模型&#xff09;。HPOP为高精度轨道模型。目前只用到这两个。 下图为六根数参数 Orbit Epoch&#xff1a;为根数时间&#xff08;UTC&#xff09; Semimajor Axis&#xff1a;长半…...

深度学习算法面试常问问题(一)

博主秋招遇到的面试问题以及整理其他面经相关问题&#xff0c;无偿分享~ 项目叙述&#xff1a; 算法需求及应用场景算法的调研和初步方案的制定数据的准备&#xff08;包括数据标注和数据增强&#xff09;算法的介绍&#xff08;包括输入和输出&#xff0c;loss、backbone、训…...

Spring 底层原理与解析 - 容器接口

Spring 底层原理与解析 - 容器接口 BeanFactory 能做哪些事 BeanFactory 与 ApplicaiotnContext 到底是谁提前做完了对象的加载 在之前的一篇关于 Spring 的文章Spring IoC 与容器的初始化中提到过&#xff0c;BeanFactory 接口与 ApplicationContext 接口之间的关系 可以看…...

Compose-Navigation简单案例上手

Navigation 快速上手 下面案例简要展示使用 Compose 版本的 Navigation 库来实现两个页面之间的跳转 这是完整的结构&#xff08;忽略掉红线划过的那个包&#xff09; 安装适用于 kotlin 的 navigation 依赖 dependencies {implementation("androidx.navigation:navigati…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...