服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
服务降级方式:
服务接口拒绝服务:无用户特定信息,页面能访问,但是添加删除提示服务器繁忙。页面内容也可在Varnish或CDN内获取。
页面拒绝服务:页面提示由于服务繁忙此服务暂停。跳转到varnish或nginx的一个静态页面。
延迟持久化:页面访问照常,但是涉及记录变更,会提示稍晚能看到结果,将数据记录到异步队列或log,服务恢复后执行。
随机拒绝服务:服务接口随机拒绝服务,让用户重试,目前较少有人采用。因为用户体验不佳。
持久层降级方式
数据操作动作 |
通过Cache工作 |
通过异步数据队列 |
增insert |
禁止 |
允许但不能有重复问题 |
删delete |
禁止 |
允许但不能有复合操作 |
改update |
禁止 |
允许只留最后结果 |
查query |
允许,若未命中问询mysql或其他持久层 |
走cache |
降级方式
直觉管理方式:运维人员可以指定哪些模块降级。
当服务器检测到压力增大,服务器监测自动发送通知给运维人员
运维人员根据自己或相关人员判断后通过配置平台设置当前运行等级来降级
降级首先可以对非核心业务进行接口降级。
如果效果不显著,开始对一些页面进行降级,以此保证核心功能的正常运行。
分级管理方式:运维人员无需关心业务细节,直接按级别降低即可。
当服务器检测到压力增大,服务检测自动发送通知给运维人员。
运维人员根据情况选择运行等级1~10.
各个应用根据自己的级别自动判断是否工作,如何拒绝
服务降级埋点的地方:
消息中间件:所有API调用可以使用消息中间件进行控制
前端页面:指定网址不可访问(NGINX+LUA)
底层数据驱动:拒绝所有增删改动作,只允许查询
前端页面:指定网址不可访问(NGINX+LUA)
底层数据驱动:拒绝所有增删改动作,只允许查询