vlambda博客
学习文章列表

1.4,SpringCloud之Hystrix(容错延时框架)




1,实现容错的手段:

    1,如果服务消费者对服务提供者请求就会被强制等待,直到响应或超时,在高负载场景下,如果不做处理,会导致服务消费者资源耗尽,甚至导致整个系统崩溃。

    2,雪崩效应:

        1,提供者不可用导致消费者不可用,并将不可用逐渐放大的过程

        2,服务与服务之间难免存在依赖关系,远程调用时,难免会发生网络故障,最终导致级联故障,导致整个系统出现问题。

    3,如何容错:

        1,为网络请求设置超时:

            1,远程调用一般在几十毫秒就能得到响应,以来的服务不可用或者网络有问题,响应时间就会变长;

            2,一次远程调用对应这一个线程,如果响应时间太慢或者得不到释放,就会占用系统资源,资源就会最终被耗尽,最终导致服务的不可用

            总结:设置网络超时,让资源尽快释放。

        2,使用断路器模式:







        1,开关阈值:5秒内20次失败

        2,

2,使用Hystrix实现容错:

    1,Hystrix简介:

        是一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而提升系统的可用性和容错性,主要有一下几点:

        1,包裹请求:使用HystrixCommand(或HystrixObservableCommand)包裹对以来的调用逻辑,每个命令在独立线程中执行,使用的是命令模式。

        2,跳闸机制:某个服务的错误率超过一定阈值,Hystrix可以自动或者手动跳闸,停止请求服务一段时间。

        3,资源隔离:Hystrix每个依赖都维护一个小型的线程池(或者信号量)。如果该线程池已满,发往该以来的请求的被立即拒绝,而不会排队等候,从而加速失败判定。

        4,监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功,失败,超时,以及被拒绝的请求等。

        5,回退机制:当请求失败,超时,被拒绝,或当断路器打开时,执行回退逻辑。

        6,自我修复:断路器打开一段时间后,会自动进入“半开”状态。断路器打开,关闭,半开的逻辑转换。

    2,Hystrix的状态监控深入了解

    3,Hystrix线程隔离策略与传播上下文

        1,线程隔离策略有两种:

            1,线程隔离:将会在单独的线程上执行,并发送请求受线程池中的线程数量的限制。

            2,信号量隔离:在调用线程上执行,开销比较小,并发请求收到信号量个数的限制。

            3,默认是线程隔离,这种方式是除了网络超时以外的额外保护层。如果:发生找不到上下文的运行时异常,可考虑信号量隔离。

        2,两种隔离策略的应用场景:

            1,线程:适用对依赖服务的网络请求的调用和访问,超时这种问题

            2,适合访问不是对外部的依赖,对内部复杂业务逻辑的访问,不涉及网络请求,就可以适用信号量普通限流,主要是避免低效率的代码导致大量的线程被hang住。




1.4,SpringCloud之Hystrix(容错延时框架)



    4,Feign适用Hystrix:

        1,SpringCloud默认Feign整合了Hystrix,

            2,Feign添加回退

            3,通过Fallback Factory检查回退原因

            4,Feign禁用Hystrix

3,Hystrix监控:

    1,简介:

    Hystrix提供了近乎实时的监控。HystrixCommand和HystrixObservableCommand在执行时,会生成执行结果和运行指标,比如每秒执行的请求数,成功数等,这些 监控数据对分析应用系统的状态很有用。

    2,Feign项目的Hystrix监控:

4,使用Hystrix DashBoard可视化监控数据:

    1, 让监控数据图形化,可视化。

5,使用Turbine聚合监控数据:

    1,一个聚合Hystrix监控数据的工具,让集群的监控更加方便。

    2,使用Turbine监控多个微服务

    3,使用消息中间件收集数据

        1,一些场景,微服务与Trubine网络不通,可借助消息中间件实现数据收集。各个微服务将Hystrix Command的监控数据发送至消息中间件,Turbine消费中间件的数据。




1.4,SpringCloud之Hystrix(容错延时框架)

扫描二维码