美文网首页
服务治理 - 熔断保护

服务治理 - 熔断保护

作者: 赤子心_d709 | 来源:发表于2019-03-19 19:33 被阅读0次

背景

本文讲的熔断器结构参照Hystrix结构。

雪崩

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。
如下图:


雪崩示意图

当A服务出现问题的时候,直接造成B不可用,进而造成CD不可用。
雪球越滚越大。
尽管有人为的限流以及ACL之类的开关,但是毕竟有随机以及滞后性

因此服务治理中,引入一种保护机制,减少上述问题的出现,熔断器应运而生。

思路

熔断器的原理很简单,如同电力过载保护器。 它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试调用操作。
简单思路如下

熔断器的状态机
三种状态:关闭(正常情况),开,半开

如果调用失败,将失败调用的数量增加1
如果调用失败次数超过某个阈值,则打开电路
如果电路打开,立即返回错误或默认响应
如果电路是打开的,过了一段时间,半打开电路
如果电路是半开的,下一个呼叫失败,再打开它
如果电路是半开的,成功次数到达阈值,关闭它

里面隐藏了一个问题:成功,失败次数是最近一段时间内累计的,并不是历史所有时间的(不然没有意义),因此要引入时间窗口来统计各个时间段内的数据

窗口处理

含窗口处理的流程

上图按照最近10s统计,每1s一个窗口,记录请求处理结果,分为Success,Timeout,Fail和Rejection,这几个维度自己实现的时候可以调整,比如Rejection见得比较少

那么窗口大小设置多少,窗口个数设置多少。
上图是10个窗口每个1s

这样过了10s的时候,会把[0s,1s)这个窗口给清空掉,由此计算出来新的错误率,准确率等指标会有波动。
(比如正确率本来是SUC[0:9]/TOTAL[0:9],变成了SUC[1:9]/TOTAL[1:9])

为了尽量减小波动,会把窗口数量设置多一点,每个窗口代表的时间短一点
比如10s可以设置10个1s的窗口,也可以设置成50个0.2s的窗口

总结

本节没有代码实现,这个可以参照refer或其他开源代码
主要理解熔断器里面的三种状态以及状态机的流转,并且对时间窗口统计数据进行介绍

refer

http://www.servicemesher.com/blog/istio-vs-hystrix-circuit-breaker/
http://www.ityouknow.com/springcloud/2017/05/16/springcloud-hystrix.html
https://github.com/Netflix/Hystrix/wiki/How-it-Works

相关文章

  • 服务治理 - 熔断保护

    背景 本文讲的熔断器结构参照Hystrix结构。 雪崩 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会...

  • SOA和RPC区别

    RPC SOA SOA又叫服务治理,入springcloud,服务进行监控,熔断,链路跟踪。

  • 服务治理

    服务治理包括服务发现、负载均衡、限流、熔断、超时、重试、服务追踪等。 服务发现 服务发现是指使用注册中心记录分布式...

  • 微服务服务治理

    引入微服务后出现的服务治理的新问题,例如:动态服务发现、负载均衡、TLS加密、HTTP/2 & gRPC代理、熔断...

  • SpringCloud之Hystrix、Gateway、Conf

    1. SpringCloud Hystrix(服务熔断与降级组件 / 服务容错与保护组件) 示例(服务端降级) 示...

  • .NET Core + Spring Cloud:服务注册与发现

    毫无疑问,微服务架构是目前的主流,在微服务架构下,服务治理、负载均衡、服务熔断、配置中心、API网关 等都是需要关...

  • 基本概念

    限流保护 – 目标:保护服务提供方不被过于频繁的调用压垮。– 方式:过于频繁的调用直接拒绝。 降级保护(熔断) –...

  • 拉勾 Java 3-4 spring cloud 问答笔记

    熔断即断路保护。微服务架构中,如果下游服务因访问压⼒过⼤⽽响应变慢或失 败,上游服务为了保护系统整体可⽤性,可以暂...

  • SpringCloudAlibaba一学习

    组件 Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。服务限流指...

  • SpringCloud简述

    介绍 微服务概念服务注册与发现本地负载均衡服务保护服务雪崩效应服务降级服务熔断服务隔离Api网关服务分布式配置中心...

网友评论

      本文标题:服务治理 - 熔断保护

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