1. 熔断器模式
Hystrix 实现了熔断器模式,该模式可以防止系统在调用失败时陷入崩溃状态。熔断器有三个主要状态:
-
关闭状态:
-
默认状态,所有请求都被正常发送到目标服务。
-
Hystrix 会监控成功和失败的请求,收集统计数据。
-
-
打开状态:
-
当失败率超过预设的阈值(例如 50%)时,熔断器会打开,停止所有请求。
-
在这个状态下,所有请求都会立即返回预定义的降级响应,而不进行实际的服务调用。
-
-
半打开状态:
-
经过设定的时间(休眠时间窗口)后,熔断器进入半打开状态。
-
在半打开状态下,Hystrix 会允许一小部分请求通过,以测试目标服务的健康状况。
-
如果这部分请求成功,熔断器会恢复到关闭状态;如果失败,熔断器会重新打开。
-
2. 超时控制
Hystrix 允许为每个命令设置超时。这个超时用于控制服务调用的最大等待时间。如果请求在超时内没有返回,Hystrix 会抛出异常,并执行降级逻辑。
3. 失败率监控
Hystrix 会实时监控每个命令的请求结果,并根据结果更新失败率:
-
成功请求:返回 200 的请求被视为成功。
-
失败请求:请求异常、超时、服务不可用等情况会被视为失败。
-
Hystrix 使用滑动窗口统计成功与失败的请求比例,以决定是否切换熔断器的状态。
4. 降级处理
降级逻辑是在熔断器打开状态下的默认处理方式。开发者可以为每个 Hystrix 命令定义降级方法,确保在外部服务不可用时应用依然可以返回合理的响应。
示例:
@HystrixCommand(fallbackMethod = "defaultUser")
public User getUserById(Long id) {
// 调用外部服务
}
public User defaultUser(Long id) {
return new User(); // 返回默认用户
}
5. 线程隔离
Hystrix 提供两种请求隔离方式:
-
线程池隔离:每个 Hystrix 命令使用独立的线程池,防止某个服务的故障影响到其他服务。
-
可配置线程池的大小、队列大小等。
-
-
信号量隔离:使用信号量限制并发请求的数量,适合对短时间内请求量有控制的场景。
6. 监控与报告
Hystrix 提供了监控和管理功能,可以实时查看服务的健康状况和性能指标。
-
仪表板:Hystrix Dashboard 提供了可视化的监控界面,显示熔断器的状态、请求数量、失败率等信息。
-
Hystrix Metrics Stream:通过
/hystrix.stream端点提供实时的度量数据。
小结
Hystrix 通过熔断器模式、超时控制和降级机制,大大提高了微服务架构的弹性和可靠性。它使得系统能够在面对外部服务不可用或响应慢的情况下,保持可用性和稳定性。
1277

被折叠的 条评论
为什么被折叠?



