MST

星途 面试题库

面试题:复杂微服务架构里服务编排对跨服务依赖的高可用保障策略

当多个微服务之间存在复杂的依赖关系时,使用服务编排技术(如Istio)如何保障整个依赖链条的高可用性?说明如何处理级联故障、依赖服务的动态扩缩容等问题。
44.7万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

保障高可用性的方法

  1. 故障隔离:Istio通过断路器模式,当依赖服务出现故障时,快速熔断,避免大量无效请求涌入故障服务,防止故障蔓延到整个依赖链条。例如,设置熔断阈值,当错误率超过一定比例(如50%),在一定时间(如10秒)内切断请求。
  2. 负载均衡:在服务间通信时,Istio的内置负载均衡器将请求均匀分配到多个实例上,降低单个实例的压力,提高整体可用性。如基于权重的负载均衡,根据实例的性能分配不同权重来分发流量。

处理级联故障

  1. 超时设置:为每个服务调用设置合理的超时时间。若依赖服务在规定时间内未响应,快速返回错误,避免等待过久占用资源,防止故障级联。比如设置服务A调用服务B的超时时间为2秒。
  2. 重试机制:对于一些临时性故障,Istio可配置重试策略。当请求失败时,按一定规则(如指数退避)进行重试。例如首次失败后,1秒后重试,下次2秒后重试,以此类推,最大重试3次。

处理依赖服务的动态扩缩容

  1. 自动感知:Istio的服务发现机制能实时感知依赖服务的实例数量变化。当依赖服务动态扩缩容时,Istio能自动更新服务注册表,确保流量正确路由。
  2. 流量平滑迁移:在扩缩容过程中,通过Istio的流量管理规则,如Canary发布,逐步将流量迁移到新实例或从旧实例移除,避免流量瞬间变化对系统造成冲击。例如,先将10%流量导入新扩容的实例,观察一段时间后再逐步增加。