负载均衡和熔断器

负载均衡和熔断器

        负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,负载不均衡是影响P2P系统应用服务器性能的关键因素。Eureka内部提供负载比较简单,只能根据流量情况完成请求发送。Erueka负载均衡能力在大型分布式系统是存在缺陷的,因此需要在系统中加入更强大的负载均衡能力,本系统采用Ribbon为客户端提供强大的负载均衡能力,Ribbon内部存在的IPC库较为精巧,同时不会对客户端性能造成影响,还可以自定义负载均衡算法提高系统出现故障时容错能力。Ribbon提供两种负载均衡能力:一种按照网络请求流量进行分发,从Erueka Server列表中获取注册微服务信息表分发请求;另一种用户可以自定义负载均衡算法来连接需要的云主机,包括简单轮询算法、随机算法、加权相应时间算法、区域感知轮询算法等提高系统的负载均衡能力,为系统提供运行时的保障。

        通过负载均衡为Web平台提高了业务处理能力和实时掌握系统健康状态的能力,在分布式系统中负载均衡的能力的作用也是有限的,当大量请求阻塞在某一个微服务时,会影响系统微服务之间的通信,此时若微服务划分比较细致,存在更多的请求关系时,仅仅一个堵塞就会对系统性能造成不可挽回的影响。在高并发环境需要一种隔离措施,来保证整个系统不会在某一个问题拖垮。熔断器就是一种隔离措施的实现,可以通过控制线程池数量拒绝访问或设置调用超时时间返回原因,来提高分布式系统的稳定性。Hystrix具备分布式系统中处理容错问题的能力,因此在本系统中加入Hystrix熔断器,Hystrix具备熔断机制、Fallback降级和线程池等方法实现隔离措施,Hystrix核心功能包括:

(1)熔断机制

        Hystrix熔断机制是为系统调用设置一定的失败数量,分为三种状态:Open、Closed、Half-Open。当请求超过设置的失败数量时,熔断机制会将状态切换到Open,这时所有请求都会失败,不会再发送请求到服务端。当Open状态持续一定时间,会自动切换到Half-Open状态,此时当一个请求继续失败,熔断器又会切回Open状态,若此时请求成功,熔断器会切回Closed状态。Hystrix的熔断机制就像家庭电路中的保险丝,发现微服务不可用,熔断器会自动切断请求,避免发送大量无效请求影响系统吞吐量,熔断机制提供强大的检测以及恢复的能力。

(2)Fallback降级

   Fallback相当于是降级操作,是返回一个Fallback方法,客户端请求微服务时,为请求设置一个最大持续时间,当请求时间超过最大持续时间,则返回Fallback方法中值。Fallback方法的返回值一般是设置的默认值或者来自缓存,以降级方式提高系统的容错能力。

(3)资源隔离机制

        Hystrix资源隔离通过线程池实现。当一个微服务被请求或调用时,为此微服务划分一定数量的线程池。例如将任务日程管理微服务的请求放入一个线程池,人力资源管理微服务的请求放入另一个线程池,线程池和请求就会被隔离。就算某一个线程池由于各种原因被消耗完也不会对系统的其他微服务的线程池造成影响。唯一的缺点就是需要维护多个线程池,会产生系统性能开销。

        Hystrix为分布式系统提供几种核心的容错实现方案。熔断器通常会被作为一台状态机使用,如下图。

 

 

         熔断器处于微服务之间。如果当前状态机状态为Closed状态,并且请求调用成功,则证明目前此微服务能够正常运行,当请求数据失败时,即开始记录请求失败数目。如果后续的请求调用一直处于失败状态,当达到一定的计数最大值,当前熔断器状态切换成Open状态。处于Open状态时,将不会发送请求到Open状态的微服务,此时微服务会暂时不被请求调用。知道暂停时间达到最大暂停状态。此微服务的状态机切换成Half-Open状态。在此状态下,只要请求返回失败结果,则再次切回Open状态;若请求返回成功时,状态机才会逐渐变回Closed状态。

        熔断器还提供一定的保护能力,除非确认此微服务根本无法继续访问,那么同一个程序会不断地进行请求,即使返回失败的请求。并且熔断器能够自动检测微服务的故障是否存在,如果微服务不存在故障问题,其他程序就会继续调用请求。熔断器对于一个分布式系统是必不可少的,它为系统提供了强大的容错能力,减少因故障而造成的系统崩溃,保证了系统之间的调用的请求时间,提高系统的执行性能。当一个微服务频繁处于故障时,熔断器会提供监控信息来提醒开发人员,开发人员可以根据熔断器提供的状态信息来及时处理问题,保证系统各微服务节点状态的稳定性。熔断器的流程图如下。

 

《基于云平台的任务管理系统的设计与实现》

原文地址:https://www.cnblogs.com/myfrank/p/7511233.html