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

一、线程隔离的实现方式

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

  • 线程池隔离

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

如图:

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

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

两者的优缺点:

二、sentinel的线程隔离

用法说明

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

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

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

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

1)配置隔离规则

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

填写表单:

2)Jmeter测试

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

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

查看运行结果:

喜欢的话点个关注吧!

相关推荐
shan&cen18 小时前
Day04 前缀和&差分 1109. 航班预订统计 、304. 二维区域和检索 - 矩阵不可变
java·数据结构·算法
在线教学养猪18 小时前
Spring Task
java·后端·spring
_hermit:18 小时前
【从零开始java学习|小结】记录学习和编程中的问题
java·学习
小柯J桑_18 小时前
C++之特殊类设计
java·开发语言·c++
菜鸟plus+18 小时前
Java NIO
java·nio
君不见,青丝成雪18 小时前
Java中IntStream的详细用法及典型案例
java
QiZhang | UESTC18 小时前
JAVA算法练习题day11
java·开发语言·python·算法·hot100
FenceRain18 小时前
spring boot 拦截器增加语言信息
java·spring boot·后端
星月前端18 小时前
idea没法识别springboot项目的一个原因解决及办法
java·spring boot·intellij-idea
爱笑的源码基地18 小时前
智慧城管源码,java版城管综合执法监督系统微服务源码
java·源码·软件开发·智慧城管·城管执法系统·数字城管·城管综合管理系统