分布式系统限流

hystrix可以参考下面的博文
https://blog.csdn.net/loushuiyifan/article/details/82702522

支付宝内部用的是guardian
https://help.aliyun.com/document_detail/149848.html

资源隔离的思想参考上述的舱壁隔离模式,在hystrix中提供了两种资源隔离策略:线程池隔离、信号量隔离。
在这里插入图片描述

  • 线程池隔离:线程池隔离会为每一个依赖创建一个线程池来处理来自该依赖的请求,不同的依赖线程池相互隔离,就算依赖A出故障,导致线程池资源被耗尽,也不会影响其他依赖的线程池资源。

    • 优点:支持排队和超时,支持异步调用。
      缺点:线程的创建一个调度会造成一定的性能开销。
      适用场景:适合耗时较长的接口场景,比如接口处理逻辑复杂,且与第三方中间件有交互,因为线程池模式的请求线程与实际转发线程不是同一个,所以可以保证容器有足够的线程来处理新的请求。
    • 信号量隔离模式: 初始化信号量currentCount=0,每进来一个请求需要先将currentCount自增,再判断currentCount的值是否小于系统最大信号量,小于则继续执行,大于则直接返回,拒绝请求。

其实,支付宝的guardian就是参考了第二种模式。

猜你喜欢

转载自blog.csdn.net/define_us/article/details/111824935