当前位置:首页 > 时尚生活

熔断制度 一文读懂熔断器和重试机制

领导:随着微服务的普及,引信被广泛认为是最重要的技术之一。当微服务运行质量低于某个临界值时,启动熔断机制,暂停微服务调用一段时间,以保证后端微服务不会因为持续过载而停机。本文介绍了引信的原理和机理,并举例说明了如何使用引信。

今天,让我们讨论微服务架构的灵活扩展。一般来说,各种服务可以同步或异步地相互通信。我们假设一个大的单一系统被分成几个小模块来分离服务。事实上,管理内部服务之间的通信可能更困难。

这里有两个你可能听过的概念:fuse和retry机制。

保险丝保护器

想象一个简单的场景,一个用户的请求调用服务A,然后调用另一个服务。我们可以称B为a的下游服务,服务B的前面是负载均衡器。

后端服务可能会因为各种原因出错。例如,缓慢的数据库查询、网络波动或内存争用。在这种情况下,如果服务a超时或报告错误,用户可能会重试。在这种混乱的情况下,我们能做些什么来保护下游服务?

保险丝提供了对资源和故障率的更多控制。断路器旨在快速而优雅地处理错误,而无需等待TCP连接超时。这种快速失效机制将保护下游服务。这个机制最重要的部分是,融合器可以快速响应下游服务。线程池不会被慢速请求阻塞,也不会超时,还可能给终端用户更多有意义的返回数据。保险丝也给下游服务足够的时间恢复正常。完全避免报告错误是很难的,但是减少错误的影响是可行的。

通过使用海斯特里克斯保险丝,我们可以增加上游服务的退化行为。比如服务b可以访问副本服务或者缓存,而不是调用服务c,引入这个方法需要集成测试,因为我们可能无法在好的链路上模拟这个方法。

条件

保险丝有三种主要状态:

关闭:让请求通过的默认状态。如果请求成功/失败但低于阈值,则状态保持不变。可能出现的错误是超过最大并发数和超时错误。打开:当熔断器打开的时候,所有的请求都会被标记为失败;这是故障快速失败机制,而不需要等待超时时间完成。半开:定期的尝试发起请求来确认系统是否恢复。如果恢复了,熔断器将转为关闭状态或者保持打开。

理论导火索

以下是控制保险丝设置的五个主要参数。

阈值可以从两个服务的SLA中获得。在测试服务和其他依赖关系的稳定性时,应该合理地设置这些值。

好的保险丝名称应该表示相应的服务连接报告了错误。事实上,您可能在同一个服务中有许多API端点。因此,需要为每个API端点配置一个单独的保险丝。

生产环境中的保险丝

保险丝通常部署在多个节点上。即使保险丝提供了快速错误报告机制,我们仍然需要确认待机降级逻辑是否有效。因为我们认为这是一个小概率事件,不测试相应的退化策略是有风险的行为。在最简单的操作中,我们还需要确保门槛合理。从我个人的经验来看,在日志中打印配置参数会让调试更容易。

演示

这个示例代码使用了海斯特里克斯-戈库,它是由戈朗的海斯特里克斯网飞库实现的。

运行这个测试,你会看到两次返回的结果是不同的。

重试机制

对于上面的fuse模型,如果B服务减少了它的实例数量会怎么样?由发起的许多请求可能会遇到5XX错误。这将触发保险丝的故障报警。这就是为什么我们需要再次尝试,以避免间歇性的网络抽搐。

简单重试代码:

重试模式

为了实现乐观并发控制,我们可以安排不同的服务在不同的时间重试。立即重试可能不合适,因为这会突然导致大量对相关服务的请求。增加暂停时间将有助于缓解这种情况。也可以在一定范围内随机设定暂停时间(或者在等待阶段摇动)。

让我们考虑以下算法:

指数: 基数* 2^尝试次数全抖动: 休眠时间 = rand(0 , 基数* 2^尝试次数)等抖动: 临时 = 基数 * 2^尝试次数; 休眠时间= 临时/2+rand(0 , 临时/2)不相关抖动: 休眠时间= rand(基数, 休眠时间*3);

客户端数量与总负载和完成时间之间存在相关性。为了确定最适合系统的方法,有必要在客户端数量增加时进行基准测试。详细的实验可以在本文中找到。我的建议是在去抖动和全抖动之间。

两种工具的组合

断路器通常用于无状态在线交易系统,尤其是关键节点。重试应该用于调度不受超时限制的任务或节点。我们可以考虑同时使用两者。在大规模系统中,服务网格将是更好地协调大规模异构系统的理想框架。

参考链接:

1.https://github.com/afex/hystrix-go/

2.https://github.com/eapache/go-resiliency

3.https://github.com/Netflix/Hystrix/wiki

4.https://www.awsarchitectureblog.com/2015/03/backoff.html

5.https://dzone . com/articles/go-micro service-part-11-hystrix-and-resilience

原始地址:

https://medium . com/@ trong Dan _ tran/断路器-重试-64830e71d0f6

本文作者丹·陈(Dan Tran)由朱一坤翻译。请注明本文出处,欢迎更多朋友加入翻译投稿。详情请戳微信官方账号菜单“联系我们”。

参考读数:

技术原创、建筑实践类文章,请通过微信官方账号菜单“联系我们”提交。转载请注明来自高度可用架构“ArchNotes”的微信微信官方账号,并包含以下二维码。

1.《熔断制度 一文读懂熔断器和重试机制》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《熔断制度 一文读懂熔断器和重试机制》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/871756.html

上一篇

活汉妻是什么意思 农村俗语“有钱不买河边地,有钱不娶活汉妻”,这句话是啥意思?

下一篇

便宜的纯粮食酒有那些 4种简装低价白酒,放在货架上落灰,原来都是纯粮酒,内行才会买

合肥协警 合肥交通协警员考试时间地点确定 7月31日开考

提起交通协警员,您可能首先想到的是十字路口的大爷们。不久,在合肥市的街头,你也许能看到一群“90后”交通协警员。记者7月29日从合肥市就业服务管理中心了解到,共有715人通过合肥交通协警员招聘考试初审,符合笔试条件。其中,“80后”和“90后”占总数的80%左右。“80后”:我不怕工作苦7月29日10时左右,...

机动车检测 机动车年检时间规定你真的了解吗?

机动车检测 机动车年检时间规定你真的了解吗?

作为一个合格的车主,一定要记住自己车子的购买时间,这样才能按照相关规定计算出自己车子的年检时间。如果忘记了,还会记录在行车记录本和年检标志上  车辆年检时间分为以下几种情况: 1、摩托车4年内每2年检验一次;超过4年的,应当每年检查一次 2.营运客车5年内每年检验一次;超过5年的,每6个月检...

杭州地铁16号线开通时间定了吗运营服务时间公布

4月23日下午4时30分,杭州地铁5号线和16号线后同段将同时开通。五号线全长56.21公里。后通段开通后,将串联七个城区。开通后,5号线全天行车间隔为6分50秒。16号线全长35.12公里,共有12个车站,其中高架车站4个。线路始发站位于九洲街站,终点站为绿亭路站,可与3号线、5号线互换。五号线的运营服务时...

杭州地铁16号线开通的具体时间是什么时候站点和路线是怎样附运营时间

  • 杭州地铁16号线开通的具体时间是什么时候站点和路线是怎样附运营时间
  • 杭州地铁16号线开通的具体时间是什么时候站点和路线是怎样附运营时间
  • 杭州地铁16号线开通的具体时间是什么时候站点和路线是怎样附运营时间
合肥消遣网 合肥消遣时间好方法 四处休闲娱乐地儿玩不停

合肥消遣网 合肥消遣时间好方法 四处休闲娱乐地儿玩不停

黄金周八天长假期间如何打发时间,可能是个人方式,但既然有这么长的假期,肯定是要好好过的。找个好玩的地方体验一下,花点时间,给自己一个好心情去度假。k歌——去兴乐镇KTV唱歌是最简单也是最常见的休闲方式。同学、同事、朋友一起唱k歌绝对是最受欢迎的活动。兴乐镇KTV位于淮河路步行街外围,小窑金公园对面。因为是去年...

豆腐怎么保存的时间久 夏季带饭上班:酸味菜更易保存 最不能带豆腐

天热,不方便带饭上班。一是外界温度高,路途遥远,担心食物变质;其次,少数公司配备冰箱。这个时候如果要带饭,不要带汤多的菜,因为水多,微生物容易滋生。选择带隔层的饭盒,以免汤和饭混在一起加速变质。也可以多做一些酸菜,或者在做菜的时候加点醋。微生物害怕酸性环境,细菌会减缓它们的繁殖。夏季带餐小贴士夏季带餐小贴士高...

平顶山通报高考生答题卡被损毁 补足考试时间

平顶山通报高考生答题卡被损毁 补足考试时间

2020年7月8日11时25分,高考文科/理科综合考试结束,平顶山一中一考生情绪突然失控,先后抢过右、背考生答题卡,导致两考生答题卡受损。考场两个监考老师及时制止,稳定了考场秩序。市一中考点按程序启用了备用答题卡,按规定补齐了答题卡损坏的两位考生耽误的考试时间。两个考生把损坏的卡片内容抄在新答题卡上。目前,我...