问问题描述
答精选答案

Circuit Breaker翻译过来叫做断路器,新建的小区里家家都有,就是这个东西:熟悉吧,断路器的作用嘛,如果你在家里从来没用过或者关注过这个东西,我来讲讲:当线路短路、或是过载电路会自动切断电源。
它跟另外有个叫做熔断器的有类似之处。熔断器英文名叫Fuse,这个样子:断路器和熔断器相比较,断路器在短路之后还能够恢复,合上闸之后继续用;熔断器就不是了,断了之后就需要更换电阻丝,重新接上线之后才能使用。上面说了这两个设备,而且配了图,目的是为了引出本节的主题:Circuit Breaker Pattern,断路器模式。稍穿插一些情怀层面的东西:OO编程里的类讲究把自然界的物体类化为Class,Class有它自己的属性和行为,好比苹果是红的,苹果可以吃;在云化的软件体系结构里,系统里的各个模块更是接近于真实世界的功能组件,真实世界里的各个部门、或是各个组成部分往往都会直接映射为云化系统里的某个容器。码农所沉浸的世界里,不仅仅是逻辑和代码,反而更是真实的世界,所以在讲断路器模式之前,我们讲讲电路里断路器是有必要的。进入正题,在分布式的软件体系结构中,一个服务会因各种问题而不能正常工作,比如服务器负荷太大,或是底层数据资源池不可用、或者网络短时期不稳定、或服务器损坏等等。这个服务有可能是短暂性的工作不正常,也有可能是彻底坏了。问题一:对于短暂性的工作不正常,如果服务的调用者没有一点仁义之心,卯足了劲不间断调用,那么这个短暂性的不正常可能会因为调用者的关系而很难恢复。问题二:对于彻底性的损坏,对调用者而言,它没必要反复尝试,看看服务工作正常了没有,这对于调用者而言,是无谓的性能损耗,且于事无补。断路器模式就是为了解决这两个问题而生的。一个服务有三种状态,分别是open、closed和half-open。open表示闸开,这时服务不工作,closed表示合闸,这时服务工作,half-open表示服务短暂性不工作、等待恢复。这三种状态之间的转换关系如下图(图中Trip是跳闸的意思):当服务太慢时,服务由closed状态切换到Half Open,直至服务恢复正常;当服务损坏,服务转成open状态。具体到断路器模式的实现方式上:把现有服务(supplier)封装成一个circuit breaker,客户端的情况转由circuit breaker来处理。Circuit Breaker检测timeout情况,根据timeout的次数将服务自动切换为half-open或close状态,看时序图:在Akka和Netflix/Hystrix中封装了Circuit Breaker Pattern的实现。本文参考了:1)Reactive Microservices Architecture - O'Reilly Media2)Circuit breaker design pattern(WIKI)
本文来自作者[jiangsujingmaozhiyejishux]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jingxuan/1215398.html
评论列表(4条)
我是公众科技网的签约作者“jiangsujingmaozhiyejishux”!
希望本篇文章《Circuitpanelboards是什么意思》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:Circuit Breaker翻译过来叫做断路器,新建的小区里家家都有,就是这个东西:熟悉吧,断路器的作用嘛,如果你在家里从来没用过或者关注过这个东西,我来讲讲:当线路短路、或是过载电路会自动切断电源。它跟另外有个叫做熔断器的有类似之处。熔断器英文名叫Fuse,这个样子:断路器和熔断器相比较,断路器在短路之后还能够恢复,合上闸之后继续用;熔断器就不是了,断了之后就需要更换电阻丝,重新接上线之后才能使用。上面说了这两个设备,而且配了图,目的是为了引出本节的主题:Circuit Breaker Pattern