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

一、线程隔离的实现方式

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

  • 线程池隔离

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

如图:

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

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

两者的优缺点:

二、sentinel的线程隔离

用法说明

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

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

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

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

1)配置隔离规则

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

填写表单:

2)Jmeter测试

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

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

查看运行结果:

喜欢的话点个关注吧!

相关推荐

  1. Sentinel服务保护

    2023-12-16 21:10:02       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 21:10:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 21:10:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 21:10:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 21:10:02       20 阅读

热门阅读

  1. js-正则表达式

    2023-12-16 21:10:02       25 阅读
  2. 学习软件测试建议看些什么书?

    2023-12-16 21:10:02       31 阅读
  3. Ceph入门到精通-Ceph Pacific 版本磁盘预测模块

    2023-12-16 21:10:02       31 阅读
  4. 【LeetCode】第18题. 四数之和

    2023-12-16 21:10:02       42 阅读
  5. MySQL之修改表

    2023-12-16 21:10:02       36 阅读
  6. Lost connection to MySQL server during query

    2023-12-16 21:10:02       38 阅读
  7. Vue中this.$nextTick的执行时机

    2023-12-16 21:10:02       43 阅读
  8. Scrum

    Scrum

    2023-12-16 21:10:02      28 阅读
  9. ARFoundation系列探索 - 实现AR测距功能

    2023-12-16 21:10:02       37 阅读