SpringCloud 面试题, 什么是服务熔断?
SpringCloud 面试题, 什么是服务熔断?
QA
Step 1
Q:: 什么是服务熔断?
A:: 服务熔断是一种保护系统的方法,用来防止故障蔓延。当某个服务发生故障时,为了避免其影响到其他服务或系统的整体稳定性,系统可以暂时中断对该服务的调用。这就像电路中的熔断器一样,当电流过大时,熔断器会自动断开电路,保护电器不受损坏。在SpringCloud中,熔断器模式通常是通过Hystrix来实现的,它能够监控服务调用的成功率,当失败率超过一定阈值时,熔断器会触发,短暂地停止对该服务的调用,并返回一个默认的响应或执行备用逻辑。
Step 2
Q:: 服务熔断和服务降级的区别是什么?
A:: 服务熔断是指在检测到服务可能无法正常工作时,主动中断调用,以防止系统整体崩溃。而服务降级则是当某个服务不可用或响应时间过长时,系统返回一个预设的默认值或执行备用逻辑,以保证系统的稳定性和用户体验。服务熔断通常用于保护系统,而服务降级则更关注于在服务不可用时提供退而求其次的解决方案。
Step 3
Q:: SpringCloud中如何实现服务熔断?
A:: 在SpringCloud中,服务熔断通常通过Netflix的Hystrix库来实现。使用Hystrix时,可以通过配置熔断器的各种参数,如熔断触发条件、熔断窗口期、恢复条件等。实现方式通常包括注解@HystrixCommand
,在方法上添加该注解,并指定fallbackMethod,当熔断触发时,调用该备用方法。此外,SpringCloud已经将Hystrix与其他组件整合,能够在微服务架构中方便地使用熔断功能。
Step 4
Q:: 熔断器有哪几种状态?分别代表什么?
A:: 熔断器通常有三种状态:
1.
Closed(关闭):服务正常工作,所有请求都会被传递给服务处理。
2.
Open(打开):当检测到服务调用的失败率超过设定的阈值时,熔断器会进入打开状态,此时所有请求都会被快速失败(不再调用服务)。
3. **Half-
Open(半开)**:经过一段时间后,熔断器会进入半开状态,允许部分请求通过。如果这些请求成功,则熔断器会关闭;如果仍然失败,则继续保持打开状态。
Step 5
Q:: 如何配置Hystrix的熔断器参数?
A:: Hystrix的熔断器有许多可配置参数,如:
-
circuitBreaker.requestVolumeThreshold
:在统计窗口内,最小请求数量。只有在达到这个请求数量时,才会进行熔断计算。
-
circuitBreaker.errorThresholdPercentage
:错误率的百分比,超过这个百分比,熔断器会打开。
-
circuitBreaker.sleepWindowInMilliseconds
:熔断器打开后的休眠时间,之后会进入半开状态。
-
metrics.rollingStats.timeInMilliseconds
:统计窗口的时间长度。