美股熔断机制和服务熔断机制有什么异曲同工之妙

Java基础

浏览数:42

2020-6-14

前言

在3月9日,美国股市暴跌,三大股指开盘迅速下跌超7%,美股自1997年以来首次触发熔断机制。暂停交易15分钟,不过恢复交易后并未再次触发熔断。那么在股票中的熔断机制到底是什么?

股票中的熔断机制

在股票中的熔断机制,也叫自动停盘机制,是指当股指波幅达到规定的熔断点时,交易所为控制风险采取的暂停交易措施。主要目的就是防范恐慌情绪进一步扩散,给市场带来更大的冲击。美股以标普500指数为熔断基准指数,熔断阈值为7%、13%和20%三档。如果标普500指数在美国东部时间早上9时30分到下午3时25分之间下跌7%或以上,则将触发“第一级”停盘;若该指数下跌13%,则将触发“第二级”停盘,同样持续15分钟。之后,如果跌幅达到20%,当日交易将停止。

那么服务的的熔断机制是什么呢?

服务的熔断机制

在一次RPC调用中,普遍会存在A->B->C这样多个应用服务连续调用的场景,当B服务调C服务时,有一些请求可能因为机器性能问题处理或响应的特别慢,比如这一次请求需要5s才返回,等到B服务收到C服务的响应,处理完结果后再返回给A服务,这个时候对于A服务来说,这次请求响应至少在5s以上,仅仅一次响应缓慢对产品的体验影响不大,但是如果大量的请求出现缓慢,对产品的体验影响会非常大,并且A服务与B服务之间的连接也一直没有释放,这会导致A、B服务的系统资源都被占用,从而影响系统的性能和稳定性,严重的情况会导致系统发生雪崩现象。所以为了防止下游的服务调用缓慢或者大量超时影响整个系统的可用性和稳定性,上游服务会暂时切断对下游服务的调用,并且做一些服务降级的处理。

通常我们在判断是否需要熔断时会关注一个滑动窗口内的响应时间、异常比率、异常数等指标,当这些指标达到我们的配置时,发生熔断,当发生熔断后,会有一些降级处理,并且在熔断机制中还有一个非常重要的恢复机制设计,也就是熔断后,达到什么条件时,服务调用恢复正常。比如在Hystrix中,熔断一定时间后进行尝试,也就是会放一个请求进入,只要这一次请求成功则恢复,也可以理解为熔断器关闭。下面用个图形象的表示一下:

这张图里面可以看到很多的请求都会经过断路器(熔断器),此时断路器的状态是关闭的,并且每个请求都会被作为样本被采集,最后被计算成考量的指标,也就是我上述讲到的响应时间、异常比率等。断路器会加载配置中心的配置,一般配置中心需要可以能够拥有动态变更的能力,这样可以根据不同的场景和时机来修改指标的阀值,一般可以考虑Apollo、Nacos等方案。当某一个指标达到阀值时,断路器被打开,所有请求都被降级处理,而断路器恢复机制目前有很多方案,比如用了一个定时器,规定在一定时间后进行尝试放入请求,如果请求成功,就将断路器关闭,恢复服务的调用。目前熔断器的实现有Hystrix、Resilience4j、Sentinel等方案,我今天就不在这里展开讲解它们的熔断机制和恢复机制了。

异曲同工之妙

其实在计算机中的很多设计都会源于生活,熔断机制其实常常在电路设计中出现,就是为了防止电压过高导致火灾而降电断掉,这种思路被运用到了上述讲的股票领域和计算机领域。

你还有想到哪些技术源于生活?评论告诉我!评论了之后别忘了点赞,还有别忘了去看看下方福利专区。

送福利区域

扫描下方二维码关注公众号【加点代码调调味】,点击菜单栏获取免费49篇的《Dubbo源码解析》系列文章

作者:加点代码调调味