如何使用hystrix 搭建分布式的高可用系统

来源:互联网 发布:外网映射端口 编辑:程序博客网 时间:2024/05/17 23:10

  

    上一节中,我们讲到hystrix是解决系统高可用的核心技术。因此,本节我们将展开详细讲解如何通过hystrix来解决分布式系统的高可用性问题以及设计原则.


    我们要明白hystrix如何提高分布式系统的高可用性与稳定性,我们就要知道分布式系统会出现什么问题?在分布式系统中,每个服务都会调用很多其他的服务,这些被调用的服务叫做依赖服务,某些依赖服务在有些时候不可用,出现故障时正常现象,

   上一节中,我们讲到hystrix的主要技术包括:资源隔离,限流,熔断,降级,运维监控等,hystrix可以让我们对分布式系统中对服务间的调用进行控制,加入一些调用延迟或者依赖故障的容错机制。hystrix通过将服务进行资源隔离,进而保证某个依赖服务出现故障     的时候,这种故障在整个系统所有的依赖服务调用中进行蔓延,同时hystrix还提供故障时的failback降级机制。

    总而言之,hystrix通过这些方法帮助我们提升分布式系统的可用性和稳定性。

  Hystrix为了实现高可用性的架构,设计hystrix的时候,一般遵循以下设计原则:

    1,对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护;

    2,在复杂的分布式系统中,阻止某一个依赖服务的故障在整个系统中蔓延;

    3,提供fail-fast(快速失败)和快速恢复的支持;

    4,提供failback优雅降级的支持;

    5,支持实时的监控、报警以及运维操作;

   使用Hystrix要解决的问题:

    1,阻止依赖服务耗尽所有资源; --- 资源隔离

         比如使用bulkhead(舱壁隔离技术),swimlane(涌道技术),circuit breaker(短路技术) ,来限制任何一个依赖服务的故障的影响。

    2,提供fallback降级机制来应对故障;

    3,避免请求排队和积压,采用限流和fail fast来控制故障;

    4,通过近实时的统计、监控、报警功能,来提高故障处理和恢复速度。

    5,通过近实时的属性和配置热修改功能,来提高故障处理和服务的速度。

    6,保护依赖服务调用的所有故障情况,而不仅仅只是网络情况。

   Hystrix是如何解决这些问题的?

   1,通过HystrixCommand或者HystrixObservableCommand来封装对外部依赖的访问请求,这个访问请求一般会运行在独立的线程中

   2,为每一个依赖服务维护一个独立的线程池,或者是semaphore,当线程池已满时,直接拒绝对这个服务的调用

   3,对依赖服务的调用成功次数,失败次数,拒绝次数,超时次数,进行统计

   4,如果对一个依赖服务的调用失败次数超过一定的阈值,自动进行熔断,在一定时间内对该服务的调用直接降级,一段时间后再自动尝试恢复

   5,对属性和配置的修改提供近实时的支持。



    

    


    

阅读全文
1 0
原创粉丝点击