面试题答案
一键面试保障高可用性的方法
- 故障隔离:Istio通过断路器模式,当依赖服务出现故障时,快速熔断,避免大量无效请求涌入故障服务,防止故障蔓延到整个依赖链条。例如,设置熔断阈值,当错误率超过一定比例(如50%),在一定时间(如10秒)内切断请求。
- 负载均衡:在服务间通信时,Istio的内置负载均衡器将请求均匀分配到多个实例上,降低单个实例的压力,提高整体可用性。如基于权重的负载均衡,根据实例的性能分配不同权重来分发流量。
处理级联故障
- 超时设置:为每个服务调用设置合理的超时时间。若依赖服务在规定时间内未响应,快速返回错误,避免等待过久占用资源,防止故障级联。比如设置服务A调用服务B的超时时间为2秒。
- 重试机制:对于一些临时性故障,Istio可配置重试策略。当请求失败时,按一定规则(如指数退避)进行重试。例如首次失败后,1秒后重试,下次2秒后重试,以此类推,最大重试3次。
处理依赖服务的动态扩缩容
- 自动感知:Istio的服务发现机制能实时感知依赖服务的实例数量变化。当依赖服务动态扩缩容时,Istio能自动更新服务注册表,确保流量正确路由。
- 流量平滑迁移:在扩缩容过程中,通过Istio的流量管理规则,如Canary发布,逐步将流量迁移到新实例或从旧实例移除,避免流量瞬间变化对系统造成冲击。例如,先将10%流量导入新扩容的实例,观察一段时间后再逐步增加。