服务容错及sentinel

本文介绍了服务雪崩的现象及解决方案,重点探讨了阿里巴巴的Sentinel组件在服务容错和流量控制上的应用。Sentinel提供了快速失败、预热和排队等待等流控策略,以及熔断器机制来防止服务级联故障。通过配置降级规则,Sentinel能够帮助系统在高并发和故障情况下保持稳定。
摘要由CSDN通过智能技术生成

随着服务数量的增加,整个架构出现故障的概率提高了,所以服务容错的需求增加了
在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败。高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险。

单个实例故障时,处理请求缓慢或者没有响应,导致上层调用它的服务实例也变慢,请求堆积,负载升高。进一步导致更广泛的服务实例故障。
最后整个架构大面积出现服务实例故障,形同异常雪崩,突然全线崩溃。这种由单个实例引发的级联故障称为服务雪崩。

解决这个服务容错以下三种方案

  1. 超时:在调用方,一定时间内未得到响应则放弃请求;在异常时,确保资源的消耗有上限
  2. 限流:在提供方,限制进入系统的流量,确保在系统的负载范围内,保证系统能够正常运转
  3. 仓壁模式:资源隔离手段,在调用方使用线程池等方式,限制资源消耗在某个范围之内
  4. 熔断器: 在调用方,在系统上检测调用,如果发现了某个底层服务故障,则自动熔断,不再调用该服务,隔一段时间再次检测是否恢复,如果恢复则加入集群

在国内阿里提供sentinel 组件
1 sentinel 的流控方案:
● 快速失败:直接拒绝(RuleConstant.CONTROL_BEHAVIOR_DEFAULT)方式。该方式是默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝

  1. ● warm up(预热):冷启动(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,

● 排队等待:匀速器(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式。需要设置将阈值模式设置为QPS才能生效。这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法

熔断器

在这里插入图片描述
请求进入失败的次数达到阈值就会触发熔断器打开机制,熔断器进入窗口机制,恢复探测若恢复则关闭
规则配置降级规则;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值