mysql熔断机制_大话分布式架构(五)- 熔断隔离

在应用运行过程中如何趋利避害,避免蝴蝶效应?请听金融老兵慢慢道来……

1、概述

分布式系统中经常会出现某个服务提供方不可用导致服务排队,如果没有及时解决很可能产生连锁反应,导致系统负载增加、请求大量超时,最后导致大量的服务器或者软件模块无法正常工作, 这种现象被称为服务雪崩效应。为了应对服务雪崩, 常见的做法是服务降级,那么如何进行服务降级?如何在减少人工干预的情况下自动进行降级?本文将从:相关概念、问题产生的根本原因、如何预防、如何处置等方面进行阐述。

在阐述应当方法前我,我们先来澄清几个概念。系统负载:系统负载即System Load:指系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度。linux或unix系统通过top查看,也可以通过uptime查看平均负载(Load Average):一段时间内系统的平均负载,如下面作者的mac的执行uptime后显示的1分钟平均负载,5分钟平均负载,15分钟平均负载分别是2.17、3.90、3.74

21:30 up 6 days, 52 mins, 2 users, load averages: 2.17 3.90 3.74

在把docker和其他相关应用停了以后update结果如下:

21:40 up 6 days, 1:01, 2 users, load averages: 1.48 2.28 2.93

过载:当前负载已经超过了系统的最大处理能力。例如,系统每秒能够处理的请求是100个,但实际每秒的请求量却是10000个,就可以判定系统出现了过载。

过载保护: 剔除过载或者已经超时(过时)的请求,从而保证系统尽可能能用。

雪球:对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护,可能导致历史累计的超时请求达到一定规模,像雪球一样形成恶性循环。由于系统处理的每个请求都因为超时而无效,系统对外呈现的服务能力为0,且这种情况下不能自动恢复。

服务雪崩效应:因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。

熔断:这种模式主要是参考电路熔断,如果一条线路电压过高,保险丝会熔断,防止火灾。放到我们的系统中,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

隔离:隔离设计对应的单词是 Bulkheads,中文翻译为隔板。但其实,这个术语是用在造船上的,也就是船舱里防漏水的隔板。这就像对系统请求按类型划分成一个个小岛的一样,当某个小岛被火少光了,不会影响到其他的小岛。

上面几个词的定义和理解有助于掌握本文要传递的观点,这也是我们采取措施规避生产问题的本质。

2、系统过载

系统过载是一切问题的根源,如果不存在过载,当前系统可以很好支撑业务并保证几个九的高可用,就不再需

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值