框架原理服务端其他

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

2018-11-11  本文已影响140人  达小谢

概述

  对于在外工作的小伙伴,或多或少都经历过12306抢票,高峰时候明明还有票可是查询列表为空,等高峰一过列表又正常了。后台可能采用了服务降级处理,在高峰时候并没有将错误信息返回给用户,而是返回了一个空的列表。

服务降级

  当服务器压力剧增的时候,根据当前业务情况以及流量,对一些服务和页面有策略的降级,以此缓解服务器资源的压力以保障核心任务的正常运行,同时也保证了大部分客户能得到正常的响应。

  在一般稍微大一点的互联网公司基本上都会有一个配置中心的角色,通常由配置服务和代理和应用程序组成,Agent会定期的或者实时的接受配置中心的变更,将配置信息写入本地文件。此时SDK会同步代理的配置以达到同步配置中心的数据。当然也可以没有Agent这一角色,SDK直接监听配置中心的变更。
  拥有了这一架构之后,对于每个应用程序的请求或者数据库都可以通过配置中心来进行降级与切换。当然了如果目前所处环境没有这一条件也可以使用单纯的DB来保存 key-value来简易实现这一功能。

服务熔断(过载保护)

  对于炒股的同学,熔断这个词可能并不陌生,它是指当某一股值波浮达到某一个点后交易所为了控制风险,采取一些暂停交易的措施。响应的如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

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

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

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

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

降级与熔断对比

共性
区别
服务降级需要考虑的问题
上一篇 下一篇

猜你喜欢

热点阅读