客户端弹性模式:Spring Cloud与Netflix Hystrix的应用
1. 客户端弹性模式概述
客户端弹性模式是服务消费者与服务之间的保护缓冲。主要包含以下四种模式:
- 客户端负载均衡 :客户端从服务发现代理(如Netflix Eureka)查找服务的所有实例,并缓存这些实例的物理位置。当服务消费者需要调用服务实例时,客户端负载均衡器会从维护的服务位置池中返回一个位置。如果检测到某个服务实例出现问题,会将其从可用服务位置池中移除,避免后续调用。
- 断路器 :借鉴了电气断路器的概念。在软件中,当调用远程服务时,断路器会监控调用情况。如果调用时间过长,断路器会介入并终止调用。若大量调用失败,断路器会跳闸,快速失败并阻止对失败远程资源的后续调用。
- 回退处理 :当远程服务调用失败时,服务消费者会执行替代代码路径,尝试通过其他方式完成操作。例如,从另一个数据源获取数据或排队等待后续处理。
- 舱壁 :源于造船概念,将船分隔成独立的、防水的舱室。在服务中,将对远程资源的调用拆分为独立的线程池,降低因一个缓慢的远程资源调用导致整个应用崩溃的风险。
以下是这四种模式的简单对比表格:
| 模式 | 作用 |
| ---- | ---- |
| 客户端负载均衡 | 均衡服务调用,移除故障实例 |
| 断路器 | 监控调用,快速失败,防止资源耗尽 |
| 回退处理 | 提供替代方案,避免异常显示 |
| 舱壁 | 隔离调用,防止一个故障影响全局 |