美文网首页
分布式弹力设计之熔断

分布式弹力设计之熔断

作者: Doit8 | 来源:发表于2018-04-08 22:26 被阅读0次

前言

熔断机制的灵感来源于保险丝,我们知道家里的电路中有个保险丝,当用电过载或是短路时,保险丝熔断,切断电路,避免发生损坏电器甚至引起火灾。分布式的熔断机制也是如此,当服务超载时可以保护系统,防止系统被拖垮。

熔断的原理

熔断机制通过状态机实现,包含三种状态。

1 断开状态,在此状态下,请求可以正常通过,同时会有一个计数器记录请求成功与失败的数量,当某个时间段内,失败的比例大于某阀值,切换到打开状态,同时启动计时器,这时所有的请求直接返回错误或是走降级处理。待计时器结束后,切换到半开状态,会透过一部分请求,若有请求成功,说明后段服务已恢复,将状态置为断开状态。否则置为打开状态,并且重置计时器。

2 半开状态,此状态下有一部分请求可以通过,根据请求的结果来决定切换的状态。

3 打开状态,所有的请求直接返回错误,如果有配置降级策略,则会执行降级处理。

熔断的设计要点

1 错误类型,重试机制中我们提到需要判断错误类型,有的错误重试没有意义只会加重服务的负担,例如业务的异常。熔断机制也一样,如果错误类型是服务已挂,那么可以直接打开熔断,减少后续请求的阻塞时间。

2 日志记录,所有进入熔断的请求都要记录下来

3 熔断器定时ping后段健康检查服务,好处在于,服务恢复正常时,不需要真实的请求来触发关闭熔断。

4 提供手工关闭熔断的运维工具

相关文章

  • 分布式弹力设计之熔断

    前言 熔断机制的灵感来源于保险丝,我们知道家里的电路中有个保险丝,当用电过载或是短路时,保险丝熔断,切断电路,避免...

  • 弹力设计之熔断设计

    熔断机制这个词肯定不陌生,它的灵感来源于我们电闸上的“保险丝”,当电压有问题时(比如短路),自动跳闸,此时电路就会...

  • 第二章架构设计之技术实践篇(下)

    本章要点 分布式事务设计与实践 服务降级设计 服务限流/熔断设计 服务灰度发布设计 1.分布式事务设计与实践 分布...

  • 分布式弹力设计之降级

    当系统遇到大的流量,为了能让系统健康的运行,我们会采取一些措施,上节课讲到的限流是一种方式,拒绝掉一些流量,今天讲...

  • 分布式弹力设计之服务状态

    今天我们来谈一谈服务的状态,服务的状态指的是请求是否与不同的服务实例相关。分为两种,有状态和无状态。 无状态服务重...

  • 分布式弹力设计之异步通信

    讲到异步通信,不得不先提同步通信,如果把打电话比做同步,那短信就是异步。同步操作有个优点,实时性好,但存在以下问题...

  • 分布式弹力设计总结

    分布式弹力设计的目的 保证服务的弹力,从两个方面体现,一是出现故障时能够自恢复,另一方面是在无法自愈的情况下,将范...

  • 分布式弹力设计之幂等性

    分布式服务之间不可避免要相互通信,通信的结果有三种:成功,失败,超时。而超时状态,有可能是接收方没有接受到数据,另...

  • 分布式弹力设计之重试机制

    重试机制的使用场景 重试的前提是认为故障是暂时的,不是永久的,所以重试才有意义。 使用重试机制是必须要明确哪些错误...

  • 弹力设计之重试设计

    关于重试,这个模式应该是一个很普遍的设计模式了。当我们把单体应用服务化,尤其是微服务化,本来在一个进程内的函数调用...

网友评论

      本文标题:分布式弹力设计之熔断

      本文链接:https://www.haomeiwen.com/subject/xmqvhftx.html