服务容错概述

背景:

        在分布式系统中,由于服务数量的增加,网络原因,高并发的依赖失败等等原因,服务无法保证100%可用性。一旦某个服务发生故障,借由服务与服务之间的依赖关系,故障会进行传播,从而使整个系统故障,瘫痪,例如服务雪崩(单个实例故障时,处理请求缓慢或者没有响应,导致上层调用它的服务实例也变慢,请求堆积,负载升高。进一步导致更广泛的服务实例故障。最后整个架构大面积出现服务实例故障)。因此需要进行服务容错,保证单个服务故障时,不会影响其他服务的正常运行。

服务容错方案:

  • 超时:上游服务调用下游服务是,一定时间内未得到响应则放弃请求,确保资源的消耗有上限。
  • 限流:限制进入系统的流量,确保在系统的负载范围内,保证系统能够正常运转。
  • 仓壁模式(隔离):将系统按照一定的规则划分为若干个服务模块,各个模块相互独立,限制资源消耗在某个范围之内。常见的隔离方式有:线程池隔离和信号量隔离。
  • 熔断器:在系统上检测调用,如果发现了某个底层服务故障,则自动熔断,不再调用该服务,隔一段时间再次检测是否恢复,如果恢复则加入集群。

服务容错组件:

  • alibaba sentinel
  • netflix hystrix
  • resilience4j

sentinel:

流控:

资源名: 请求路径

针对来源: 来源系统

阈值类型:

  • QPS 每秒通过请求数
  • 线程数 处理请求所使用到的线程数量

单机阈值: 具体配置值

流控模式:

  • 直接 : 针对A的请求达到阈值,则对进入A的请求的流量进行限制
  • 关联 : A 关联B资源,对B发起请求,造成对A限流
  • 链路: 以调用链路为单位做限流处理

流控效果:

  • 快速失败:直接拒绝(RuleConstant.CONTROL_BEHAVIOR_DEFAULT)方式。该方式是默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException。这种方式适用于对系统处理能力确切已知的情况下,比如通过压测确定了系统的准确水位时。
  • warm up(预热):冷启动(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。
  • 排队等待:匀速器(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式。需要设置将阈值模式设置为QPS才能生效。这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。

熔断:

 降级策略:QPS 大于等于 5

  • RT:平均响应时间(秒级)超出阈值
  • 异常比例:异常比例超过阈值(秒级)
  • 异常数:异常数量超过阈值(分钟级),时间窗口≥60s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值