目录
一、隔离方法
-
线程池隔离
-
信号量隔离
二、线程隔离
原理:使用一个线程池来存储当前请求,线程池中线程对当前请求进行处理,可以设置任务的超时时间,对于
堆积的请求可以入线程池队列。
优点:采用线程池队列,因此可以解决流量洪峰的问题,起到了削锋的功能。并且可以异步调用,可以设置线
程池的大小,控制请求的并发量。
缺点:在实际开发过程中,大部分是为每一个依赖创建一个线程池,由于线程之间切换、调度和排队等,消耗
了一定的系统资源。
三、信号量隔离
原理:利用可原子操作的类型(如AtomicInteger等),记录请求的个数,每次线程过来数量加1,线程结束之
后,数量在减1。
优点:由于利用原子类型计数器原理,控制请求的线程数量,没有线程之间的切换开销,提供了系统资源的利用率。
缺点:由于计数器每次都需要监控线程结束状态,所以无法实现异步,而且采用计数器,当请求量达到峰顶,后
续请求会直接丢弃,不会像线程隔离进入线程队列等待。