高并发 - 服务降级与服务熔断

为什么要服务降级

  1. 假设一个服务器1秒最大只能并发处理5W条请求,如果用户并发请求6万,那么多的1万请求在1秒内多出1W个cpu时间切片,这些cpu时间切片占用了1秒的资源,导致前面5W请求不够资源,这个时候大家都要花费时间在等待资源的时间上,如果这个时候后续请求都是超过5W,那么前面的请求来不及处理,后面的请求不够资源,找出cop切片越来越多,没有请求获取的时间资源越来越少,最终前面的请求处理不完,后面的请求一直不断,数据库连接不释放,数据库崩了–》服务崩了,请求分配给其他服务器(服务集群)–》集群崩了。

一 服务降级

服务器压力过大的时候,限制访问过大的接口,返回数据提示服务器繁忙等信息,比如12306抢票

1返回数据类型

  1. 提示服务繁忙,跳转静态页面
  2. 会提示稍晚能看到结果, 用户的请求放到异步队列延迟处理。

2降级要做到使用配置中心做成可在线配置调整。

二 服务熔断

如果某个目标服务调用慢或者有大量超时,此时,停止该服务的调用,对于后续调用请求,不在处理,直接返回服务挂了,这样快速释放资源。如果目标服务情况好转则恢复调用。
1 . 好处是目标服务不可用的时候,不会对其他服务的功能造成影响,因为其他服务调用获取的信息是该服务不可用

1为什么要服务熔断

1 . 目标服务请求调用慢,其他服务调用目标服务的时候会卡在这里,当大量请求目标服务的时候会造成大量请求堵塞,后面请求不断,最后雪崩。

1熔断模块

  1. 熔断请求判断机制算法:使用无锁循环队列计数,每个熔断器默认维护10个bucket,每1秒一个bucket,每个blucket记录请求的成功、失败、超时、拒绝的状态,默认错误超过50%且10秒内超过20个请求进行中断拦截。
  2. 熔断恢复:对于被熔断的请求,每隔5s允许部分请求通过,若请求都是健康的(RT<250ms)则对请求健康恢复。
  3. 熔断报警:对于熔断的请求打日志,异常请求超过某些设定则报警

三降级与熔断对比

  1. 目的: 都是防止系统的整体缓慢甚至奔溃而采用的技术手段。
  2. 表现: 给用户一种当前服务不可用或者不可达的感觉
  3. 粒度: 降级一般作用到接口,熔断一般作用到模块。
  4. 自治: 基本都是靠系统达到某一临界条件时,实现自动的降级与熔断 、
  5. 触发原因: 服务器或者接口压力过大。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值