为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 微服务与断路器

微服务与断路器

2018.11.20 12:57 818浏览

众所周知,微服务架构具有许多优点。包含松散耦合,自治服务,分散治理,更容易连续交付等。但与此同时,它使架构变得脆弱,因为每个用户的操作结果都会调用多个服务。它通过网络上的远程调用替换了单体系结构中的内存调用。但是当一个或多个服务不可用或表现出高延迟时,会导致整个系统出现级联故障。服务客户端的重试逻辑只会使情况更糟糕,并且可能导致系统彻底的崩溃。

断路器模式有助于防止跨多个系统的这种灾难性级联故障。断路器模式允许您构建容错和弹性的系统,当关键服务不可用或具有高延迟时,系统仍然可以正常运行。

现实情况是所有服务都会在某个时间点失败或不稳定。断路器允许您的系统优雅地处理这些故障。断路器概念很简单。它用跟踪故障的监视器包装了一个函数。断路器有3种不同的状态:关闭,打开和半打开:

  • 关闭 - 当一切正常时,断路器保持闭合状态,所有调用都能访问到服务。当故障数超过预定阈值时,断路器跳闸,并进入打开状态。

  • 打开 - 断路器在不执行该服务的情况下为调用返回错误。

  • 半开 - 超时后,断路器切换到半开状态,以测试问题是否仍然存在。如果在这种半开状态下单个调用失败,则断路器再次打开。如果成功,则断路器重置回正常关闭状态。

断路器的实现采用状态机模式


webp

以下是每个断路器状态的说明和流程图。

关闭状态下的断路器
当断路器处于CLOSED状态时,所有呼叫都将进入供应商微服务,后者无任何延迟地响应。

webp


打开状态下的断路器
如果供应商微服务响应缓慢,则断路器会收到对该服务的任何请求的超时。一旦超时次数达到预定阈值,它就会使断路器跳闸到打开状态。在OPEN状态下,断路器为所有对服务的调用返回错误,而不调用Supplier Microservice。此行为允许供应商微服务通过减少其负载来恢复。

webp


半开状态下的断路器
断路器使用称为HALF-OPEN状态的监视和反馈机制来了解供应商微服务是否以及何时恢复。它使用这种机制定期对供应商微服务进行试用,以检查它是否已经恢复。如果对供应商微服务的调用超时,则断路器保持在OPEN状态。如果调用返回成功,则电路切换到CLOSED状态。

webp


断路器对服务监控很有价值。监视,记录和恢复任何断路器的状态变化,以确保服务可用性。 通过断路器状态变化可帮助您为容错系统添加逻辑。例如,如果产品目录服务不可用(断路已打开),则UI可以从缓存中获取产品列表。 断路器模式可以优雅地处理关键服务的停机时间和速度,并通过减少负载来帮助这些服务恢复。



作者:RaiseHead
链接:https://www.jianshu.com/p/0593fb8ca1e1


点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
199
获赞与收藏
857

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

145篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消