微服务限流与容错实践

一. 微服务限流

  随着微服务的流行,服务和服务之间的稳定性变得越来越重要。缓存、降级和限流是保护微服务系统运行稳定性的三大利器。

  缓存的目的是提升系统访问速度和增大系统能处理的容量,而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开,而有些场景并不能用缓存和降级来解决,比如稀缺资源、数据库的写操作、频繁的复杂查询,因此需有一种手段来限制这些场景的请求量,即限流。

二.  服务熔断

  除了限流还有熔断机制。

  熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

三. 服务降级

  当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

四. Hystrix介绍和使用

  1)Hystrix基本介绍

            Hystrix最开始由Netflix开源的,后来由Spring Cloud Hystrix基于这款框架实现了断路器、线程隔离等一系列服务保护功能, 该框架的目标在于是一个容错库,旨在隔离指向远程系统,服务和第三方库的请求,从而延迟和故障提供更强大的容错能力,杜绝级联故障。hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。起到了微服务的保护机制,防止某个单元出现故障.从而引起依赖关系引发故障的蔓延,最终导致整个系统的瘫痪。

     大多数分布式服务的调用是http或者Rpc请求进行访问,在项目中使用了http作为通信方式,通常http访问具有很多不确定因素,除了服务异常、常常还有网络或者业务引起的超时等问题(网络连接慢、资源繁忙、暂时不可用、服务脱机)。如果在web请求处理线程中直接进行http访问,在异常或者超时发生时,将会严重影响服务器的请求处理性能。当然我们可以自己封装服务调用,通过future等模式来实现服务的异步调用。Hystrix则为我们服务调用变的更安全可控,服务调用过程是在hystrix管理的线程池中,因此使得服务调用过程与web线程能隔离开,保证服务器的稳定,同时hystrix将不同的业务调用隔离在不同的线程池,能够很好的解决业务的重要性,处理效率问题。

   2)Hystrix功能:

    1. 对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制。

    2. 在复杂的分布式系统中阻止级联故障。

    3. 快速失败,快速恢复。

    4. 回退,尽可能优雅地降级。

    5. 启用近实时监控、警报和操作控制。

五. 其他限流熔断器

  1)Sentinel

  2)Guava

  3)go-kit中的熔断器

原文地址:https://www.cnblogs.com/songgj/p/14242422.html