微服务保护--线程隔离(舱壁模式)

一、线程隔离的实现方式

线程隔离有两种方式实现:

  • 线程池隔离

  • 信号量隔离(Sentinel默认采用)

如图:

线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果

信号量隔离:不创建线程池,而是计数器模式,记录业务使用的线程数量,达到信号量上限时,禁止新的请求。

两者的优缺点:

二、sentinel的线程隔离

用法说明

在添加限流规则时,可以选择两种阈值类型:

  • QPS:就是每秒的请求数,在快速入门中已经演示过

  • 线程数:是该资源能使用用的tomcat线程数的最大值。也就是通过限制线程数量,实现线程隔离(舱壁模式)。

案例需求:给 order-service服务中的UserClient的查询用户接口设置流控规则,线程数不能超过 2。然后利用jemeter测试。

1)配置隔离规则

选择feign接口后面的流控按钮:

填写表单:

2)Jmeter测试

选择《阈值类型-线程数<2》:

一次发生10个请求,有较大概率并发线程数超过2,而超出的请求会走之前定义的失败降级逻辑。

查看运行结果:

喜欢的话点个关注吧!

相关推荐
IDOlaoluo31 分钟前
Linux 安装 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解压配置详细步骤)
java·linux·运维
都叫我大帅哥1 小时前
深入解剖Shenandoah GC:Java低延迟垃圾回收的终极武器
java·jvm
带只拖鞋去流浪1 小时前
Java文件读写(IO、NIO)
java·开发语言·nio
北'辰1 小时前
DeepSeek智能考试系统智能体
前端·后端·架构·开源·github·deepseek
戴誉杰1 小时前
JAVA 程序员cursor 和idea 结合编程
java·ide·intellij-idea·cursor
阿狗哲哲2 小时前
Java选手如何看待Golang
java·开发语言·golang
文火冰糖的硅基工坊4 小时前
[激光原理与应用-176]:测量仪器 - 频谱型 - AI分类与检测相对于传统算法的优缺点分析
人工智能·架构·光学
AlbertZein4 小时前
HarmonyOS5 源码分析 —— 生命周期与状态管理(2)
架构·harmonyos
苹果醋35 小时前
React Native jpush-react-native极光推送 iOS生产环境接收不到推送
java·运维·spring boot·mysql·nginx
老华带你飞5 小时前
数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·数码论坛系统