一、基本概念
在Spring Cloud微服务架构中,断路器(Hystrix)是一种用于处理分布式系统中服务间调用故障和延迟的机制。它通过隔离、熔断和降级等操作来防止单个服务的故障对整个系统造成灾难性的影响,避免出现雪崩效应。
二、工作原理
(一)服务调用隔离
- 线程池隔离
- Hystrix为每个依赖的服务调用创建一个独立的线程池。例如,服务A可能会调用服务B、C和D,Hystrix会为这三个服务调用分别创建线程池。当服务A调用服务B时,请求会在为服务B创建的线程池中执行。
- 这种隔离方式的好处是,当某个服务(如服务B)出现故障,其对应的线程池被耗尽或者阻塞时,不会影响服务A对其他服务(如服务C和D)的调用。因为每个服务调用都有自己独立的资源,避免了故障的传播。
- 信号量隔离(可选)
- 除了线程池隔离,Hystrix还支持信号量隔离。信号量是一种轻量级的并发控制机制。与线程池隔离不同,信号量隔离不会创建新的线程,而是在同一线程内对并发请求进行限制。
- 当使用信号量隔离时,Hystrix会对每个服务调用设置一个信号量的数量。例如,设置服务B的信号量为10,这意味着最多同时有10个对服务B的并发请求可以被处理。如果超过这个数量,后续的请求会被拒绝,从而实现了服务调用的隔离。
(二)熔断机制
- 熔断器状态
- Hystrix熔断器有三种状态:关闭(Closed)、打开(Open)和半开(Half - Open)。
- 关闭状态:在正常情况下,熔断器处于关闭状态。此时,服务调用正常进行,Hystrix会统计服务调用的成功率、失败率等指标。例如,当服务A