默认情况下只有一个线程池维护所有的服务接口,如果大量的请求访问同一个接口,达到tomcat线程池默认极限,可能会导致其他服务无法访问。
服务器在高并发下会产生雪崩效应,为了解决此可以,主要可以从三方面解决
a、缓存:提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的核心。
b、服务隔离、熔断、降级等,当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;
隔离:让各服务使用独立的线程池,互不影响。 熔断:当服务达到最大的承受极限直接拒绝访问,使用服务降级。
降级:用户一直等待时,给客户端一个友好的错误提示。
c、限流:不能使用缓存或降级时的解决方案,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页)。Hystrix是一个微服务关于服务保护的框架,是Netflix开源的一款针对分布式系统的延迟和容错解决框架,目的是用来隔离分布式服务故障。
限流和服务保护都需要和服务降级共同使用。
白话文理解:
服务保护:当服务产生堆积的时候,对服务实现保护功能 服务隔离:保证每个服务互不影响,使用信号量或线程池方式
服务降级:当服务不可用的时候,不会被等待,直接给客户端一个友好提示
服务熔断:当服务器达到最大的承受能力后,直接决绝访问服务,采用服务降级返回友好提示。