Sentinel 流控-链路模式

链路模式

A B C 三个服务

A 调用 C

B 调用 C

C 设置流控 ->链路模式 -> 入口资源是 A

A、B 服务

package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 链路模式:*    条件:*      - A —> C; B -> C*      - C 设置流控规则 入口资源是A*/
@RestController
@RequestMapping("/lianlu")
public class LianLuController {@AutowiredBaseService baseService;@RequestMapping("/A")public Object A() {String s = baseService.queryC();return "hi, A;" + s;}@RequestMapping("/B")public Object B() {String s = baseService.queryC();return "hi, B;" + s;}}

C 服务

package com.learning.springcloud.order.service;public interface BaseService {public String queryC();
}
package com.learning.springcloud.order.service.impl;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.learning.springcloud.order.service.BaseService;
import org.springframework.stereotype.Service;@Service
public class BaseServiceImpl implements BaseService {@Override@SentinelResource(value = "queryC")public String queryC() {return "查询C";}
}

控制台

设置链路收集

server:port: 8061spring:application:name: order-sentinelcloud:sentinel:transport:dashboard: 127.0.0.1:8080web-context-unify: false # 默认请求链路进行收敛

设置流控规则

  • 链路 入口 A

访问

问题:为啥没有流控处理的消息而是访问报错???

问题解决

分析:

       1.  使用 注解 @SentinelResource 则无法使用全局异常处理

       2. 增加注解 blockHandler 属性以及方法

package com.learning.springcloud.order.service.impl;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.learning.springcloud.order.service.BaseService;
import org.springframework.stereotype.Service;@Service
public class BaseServiceImpl implements BaseService {@Override@SentinelResource(value = "queryC", blockHandler = "blockHandlerForQueryC")public String queryC() {return "查询C";}public String blockHandlerForQueryC(BlockException be) {return "queryC 被流控了!!!";}
}
  • 再次访问 可以正常返回流控处理消息

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

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

相关文章

腾讯云4核8G服务器3年600元?

腾讯云4核8G服务器3年600元?目前的价格是轻量应用服务器4核8G12M带宽一年446元、646元15个月,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,标准型SA2服务器1444.8元一年,在txy.wiki可以查询详细…

Excel一键导入导出-EasyPOI

EasyPOI是一款优秀的开源Java库,专为简化和优化Excel文件的导入导出操作而设计。下面,我会介绍EasyPOI在项目中使用EasyPOI,实现Excel文件的高效操作。帮助读者全面了解和掌握这一工具。 EasyPOI简介 官网: http://www.wupaas.co…

串口通信知识点

串口的话主要就是用来进行通信的。 1>串行通信,并行通信。 串行通信:只使用一根线来进行数据发送或者是接收,串行通信传输数据是一位一位进行传输 并行通信:使用多跟线进行数据的发送和接收,并行通信可以一次传输…

windows服务启动

一.NetCore 1.创建启动脚本run_instal.bat,例如程序文件为ApiDoc.exe set serviceName"Apidoc Web 01" set serviceFilePath%~dp0ApiDoc.exe set serviceDescription"ApiDoc 动态接口服务 web 01"sc create %serviceName% BinPath%serviceFilePath% sc c…

如何在Django中使用分布式定时任务并结合消息队列

如何在Django中使用分布式定时任务并结合消息队列 如何在Django中使用分布式定时任务并结合消息队列项目背景与意义实现步骤1. 安装Celery和Django-celery-beat2. 配置Celery3. 配置Django-celery-beat4. 定义定时任务5. 启动Celery worker 和 beat6. Celery 指令7. 对接消息队…

SP1:基于Plonky3构建的zkVM

1. 引言 SP1为SuccictLab开源的,基于Plonky3构建的zkVM。 开源代码见: https://github.com/succinctlabs/sp1(Rust) 当前暂未实现onchain-verifier,但会采用标准的STARK->SNARK verifier。 SP1 zkVM基于的指令…

「软件设计师」操作系统基本原理

操作系统概述 操作系统与计算机体系结构之间的关系 操作系统具备的管理职能 进程管理 进程的状态前趋图pv操作死锁问题存储管理 段页式存储页面置换算法文件管理 索引文件位示图作业管理设备管理 数据传输控制方式微内核操作系统 虚设备与SPOOLING技术 进程管理 进程的状态…

数据库日志已经很大了,比如200多G,不能收缩到几兆,实际操作过只能到30G

当数据库日志文件(通常称为事务日志或事务日志文件)变得非常大时,确实可能会遇到问题,因为这会占用大量的磁盘空间,并可能影响数据库的性能。收缩日志文件到非常小的大小(例如从200多G到几兆)可…

UnityShader——02三大主流编程语言

三大主流编程语言 Shader Language Shader language的发展方向是设计出在便携性方面可以与C/JAVA相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“利用图形硬件的并行性,提高算法的效率” Shader language目前主要有 3 种语言&…

Python OpenCV 入门 这篇就够了

目录 1.初步认识OpenCV 1.1OpenCv概述 1.2OpenCV模块 2.图像处理的基本操作 2.1 imread()方法读取图像 2.2 显示图像 2.2.1 imshow()方法显示图像 2.2.2 waitKey()方法设置按键事件 2.2.3 destroyAllWindows()方法销毁所有窗口 3.3 imwrite保存图像 3.4 获取图像属性…

springboot/ssm招投标系统Java在线招投标项目专家管理系统

springboot/ssm招投标系统Java在线招投标项目专家管理系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7&am…

【OrangePi Zero2 智能家居】智能家居项目的软件实现

一、项目整体设计 二、项目代码的前期准备 三、实现语音监听接口 四、实现socket监听接口 五、实现烟雾报警监听接口 六、实现设备节点代码 七、实现接收消息处理接口 一、项目整体设计 整体的软件框架大致如下: 整个项目开启4个监听线程, 分别是&…

【洛谷 P3367】【模板】并查集 题解(并查集)

【模板】并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作。 输入格式 第一行包含两个整数 N , M N,M N,M ,表示共有 N N N 个元素和 M M M 个操作。 接下来 M M M 行,每行包含三个整数 Z i , X i , Y i Z_i,X_i,Y…

为什么有些人喜欢回答问题答非所问?为什么有些人的处事风格是热情、礼貌、一问三不知的人?

问题描述:为什么有些人喜欢回答问题答非所问?为什么有些人的处事风格是热情、礼貌、一问三不知的人? 问题解答: 有些人喜欢回答问题答非所问可能有几种原因: 缺乏知识或技能:有些人可能不了解问题的答案&…

奇异值分解(SVD)

对于一个方阵而言,采用的是特征分解,参考《矩阵特征值分解(EVD)-CSDN博客》

高程 | 数据的共享与保护(c++)

文章目录 📚标识符的作用域与可见性🐇作用域🐇可见性 📚对象的生存期🐇静态生存期🐇动态生存期 📚类的静态成员🐇静态数据成员🐇静态函数成员 📚类的友元&…

你的电脑关机吗

目录 程序员为什么不喜欢关电脑? 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑? 大部分人都会选择将电脑进行关机操作。其实这不难理解,毕竟人类都需要…

MyBatis篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、MyBatis 实现一对一有几种方式?具体怎么操作的?二、MyBatis 实现一对多有几种方式,怎么操作的?三、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?四、Mybatis 的一级、二级缓存前言 前些天发现了一个巨牛的人工智能…

每日一题 KY11 二叉树遍历

编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后&…

【数据库_MySQL】MySQL彻底卸载

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 卸载 要是你的…