• ZhYB
    2019-06-26
    看到第一个留言问熔断粒度的,您回复的是服务粒度,这个错了吧,应该是接口粒度的吧。另外,相关方面你文中说在半断开后通过ping来探活,这个也不行吧,探活是成功的,不代表被熔断的那个接口是活的。说白了,还是觉得您对熔断粒度理解有点偏差,不是服务粒度的。因为一个服务会暴露多个接口,每个接口有不同的计算逻辑和依赖不同的依赖,一个接口挂不代表别的接口也挂。
     2
     11
  • 曾凡伟
    2018-03-16
    请问熔断的最小粒度,是针对每个单一请求,还是针对整个应用来实施呢

    作者回复: 服务的粒度

    
     6
  • 多米
    2018-03-17
    可惜更新有点慢~
    
     3
  • 李顺翔
    2018-09-06
    @Adrian 极客好像非作者不能回复,专门留言回复你。。
    首先下游服务可以分为第三方服务跟微服务,第三方服务没见过谁直接调用某个服务节点的,都是通过网关去负载均衡,所以服务不可用即代表了网关服务不可用,对上游服务来说,跟集群不可用没有区别,而微服务的话,调用的时候单节点不可用会自动给你负载到可用服务节点,除非服务提供者全部挂了(网络波动导致连不通也算),否则不会触发这个断路器,设置了超时时间的断路另说
    
     2
  • edisonhuang
    2019-07-10
    熔断设计受保险丝设计的启发,可以保证系统在出问题是客户端及时停止调用而非一直失败重试。
    熔断的设计会涉及三种状态,闭合状态,半开状态和打卡状态,三种状态可以由一个状态机来转换。
    熔断设计还需要考虑的几个重要问题包括错误类型的区分,日志监控,允许手动恢复的设置,并发问题等
    
     1
  • Sunshine
    2019-05-22
    陈老师,基于滑动时间窗口进行调用(success & fail)的统计,底层的数据结构有什么好的推荐吗?目前在使用逻辑环形数组
    
     1
  • slark
    2018-08-01
    弹性设计相关,看一看 spring微服务实战 很有帮助。或者把spring cloud的组件,背景了解一下,对于微服务为什么要这样做就有谱了。大型互联网公司里在没有通用组件前都会有自研的类似组件,比如负载均衡,通用网关,鉴权,流水日志等。有一定经历,再来看微服务的设计会觉得他们其实非常相似。java在这方面有成熟组件,实在是非常有利于开发
    
     1
  • xpisme
    2020-01-18
    保险丝 类比恰到好处,生动形象,容易理解。
    熔断主要有三个状态 close half-open open
    close时 会有错误计数器,假设超过一定得阈值就切换至open状态(直接返回错误),那也不能一直是open状态,open状态跟不能用一样一样的,得从open切换至half-open状态,检测下是否OK了,若OK了,就切换至close状态,继续提供服务。

    需要考虑啥
    从业务出发会有很多的错误码,注意错误的类型。
    并发,这个防止熔断是性能的瓶颈。
    探活,就是ping下是否OK了
    日志的监控 能更详细的看是否有问题
    提供人工操作的入口,人工可操作是否熔断
    展开
    
    
  • Geek_Heiko
    2020-01-13
    #day 14#弹力设计之"熔断设计"
    什么是熔断设计?类比于家用电器的中的过载保护装置(如保险丝),我个人的理解是,熔断设计是赋能系统中的服务自我保护的一种机制,表现为: 让在运行着的系统中的出现”问题“的服务,脱离其所在的系统环境一段时间,这样一来,一方面可以使得该服务避免"带病工作",全力进行自我恢复,从而更好地适应当时的环境继续正常地提供服务;另一方面,系统也可以很清楚地知道该服务现在还无法提供正常的服务,在一段时间内或不会再向其发送服务请求,进一步地谨慎处理相关请求,避免相关获取到不正确的数据或状态在系统中流动、蔓延。从一定程度上说,熔断是服务为了保护好自己,从而最终也很好地保护了其所在的系统。
    更为具体地,我们将熔断设计看作是一个熔断器的设计。一般而言,熔断器就断开和闭合两种状态,对应的是服务脱离或连接着系统,但我们想做得更好一些,于是就有了一种"半闭合",顾名思义,这是一种闭合到断开的过渡状态,其在触发熔断机制时,仍"藕断丝连",允许一定数量的请求去调用该服务,如果是调用成功的,则可认为之前导致该问题的已经得到修正,继续切换回闭合状态,反之,则完全断开切换到断开状态。当然,实际具体到实际的系统中引入熔断机制,从其触发到其状态的管理,切换并不是一件简单的事情,熔断触发的条件往往多方面一定时间内的积累的结果,个人觉得一个熔断器的考量指标应该是包含其对于熔断触发的"敏感程度"的。其主要考虑一下几个方面:
    1. 熔断的准备。
        各式各样的"错误"是熔断机制触发的必要条件,但是,有些错误我们是可以通过重试机制就能解决的,而有些错误只能通过触发熔断机制才能是错误能够得到解决的可能。所以,在熔断器的前端需要有日志监控功能和配套的错误类型识别,以便在合适的实际触发熔断机制,也在一定程度上便于调试熔断器的"敏感度"。

    2. 熔断的时机。
        服务脱离系统前会有一段时间的半熔断过渡期,即半熔断状态,在这个时期,我们仍然有可能通过继续一定数量的测试服务是否可用,来使熔断器从半熔断切换到闭合状态的,即并不真正触发熔断状态。

    3. 熔断的粒度。
        对于某一块业务,系统中的服务往往是通过数据库或消息队列等进行相互依赖的,某个服务的脱离,必然会对整体业务造成影响,为避免尽可能减少其负面影响。往往需要通过资源分区来限定熔断的粒度,然后只对出现问题的分区进行熔断,而不是整体。
    4. 后熔断时期。
    展开
    
    
  • 夜空咏叹调
    2020-01-09
    熔断设计是一种容错机制,避免某些错误持续发生导致服务器性能降低,因此使用熔断器去控制,降低服务器负载。
    熔断器主要有三种状态:闭合状态,断开状态,半闭合状态。
    
    
  • 知行合一
    2020-01-05
    熔断需要用状态机来实现,根据各种情况来转换状态,在不同状态下做不同的行为。要做好熔断设计还真不容易,需要考虑各种细节。
    
    
  • 文刂 氵共 超
    2019-12-24
    坚持学习,学习笔记 https://mubu.com/colla/6ikyl7br9NM
    
    
  • 又双叒叕是一年啊
    2019-06-24
    理论总结的挺好,应该多一些实际的落地方案便于理解。要不有些抽象
    
    
  • 拉欧
    2019-06-04
    设计熔断器的关键,在于维护三个状态(open,half-open,close)之间的流转,以及接口(is
    Allowed, timeout, fail, success)的正确响应逻辑
    
    
  • godtrue
    2019-01-30
    熔断是否可认为切断对服务的依赖不再依赖了,是降级的升级版。
     2
    
  • Geek_fb3db2
    2018-12-06
    服务都是多实例部署的 一个服务不可用就熔断 但是其他同样服务是可用的 这个怎么处理
    
    
  • 欧星星
    2018-07-12
    如果服务A的一个功能依赖服务B和服务C,当服务B出现问题触发熔断的时候这时候这个熔断有必要吗?
    
    
  • Adrian
    2018-03-21
    “一些错误是远程服务挂掉,恢复时间比较长;这种错误不必走重试,可以直接打开熔断策略”,这句话感觉说的有些绝对,如果下游服务只是单机挂掉了,上游系统监测不可恢复异常,如果非超时类耗费机器资源的异常,如果直接熔断,会导致正常的服务也不可用,必然导致业务有损,毕竟下游集群部分机器可能还是正常工作的
     1
    
  • shufang
    2018-03-15
    以前一直觉得是高大上的东西,现在越看越明白,谢谢老师~
    
    
我们在线,来聊聊吧