MST

星途 面试题库

面试题:微服务架构里Spring Cloud服务降级与熔断机制的关系及协同设计

在Spring Cloud构建的微服务架构中,服务降级和熔断机制紧密相关。请深入分析两者之间的内在联系,并且阐述如何进行协同设计,以保障微服务系统在高并发、故障等复杂情况下的稳定性和可靠性,可结合实际案例说明。
34.3万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

服务降级和熔断机制的内在联系

  1. 目的一致:两者都是为了保障微服务系统在高并发、故障等复杂情况下的稳定性和可靠性。服务降级是在系统资源紧张或下游服务出现问题时,主动放弃一些非核心功能或降低服务质量,以保证核心功能的可用性;熔断机制则是当某个服务调用出现频繁失败时,暂时切断对该服务的调用,避免大量无效请求堆积,防止故障扩散。
  2. 相互配合:熔断机制可以看作是服务降级的一种触发条件。当熔断开启时,通常会触发服务降级策略,执行备用逻辑,避免继续调用不可用的服务。而服务降级的执行也有助于减少对故障服务的请求,为熔断机制恢复正常状态创造条件。

协同设计

  1. 熔断策略设计
    • 熔断阈值设定:要根据服务的实际情况合理设定熔断的触发阈值,如失败率达到一定百分比(如50%)或者连续失败次数达到一定数量(如10次)就触发熔断。例如,在一个电商微服务系统中,商品详情服务调用库存服务获取库存信息,如果库存服务失败率超过60%,就触发熔断。
    • 熔断时长:确定熔断开启的时长,一般在这个时间段内不再调用故障服务。时长过短可能导致服务还未恢复就再次调用失败,过长则可能影响业务功能正常使用。如设置熔断时长为5分钟,5分钟后尝试半熔断状态,逐步恢复对服务的调用。
  2. 服务降级策略设计
    • 确定降级服务范围:明确哪些服务在什么情况下需要进行降级。比如在电商系统促销活动高并发时,一些非核心的个性化推荐服务可以进行降级,优先保证商品展示、下单等核心服务。
    • 备用逻辑设计:为每个可能需要降级的服务准备备用逻辑。如库存服务熔断时,商品详情服务可以返回一个提示信息“库存信息获取可能延迟,请稍后查看”,而不是等待库存服务响应超时。
  3. 监控与动态调整
    • 实时监控:通过监控系统实时收集服务调用的成功率、失败率、响应时间等指标。如使用Spring Boot Actuator结合Prometheus和Grafana实现对微服务的监控,直观展示服务运行状态。
    • 动态调整:根据监控数据动态调整熔断阈值和降级策略。如果发现某个服务在特定时间段内失败率突然升高但并非永久性故障,可以适当放宽熔断阈值,避免过度熔断影响业务。

实际案例

以一个在线旅游预订系统为例,该系统包含酒店预订、机票预订、景点门票预订等微服务。在旅游旺季,系统面临高并发请求。

  1. 熔断机制:假设机票预订服务依赖外部航空公司的接口,由于航空公司系统压力过大,机票预订服务调用外部接口失败率持续升高。当失败率达到70%时,熔断机制开启,在接下来的10分钟内不再调用外部航空公司接口。
  2. 服务降级:熔断开启后,机票预订服务执行降级策略,向用户返回提示信息“由于当前查询量过大,机票实时价格和余票信息可能不准确,您可稍后重试”,同时记录用户预订信息,待熔断结束后再尝试调用外部接口完成预订,保证了系统在高并发和外部接口故障情况下仍能为用户提供基本服务,保障了系统的稳定性和可靠性。