MST

星途 面试题库

面试题:微服务架构分布式事务里熔断与降级策略的权衡及动态调整

在复杂的微服务架构分布式事务环境下,熔断和降级策略各有优劣,阐述如何在两者之间进行权衡。同时,如何根据实时的业务流量、系统资源使用情况等动态因素,对熔断和降级策略进行调整,以保障系统的高可用性和数据一致性,列举可能用到的技术手段和监控指标。
37.1万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

熔断与降级策略权衡

  1. 业务场景分析
    • 核心业务:对于核心业务,如支付、订单确认等,熔断优先。因为这些业务一旦出错影响重大,熔断可以快速切断故障源,防止级联故障。例如在电商支付场景中,若支付服务出现问题,熔断可避免因持续调用支付服务失败导致整个订单流程阻塞。
    • 非核心业务:如推荐系统、广告展示等,降级优先。这些业务出现故障对整体业务影响相对较小,通过降级可释放资源保证核心业务运行。比如新闻 APP 的个性化推荐服务异常时,可降级为通用推荐,维持 APP 基本功能。
  2. 故障类型判断
    • 瞬时故障:若故障是瞬时的,如网络抖动等导致的短暂服务不可用,采用降级策略较好。通过临时降低服务质量,等待故障恢复,避免因不必要的熔断导致服务不可用时间延长。
    • 持续性故障:当故障为持续性的,如服务代码存在严重 bug,应触发熔断。防止大量无效请求浪费资源,同时促使开发团队尽快修复问题。
  3. 用户体验考量
    • 可接受的服务降级:如果用户对某些功能服务质量降低有一定容忍度,可采用降级策略。如视频平台在高峰时段将视频清晰度从高清降级为标清,用户仍能正常观看视频,同时节省服务器资源。
    • 不可接受的服务中断:对于用户不能接受中断的服务,熔断时需谨慎。应结合其他措施,如备用服务切换,尽量减少服务中断时间。例如在线游戏的实时对战服务,若直接熔断会严重影响用户体验,需有备用方案。

根据动态因素调整策略

  1. 基于业务流量调整
    • 流量激增:当业务流量突然大幅增加时,若系统资源紧张,可适当放宽熔断阈值,同时加大降级范围。例如,电商大促期间,对一些边缘服务进行更大程度的降级,如减少商品详情页的非关键图片展示,对核心服务的熔断阈值从 50%失败率提高到 70%,避免因正常流量波动触发熔断。
    • 流量低谷:流量低谷时,收紧熔断阈值,降低降级程度。可以更敏感地检测服务故障,及时发现潜在问题,如将熔断阈值从 70%降低到 50%,恢复一些在高峰时降级的服务功能,提升服务质量。
  2. 依据系统资源使用情况调整
    • CPU 使用率高:若 CPU 使用率持续超过阈值(如 80%),对计算密集型服务加大降级力度,如减少复杂的数据分析服务功能,或提高熔断阈值,优先保证系统基本运行。
    • 内存不足:当内存使用率接近上限,可对占用大量内存的服务进行熔断或更激进的降级,如关闭缓存服务的部分缓存功能,释放内存资源。

技术手段

  1. 服务治理框架:如 Spring Cloud Alibaba Sentinel、Hystrix 等。它们提供了熔断和降级的功能实现,并且可以通过配置动态调整策略。例如 Sentinel 可通过控制台实时修改熔断规则和降级规则,Hystrix 可以通过动态属性配置实现策略调整。
  2. 配置中心:如 Apollo、Nacos 等。将熔断和降级策略配置集中管理,通过配置的动态更新,实现策略的实时调整。例如在 Apollo 中修改熔断阈值配置,相关服务可以实时获取新配置并应用。
  3. 自动化脚本:编写脚本定时获取系统资源指标和业务流量数据,根据预设规则调用服务治理框架的 API 进行策略调整。如使用 Python 结合相关 SDK,定时查询 Prometheus 中的监控数据,根据流量和资源使用情况调整 Sentinel 的熔断和降级规则。

监控指标

  1. 业务流量指标
    • 请求量:每秒、每分钟的请求数量,反映业务流量大小。通过统计不同服务的请求量,了解业务繁忙程度。如电商商品详情页服务的每秒请求量。
    • 并发量:同时处理的请求数量,衡量系统在某一时刻的负载压力。如在线教育平台直播服务的并发观看人数。
  2. 系统资源指标
    • CPU 使用率:系统 CPU 的占用比例,过高表明系统计算资源紧张。可通过操作系统自带工具或监控系统(如 Prometheus + Grafana)获取。
    • 内存使用率:已使用内存占总内存的比例,反映内存资源使用情况。同样可通过系统工具或监控系统获取。
    • 磁盘 I/O 使用率:磁盘读写操作的繁忙程度,过高可能影响服务性能。例如数据库服务对磁盘 I/O 要求较高,需关注此指标。
    • 网络带宽使用率:网络带宽的占用比例,网络带宽不足可能导致服务响应缓慢。对于依赖网络传输大量数据的服务,如文件存储服务,该指标很重要。
  3. 服务健康指标
    • 请求成功率:成功请求数与总请求数的比例,直接反映服务的健康状况。若成功率持续下降,可能需要调整熔断或降级策略。
    • 平均响应时间:处理请求的平均耗时,过长的响应时间可能暗示服务性能问题,可作为熔断或降级触发的参考指标。
    • 错误率:错误请求数与总请求数的比例,与请求成功率相对,也是衡量服务健康的重要指标。