java高级培训:微服务架构中Hystrix的工作原理和特征

    熔断器的工作原理非常简单,就像电子过载保护器一样。它可以实现快速失败。如果它在一段时间内检测到许多类似的错误,将迫使多个后续调用迅速失败,并且不再访问远程服务器,从而阻止应用程...

    熔断器的工作原理非常简单,就像电子过载保护器一样。它可以实现快速失败。如果它在一段时间内检测到许多类似的错误,将迫使多个后续调用迅速失败,并且不再访问远程服务器,从而阻止应用程序不断尝试执行可能失败的操作,从而使应用程序可以继续无需等待解决错误即可执行,或浪费CPU时间等待很长的超时时间。保险丝还可以使应用程序诊断错误是否已得到纠正,如果已被纠正,则应用程序将尝试再次调用该操作。

    熔断器模式就像是那些容易导致错误的操作的一种代理。这种代理能够记录最近调用发生错误的次数,然后决定使用允许操作继续,或者立即返回错误。熔断器开关相互转换的逻辑如下图:

attachments-2020-10-dsLNSOrk5f806592cc6f5.jpg

    特性:

    1.断路器机制

    断路器是众所周知的。当Hystrix命令对后端服务的失败请求数量超过某个百分比(默认为50%)时,断路器将切换到打开状态(打开)。此时,所有请求将直接失败,并且不会发送到后端服务。断路器保持断开状态一段时间(默认5秒)后,它将自动切换到半断开状态(HALF-OPEN)。此时,将判断下一个请求的返回。如果请求成功,则断路器将切换回闭合状态(CLOSED),否则将再次切换到断开状态(OPEN)。Hystrix的断路器就像我们家庭电路中的保险丝一样。一旦后端服务不可用,断路器将直接切断请求链,以避免发送大量无效请求,从而影响系统吞吐量,并且断路器具有自检和恢复的能力。

    2.Fallback

    Fallback相当于是降级操作.对于查询操作,我们可以实现一个fallback方法,当请求后端服务出现异常的时候,可以使用fallback方法返回的值.fallback方法的返回值一般是设置的默认值或者来自缓存.

    3.资源隔离

    在Hystrix中,资源隔离主要是通过线程池实现的。通常,当我们使用它时,我们将根据调用的远程服务划分多个线程池。例如,将产品服务的命令调用到A线程池中,然后调用帐户服务的命令。输入B线程池。这样的主要优点是操作环境是隔离的。这样,即使调用服务的代码存在错误或线程池由于其他原因而耗尽,也不会影响系统的其他服务。但是代价是维护多个线程池将给系统带来额外的性能开销。如果对性能有严格的要求,并且确定调用该服务的客户端代码不会引起问题,则可以使用Hystrix的信号模式(Semaphores)来隔离资源。

推荐阅读:《java高级培训》架构师需要掌握的知识结构有哪些

如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1037935907,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

  • 发表于 2020-10-09 21:30
  • 阅读 ( 279 )
  • 分类:技术干货

0 条评论

请先 登录 后评论
JAVA Q&A
JAVA Q&A

173 篇文章

作家榜 »

  1. JAVA Q&A 173 文章
  2. 江南 1 文章
  3. 伯乐 0 文章
  4. 孤存 0 文章
  5. q21164340 0 文章
  6. 赫敏12 0 文章
  7. 子牙 0 文章
  8. 赫敏 0 文章