Hystrix工作流程
2024-06-17 23:46:57 0 举报
Hystrix是一个延迟和容错库,用于处理分布式系统中的延迟和故障。其工作流程如下: 1. 构造命令:首先,开发者使用HystrixCommand构造一个命令,该命令包含对依赖服务的调用。 2. 调用命令:然后,通过调用HystrixCommand的execute()方法执行该命令。 3. 负载均衡:在调用execute()方法时,Hystrix会判断是否有可用的线程执行该命令。如果有,则直接将命令提交给线程执行;如果没有,则将命令放入队列中等待有空闲线程。 4. 超时处理:Hystrix针对每个命令都设定了一个超时时间,一旦执行时间超过该超时时间,该命令将被终止,并执行回退逻辑。 5. 回退逻辑:如果命令执行失败或超时,将执行回退逻辑。回退逻辑可以是另一个HystrixCommand,也可以是一段自定义的代码。 6. 统计和监控:Hystrix对每个命令的调用次数、成功次数、失败次数、超时次数等进行统计,并可以通过Hystrix Dashboard进行实时监控。 7. 熔断和降级:Hystrix还提供了熔断和降级功能,当某个服务的失败率超过一定阈值时,Hystrix会自动触发熔断机制,不再调用该服务,而是执行回退逻辑。 8. 恢复服务:当服务恢复稳定时,Hystrix会自动将熔断器关闭,恢复正常调用。 Hystrix通过以上工作流程,有效地保证了分布式系统的稳定性和可靠性。
作者其他创作
大纲/内容
yes
F
fallback successful?
time out?
no
8.
error
circuit-breaker open?
yesreject
C
.toObservable()
1.
Legend:
no;return resulting Observable
7.
getFallback() or resumeWithFallback()
Hystrix[Observable]Command method
Semaphore/Thread pool rejected?
construct() or run()
return path
successfulcompletion
yes;return fallback
execution fails?
3.
4.
items emitted
.observe()
yes;return cached response
no;failed or not implemented
calculate circuit health
construct a HystrixCommand
.queue()
2.
9.
...or HystrixObservableCommand
invoke path
6.
5.
observable:
report metrics
.execute()
available in cache?
yesshort-circuit
0 条评论
下一页