服务降级,服务熔断,服务限流

服务降级nginx

概念:服务降级,当服务器压力剧增的状况下,根据当前业务状况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。算法

  • 服务接口拒绝服务:页面能访问,可是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。
  • 页面拒绝服务:页面提示因为服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。
  • 延迟持久化:页面访问照常,可是涉及记录变动,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行。
  • 随机拒绝服务:服务接口随机拒绝服务,让用户重试,目前较少有人采用。由于用户体验不佳。

服务熔断
若是某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。若是目标服务状况好转则恢复调用。服务器

熔断设计 
三个模块:熔断请求判断算法、熔断恢复机制、熔断报警异步

(1)熔断请求判断机制算法:使用无锁循环队列计数,每一个熔断器默认维护10个bucket,每1秒一个bucket,每一个blucket记录请求的成功、失败、超时、拒绝的状态,默认错误超过50%且10秒内超过20个请求进行中断拦截。设计

(2)熔断恢复:对于被熔断的请求,每隔5s容许部分请求经过,若请求都是健康的(RT<250ms)则对请求健康恢复。日志

(3)熔断报警:对于熔断的请求打日志,异常请求超过某些设定则报警接口

服务限流
限流模式主要是提早对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,再也不调用后续资源。
 队列

相关文章
相关标签/搜索