Hystrix的概念

 


       Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力.
       Hystrix的设计原则包括:资源隔离、熔断器、命令模式。

资源隔离

       货船为了进行防止漏水和火灾的扩散,会将货仓分隔为多个,这种资源隔离减少风险的方式被称为:Bulkheads(舱壁隔离模式)。
       Hystrix将同样的模式运用到了服务调用者上,在一个高度服务化的系统中,一个业务逻辑通常会依赖多个服务,比如:商品详情展示服务会依赖商品服务,价格服务,商品评论服务。调用三个依赖服务会共享商品详情服务的线程池。如果其中的商品评论服务不可用,就会出现线程池里所有线程都因等待响应而被阻塞,从而造成服务雪崩。Hystrix通过将每个依赖服务分配独立的线程池进行资源隔离,从而避免服务雪崩。

熔断器模式

       熔断器模式定义了熔断器开关相互转换的逻辑。
       服务的健康状况 = 请求失败数 / 请求总数。熔断器开关由关闭到打开的状态转换是通过当前服务健康状况和设定阈值比较决定的。
       当熔断器开关关闭时,请求被允许通过熔断器。 如果当前健康状况高于设定阈值,开关继续保持关闭。如果当前健康状况低于设定阈值,开关则切换为打开状态。当熔断器开关打开时,请求被禁止通过。当熔断器开关处于打开状态,经过一段时间后,熔断器会自动进入半开状态,这时熔断器只允许一个请求通过。当该请求调用成功时,熔断器恢复到关闭状态。若该请求失败,熔断器继续保持打开状态,接下来的请求被禁止通过。
       熔断器的开关能保证服务调用者在调用异常服务时,快速返回结果,避免大量的同步等待,并且熔断器能在一段时间后继续侦测请求执行结果,提供恢复服务调用的可能。

命令模式

       Hystrix使用命令模式(继承HystrixCommand类)来包裹具体的服务调用逻辑(run方法),并在命令模式中添加了服务调用失败后的降级逻辑(getFallback)。
       同时在Command的构造方法中可以定义当前服务线程池和熔断器的相关参数。因此在使用了Command模式构建了服务对象之后,服务便拥有了熔断器和线程池的功能。
posted on 2019-05-19 20:46  shoshana~ 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/shoshana-kong/p/10890714.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hystrix是一个开源的故障隔离和熔断库,它是由Netflix开发的,用于处理分布式系统中的服务请求。Hystrix的主要目标是提供一个安全的、有弹性的框架,帮助系统在面对服务不可用或过载时仍能保持运行,并提供有用的监控数据。以下是Hystrix设置的一些关键概念和配置: 1. **命令(Command)**:Hystrix将一个服务请求封装为一个“命令”,每个命令都有自己的线程池,当命令执行失败时,会触发回退策略。 2. **线程池(ThreadPool)**:为每个命令创建一个独立的线程池,用于异步执行命令。线程池的大小、超时等配置影响了服务的响应时间和容错能力。 3. **熔断器(Circuit Breaker)**:这是一个开关机制,当某个服务调用频繁失败或超时,熔断器会打开,阻止进一步的请求,直到状态恢复。 4. **超时(Timeout)**:可以设置每个命令的最大执行时间,防止无响应的服务阻塞整个请求链路。 5. **信号量(Semaphore)**:限制同一时间可以并发执行的命令数量,防止单点服务过载。 6. **缓存(Cache)**:Hystrix提供了基于Redis等缓存的请求结果存储,提高响应速度并降低后端压力。 7. **健康检查(Health Check)**:定期发送简单的请求来验证服务的健康状况,用于监控和显示服务的状态。 8. **仪表板(Dashboard)**:Hystrix提供了可视化工具,可以帮助监控和诊断命令的执行情况、失败率等。 相关问题-- 1. 如何在Hystrix中启用熔断器? 2. 如何配置Hystrix线程池的大小? 3. 如何使用Hystrix的健康检查功能? 4. Hystrix Dashboard如何接入到我的应用中? 5. Hystrix如何实现命令之间的依赖控制?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值