Ⅰ 对于微服务的容错性设计,常见的有哪几种策略
对于微服务的容错性设伏旦计,常见的有以下四种策略:
1、隔离:
线程池隔离。线程池隔离就是通过Java的线程池进行隔离,B服务调用C服务给予固定的腔首线程数量比如12个线程,如果此时C服务宕机了就算大量的请求过来,调用C服务的接口只会占用12个线程不会占用其他工作线程资源,因此B服务就不会出现级联故障。
信号量隔离。隔离信号量隔离是使用Semaphore来实现的,当拿不到信号量的时候直接拒接因此不会出现超时占用其他工作缺圆扰线程的情况。
2、熔断:
当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。
3、降级:
降级是指当自身服务压力增大时,系统将某些不重要的业务或接口的功能降低,可以只提供部分功能,也可以完全停止所有不重要的功能。
4、限流:
限流,就是限制最大流量。系统能提供的最大并发有限,同时来的请求又太多,就需要限流。
漏桶算法。漏桶算法的思路,一个固定容量的漏桶,按照常量固定速率流出水滴。如果桶是空的,则不需流出水滴。可以以任意速率流入水滴到漏桶。如果流入水滴超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的。