SpringCloud面试题, 什么是断路器?为什么需要断路器?
SpringCloud面试题, 什么是断路器?为什么需要断路器?
QA
Step 1
Q:: 什么是断路器?为什么需要断路器?
A:: 断路器(Circuit Breaker)是一种微服务架构中的保护机制,当某个服务不可用或响应时间过长时,断路器可以阻止持续的请求发送到该服务,避免资源浪费和系统崩溃。需要断路器的原因是,在微服务架构中,服务之间是相互依赖的,一个服务故障可能会导致级联故障,从而影响整个系统的稳定性。断路器可以通过快速失败(Fast Failure)机制,使系统在面对服务故障时能够及时响应,保持系统的整体可用性。
Step 2
Q:: 断路器的工作原理是什么?
A:: 断路器主要有三个状态:关闭(Closed)、打开(Open)和半开(Half-
Open)。
1.
关闭状态:正常状态,所有请求都通过。
2.
打开状态:如果在一定时间内发生了大量的请求失败或超时,断路器就会进入打开状态,此时所有请求都会直接失败,返回预设的降级响应。
3.
半开状态:在打开状态之后,经过一段时间,断路器会自动尝试恢复,允许部分请求通过。如果这些请求成功,断路器会回到关闭状态;如果失败,断路器会重新进入打开状态。
Step 3
Q:: 如何在Spring Cloud中实现断路器?
A:: 在Spring Cloud中,断路器可以通过Hystrix、Resilience4
j等库来实现。以Hystrix为例,可以通过在方法上添加@HystrixCommand
注解,来定义断路器的行为。使用Resilience4
j时,可以通过@CircuitBreaker
注解进行配置,并且还可以结合其他功能如重试、限流等。
Step 4
Q:: 断路器与重试机制的区别是什么?
A:: 断路器和重试机制虽然都是应对服务故障的手段,但二者有所不同。重试机制是在请求失败后,自动重新尝试发起请求,直到成功或达到重试次数上限。而断路器则是在检测到大量失败后,直接阻止请求发送,快速返回失败结果,从而保护系统不被拖垮。
Step 5
Q:: 断路器的配置有哪些关键参数?
A:: 断路器的配置参数通常包括:
1.
失败阈值(failureThreshold):触发断路器的失败次数或比例。
2.
时间窗口(windowSize):用来统计失败次数或比例的时间窗口。
3.
熔断时间(sleepWindow):断路器进入打开状态后的等待时间,等待时间结束后断路器会进入半开状态。
4.
最小请求数(minimumNumberOfCalls):在时间窗口内最少请求数量,达到这个数量后才计算失败比例。