SpringCloud 面试题, 什么是断路器?为什么需要断路器?
SpringCloud 面试题, 什么是断路器?为什么需要断路器?
QA
Step 1
Q:: 什么是断路器?
A:: 断路器(Circuit Breaker)是一种用于监控服务之间调用情况的设计模式,当检测到服务调用失败的次数达到一定阈值时,断路器会跳闸,从而避免对故障服务的持续调用。断路器通常有三种状态:关闭(Closed)、打开(Open)和半开(Half-
Open)。关闭状态表示服务正常;打开状态表示服务出现了问题,不再调用该服务;半开状态表示服务可能恢复,需要进行部分调用测试,如果成功,断路器会恢复到关闭状态。
Step 2
Q:: 为什么需要断路器?
A:: 断路器用于防止服务之间的级联故障。当一个服务出现问题时,如果没有断路器保护,可能会导致更多的服务失败,形成雪崩效应。通过断路器的保护,系统可以自动停止对故障服务的调用,避免问题扩散,同时为故障服务提供恢复的机会。这种设计对于提高系统的鲁棒性和稳定性非常重要。
Step 3
Q:: 断路器的三种状态分别是什么?
A:: 断路器有三种状态:关闭(Closed),表示服务正常,调用可以进行;打开(Open),表示服务出现故障,不再进行调用;半开(Half-
Open),表示服务可能恢复,需要对服务进行部分调用测试。如果测试成功,断路器会回到关闭状态,否则继续保持打开状态。
Step 4
Q:: 如何实现断路器模式?
A:: 断路器模式通常通过使用Spring Cloud Netflix Hystrix或Resilience4j等库来实现。以Hystrix为例,它提供了@
HystrixCommand注解,开发者可以在方法上使用这个注解来定义断路器的逻辑。当服务调用失败次数达到阈值时,Hystrix会自动切换到断路器打开状态,并调用预定义的fallback方法。
Step 5
Q:: 断路器中的“熔断”与“降级”的区别是什么?
A:: “熔断”是指当服务调用失败次数达到一定阈值后,断路器切换到打开状态,停止对该服务的调用。而“降级”是指在服务不可用时,提供一个替代的处理方案或返回默认数据。通常在熔断后会进行服务降级,以保持系统的基本功能。