【弹力设计篇】聊聊熔断设计

这篇具有很好参考价值的文章主要介绍了【弹力设计篇】聊聊熔断设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么需要熔断

熔断这个词一听从生活中就是保险丝超过一定的温度后自动断开,以此来保护家用电器,属于电路中自我保护装置。如果没有熔断,那么家用电器一定会损坏的。
进一步再来分析一下,在分布式系统中,各个系统之间其实会经常出现故障问题,如果能够自动检测到下游系统故障之后,直接断开请求,可以很好的保护系统。
那么重试和熔断的区别是什么,重试是在一定的时间内,系统可以恢复后进行重试,如果超过一定时间没有恢复,那么就需要熔断设计。

【弹力设计篇】聊聊熔断设计,# 高可用架构,架构

熔断设计

熔断设计可以保证频繁的调用下游系统而一直返回错误,造成CPU的资源浪费以及长时间的超时等待,二是可以保证在下游系统恢复之后,可以切换到系统正常调用状态。所以这么分析看的话,其实就是几种状态。系统正常、系统故障、系统恢复。所以非常适合采用状态机去实现。
熔断设计一般都是采用类似AOP的模式,对于业务代码无侵入。所以非常像一个代理模式。会自动记录某个时间段错误次数,决定是否返回继续还是错误。

【弹力设计篇】聊聊熔断设计,# 高可用架构,架构

  • 闭合状态 (Close)
    代表当前下游后段服务是正常的,但是会开启一个计数器来记录失败的次数,当在一定的时间内超过失败次数的阈值,则将状态切换到断开状态。然后会开始一个超时时钟,当该时钟超过了该时间,则切换到半断开状态。超时时间的设定可以给系统一次修正调用失败的错误,回复到系统正常状态。
  • 断开状态
    该状态下代表系统不可用,对于请求过来的请求可以直接返回错误,但是更好的方式是cache住本次请求数据,然后对于整个系统用户来说返回一样的数据。
  • 半开状态
    允许系统一定的请求量调用服务,如果这些请求都调用成功,那么可以认为之前导致失败的错误已经修正,熔断器切到闭合状态。

半断开状态可以有效防止正在恢复中的服务被突然而来的大量请求拖垮。

【弹力设计篇】聊聊熔断设计,# 高可用架构,架构
实现熔断器模式可以使得系统更加稳定和有弹性,系统可以从错误中恢复,并且减少错误对系统的影响。可以快速地拒绝哪些试图可能导致错误的服务调用,避免等待超时或者永远不会返回结果来提高系统的响应时间。
具体的开源框架就是 Netflix 的开源项目Hystrix

熔断设计的重点

  • 错误类型 。请求失败的原因可能很多,需要不同的情况采用不同的策略,熔断和重试一样,一般先走重试的策略,之后在打开熔断,有的是服务挂掉,这种就直接打开熔断。先重试后熔断。
  • 日志监控。日志应该记录所有失败的情况,使得管理员能够监控使用熔断器保护的服务的执行情况
  • 测试服务可用。如果服务宕机,使用熔断模式需要使用真实的用户进行测试服务可用。其实熔断器可以定时的去ping一下 服务的将康检测端口,来判断服务是否恢复。 比如机器对外的网络端口或者本级的port。之前就遇到 不小心把检测端口的API删除,导致服务正常启动但是就是没有用户流量进来。
  • 手动重制。如果出现系统故障或者系统已经恢复,可以通过后台进行人工介入使系统进行恢复或者熔断器断开。
  • 并发问题 一般来说,相同的熔断器可能会同时多个请求进行处理,所以不应该阻塞并发请求,尤其对结果进行统计的时候,应该成为一个共享的数据结构,一般使用无锁 atomic原子操作性能更好。
  • 资源分区 对于有量级的系统来说,数据会进行分区,分库分表等操作,所以单一的熔断器可能会把所有分区进行标记不可用,这样就可能导致一会可用 一会不可用,所以需要对有问题的分区进行熔断,而不是对整体。
  • 重试错误的请求,有些请求可能是参数错误的问题导致的,所以一般在设计的时候最好记录下出错的请求参数,并且需要被调用端支持幂等调用。

【弹力设计篇】聊聊熔断设计,# 高可用架构,架构

小结

本篇主要介绍了 熔断设计的解决的问题,其实主要还是实现系统调用层面的高可用,以此提升系统的稳定性。然后主要说了下熔断设计的几种状态,并且介绍了熔断设计的重点问题。最终我们都是在经过几次重试之后,然后进一步升级到熔断。文章来源地址https://www.toymoban.com/news/detail-604546.html

到了这里,关于【弹力设计篇】聊聊熔断设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES+Redis+MySQL,这个高可用架构设计

    会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。 随着同程和艺龙两家公司的合并,越来越多的系统需要

    2024年02月07日
    浏览(41)
  • 企业如何通过熔断降级增强服务稳定性和系统可用性?

    API 的调用稳定性被视为数据服务的最重要的指标。该指标的影响因素是多种多样的,「袋鼠云数据服务平台 DataAPI」不仅多次对于调用性能和稳定性进行压测和调优,而且还提供了多种配置项优化手段供客户进行自行调优。但是当遇到不可预期的大流量或其他突然情况时还是

    2024年02月05日
    浏览(55)
  • 微服务 - Nginx网关 · 进程机制 · 限流熔断 · 性能优化 · 动态负载 · 高可用

    系列目录 微服务 - 概念 · 应用 · 架构 · 通讯 · 授权 · 跨域 · 限流 微服务 - Consul集群化 · 服务注册 · 健康检测 · 服务发现 · 负载均衡 微服务 - Redis缓存 · 数据结构 · 持久化 · 分布式 · 高并发 微服务 - Nginx网关 · 进程机制 · 限流熔断 · 性能优化 · 动态负载 · 高可用

    2024年02月02日
    浏览(62)
  • ES+Redis+MySQL,这个高可用架构设计太顶了

       一、背景 二、ES高可用方案 三、会员Redis缓存方案 四、高可用会员主库方案 五、异常会员关系治理 六、展望:更精细化的流控和降级策略    会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是

    2024年02月05日
    浏览(65)
  • 分布式系统与人工智能高可用性架构设计与实现

    作者:禅与计算机程序设计艺术 随着人工智能、云计算、容器技术等新兴技术的不断涌现和深入应用,越来越多的企业和组织都将重点放在自身的AI系统开发及管理之上,面临分布式环境下的AI系统的高可用性和可靠性问题,如何构建并实施一个可用的分布式AI系统架构,成为

    2024年02月06日
    浏览(55)
  • 架构设计内容分享(一百三十三):ES+Redis+MySQL高可用,如何试实现?

    目录 背景: ES 高可用方案: ES 双中心主备集群架构 ES 流量隔离三集群架构 ES 集群深度优化提升 会员 Redis 缓存方案: ES 近一秒延时导致的 Redis 缓存数据不一致问题的解决方案 Redis 双中心多集群架构 高可用会员主库方案: MySQL 双中心 Partition 集群方案 会员主库平滑迁移方

    2024年02月22日
    浏览(48)
  • 1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(50)
  • 分布式系统架构设计之分布式消息队列的水平扩展性、安全可用性以及监控与调优

    随着业务的快速发展和数据的不断增长,单一的消息队列服务器往往难以满足高并发、高可用和高吞吐量的需求,因此,如何实现消息队列的水平扩展成为了一个重要的问题。这部分我将从分区、副本、负载均衡等关键概念出发,一起探讨如何实现分布式消息队列的水平扩展

    2024年02月01日
    浏览(48)
  • 【架构详细解读】缓存、限流、降级和熔断、负载均衡、灾备和故障转移——

    目录  架构基础 # 如何理解架构的演进? # 如何理解架构的服务化趋势? # 架构中有哪些技术点?   缓存 # 谈谈架构中的缓存应用? # 在开发中缓存具体如何实现? # 使用缓存的经验?  限流 # 什么是限流?三种限流的算法? # 限流令牌桶和漏桶对比? # 在单机情况下如何

    2024年01月16日
    浏览(44)
  • 微服务架构|go-zero 的自适应熔断器

    原文链接: go-zero 的自适应熔断器 上篇文章我们介绍了微服务的限流,详细分析了计数器限流和令牌桶限流算法,这篇文章来说说熔断。 熔断和限流还不太一样,限流是控制请求速率,只要还能承受,那么都会处理,但熔断不是。 在一条调用链上,如果发现某个服务异常,

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包