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

news2024/12/25 9:19:49

目录

引言

概述

集成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: 8719
        dashboard: 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极简入门

 

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

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

相关文章

免费常用IP归属地查询API

引言 因毕设需要&#xff0c;需要使用到根据IP地址查询归属地 经过百度查询&#xff0c;发现如下几个api可以尝试&#xff0c;本人决定使用最后一个api 免费常用IP归属地查询API ip-api.com 可切换显示语言 http://ip-api.com/json/117.136.12.79?langzh-CN {"status…

wodat:一款针对Windows Oracle数据库的渗透测试工具

关于wodat wodat是一款功能强大的针对Windows Oracle数据库的渗透测试工具&#xff0c;该工具基于C# .Net Framework开发&#xff0c;能够帮助广大研究人员对Windows平台下的Oracle数据库执行按摩全渗透测试任务。 注意&#xff1a;请在被授权执行安全测试的情况下使用该工具…

[Apache Hudi] 流转批的场景实践

文章目录1.EventTime计算原理2.案例使用2.1 Maven pom 依赖2.2 设置EventTime2.3 Flink API2.4 Flink SQL2.5 读取EventTime在某些业务场景下&#xff0c;我们需要一个标志来衡量hudi数据写入的进度&#xff0c;比如&#xff1a;Flink 实时向 Hudi 表写入数据&#xff0c;然后使…

vue2版本《后台管理模式》(中)

文章目录前言一、创建一个文件夹 utils 里面新增一个 setToken.js 文件(设置token验证&#xff09;二 、创建一个api文件夹 新增 service.js &#xff08;axios拦截器&#xff09;三、在api文件夹里 新增一个 api.js 来接收数据&#xff08;把api封装哪里需要某项数据直接引入就…

运维服务商低成本提升服务质量解决方案

在信息化高速发展的今天&#xff0c;网络建设的重要性不言而喻&#xff0c;更多客户选择将运维服务外包或托管给运维服务商&#xff0c;市场需求愈大竞争压力愈大&#xff0c;想要脱颖而出势必要优化自身提高服务质量&#xff0c;最好是低成本、大提升&#xff0c;nVisual助力渠…

饕餮 NFT 作品集来袭!

饕餮 NFT 作品集包含 Chili Game 创作的体验《饕餮》第一章中的角色。可以在 The Sandbox 农历新年活动期间&#xff08;01/18/23 至 02/28/23&#xff09;体验。 饕餮的故事植根于中国古代神话&#xff0c;主要灵感来自《山海经》&#xff0c;一个关于捉妖人「青蛙侠」的故事。…

ASEMI中低压MOS管18N20参数,18N20封装,18N20尺寸

编辑-Z ASEMI中低压MOS管18N20参数&#xff1a; 型号&#xff1a;18N20 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;200V 栅源电压&#xff08;VGS&#xff09;&#xff1a;30V 漏极电流&#xff08;ID&#xff09;&#xff1a;18A 功耗&#xff08;PD&#x…

神经网络基础部件-卷积层详解

前言 在全连接层构成的多层感知机网络中&#xff0c;我们要通过将图像数据展平成一维向量来送入模型&#xff0c;但这会忽略了每个图像的空间结构信息。理想的策略应该是要利用相近像素之间的相互关联性&#xff0c;将图像数据二维矩阵送给模型中学习。 卷积神经网络(convolu…

教育舆情监测方案有哪些,TOOM讲解教育舆情的应对与处理?

教育舆情方案是针对教育领域的舆情事件或问题而制定的应对方案。其主要目的是通过有效的信息收集、分析、处理和传播&#xff0c;帮助教育机构或相关组织及时掌握和应对公众舆论的发展趋势&#xff0c;维护良好的舆情形象和声誉&#xff0c;教育舆情监测方案有哪些&#xff0c;…

黑马Java后端项目实战--在线聊天交友

【课程简介】 越来越多的系统都有消息推送的功能&#xff0c;如聊天室、邮件推送、系统消息推送等&#xff1b; 要实现消息推送就需要服务端在数据有变化时主动推送消息给客户端&#xff0c;本次课程将带大家使用websocket实现消息推送。 【主讲内容】 1.方法&#xff1a;如…

ANR系列(二)——ANR监听方案之WatchDog

前言 ANR的监控在Android6.0之前可以通过监听文件data/anr/trace读取trace信息来分析&#xff0c;但从6.0之后就被禁止了。随着Android的发展&#xff0c;手机里的ANR越来越多&#xff0c;对ANR的监控方案也就五花八门。 WatchDog方案 WatchDog是个开源的框架&#xff0c;是…

大漠插件最新中文易语言模块7.2302

模块名称:大漠插件中文模块最新通用7.2302模块简介:大漠插件中文模块最新通用7.2302模块特色:原翻译:花老板完善命令备注:易生易世本人花费一个月时间才将命令完善了插件的备注说明.且用且珍惜去掉了大漠插件定制版类.因为没用.模块特色:什么是中文模块?大漠插件模块是由大漠类…

Java SPI 概念和应用实现

Java SPI 测试 Demo一.SPI 简介1.概念 SPI 与 API2.作用二.Jdk SPI 实现1.SPI 接口定义2.SPI 实现类定义3.SPI 配置4.测试三.SpringBoot SPI 实现1.引入 SpringBoot 依赖2.SpringBoot SPI 配置3.测试一.SPI 简介 1.概念 SPI 与 API SPI 全称&#xff1a;Service Provider Int…

Xshell连接阿里云服务器搭建网站

一、建设一个网站的基本要求 申请一个独立的域名申请一台云服务器ECS在服务器上安装网站环境&#xff0c;如&#xff1a;Apache发布网站内容至云服务器将第一步注册的域解析至云服务器的外网IP地址进行ICP备案 二、用户访问网站的过程 在浏览器上输入域名浏览器自动调用DNS&…

SPI(服务提供发现机制)简单使用

一、概述 SPI的英文全称是Service Provider Interface&#xff0c;是Java内置的一种服务提供发现机制。一般常用于一些框架或组件库的开发&#xff0c;我们最熟悉JDBC就应用到了SPI机制&#xff0c;并且在Spring、Dubbo中也大量应用了SPI机制。SPI机制是针对同一个接口采用不同…

质量小议18 -- 熵

未能深入理解其包含的物理意义&#xff0c;浅记于此&#xff0c;以求理解对抗有自然无序的过程。 熵&#xff0c;对系统无序程序的度量&#xff0c;表征系统混乱程度。系统总是由有序向无序&#xff0c;最后走向静寂。 关键词&#xff1a;1. 无序和混乱&#xff1b;2. 有序向无…

Java中static关键字和代码块的学习

本文介绍了Java中static关键字的使用,即静态成员变量和成员方法以及使用,静态与非静态成员变量和方法的对比总结 Java中的代码块介绍与最后结合代码块和构造方法后的初始化代码执行顺序的练习 static和代码块的学习三.认识static关键字1.static修饰成员变量2.static修饰成员方法…

GAMES101-计算机图形学入门 LEC4: TRANSFORMATION-3D

本节课程视频地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744/?p4 补充上一节课的一个内容&#xff0c;旋转矩阵的逆矩阵是它的转置&#xff0c;也就是说有R−θRθ−1RθTR_{-\theta} R_\theta^{-1}R_\theta^TR−θ​Rθ−1​RθT​ 上节课讲了&#xff0c;…

【go】结合一个go开源项目分析谷歌浏览器cookie为什么不安全 附go项目导包失败怎么解决教程

本文创作背景 源于谷歌浏览器提示密码被泄露 并且某站很快收到了异地企图登录的提醒。 当即怀疑是不是谷歌浏览器保存的密码不安全&#xff0c;最后查阅诸多资料 并找到一个go语言编写的开源项目进行研究&#xff0c;虽然最终不能确定密码是如何泄露的 但研究结论还是让人不由感…

在华为MateBook Ego的arm windows 11上安装hyper-V虚拟机

入手一台华为matebook Ego的笔记本&#xff0c;由于想要测试一些arm的驱动功能&#xff0c;经常会把系统搞蓝屏&#xff0c;于是想安装一个虚拟机&#xff0c;于是试了vmware ,visual-box&#xff0c;由于本机是arm架构上面两个软件都无法进行正常安装&#xff0c;可能是由于有…