亿级流量系统多级缓存架构8-服务降级

亿级流量系统多级缓存架构8-服务降级

在高并发场景下,当系统中的一些功能组件出现异常,无法继续提供服务器的时候,为了保证整体系统可用性,可以牺牲一部分功能依旧提供有损服务

SLA

服务等级定义 SLA(Service Level Agreement)是判定压测是否异常的重要依据。压测过程中,通过监控核心服务状态的 SLA 指标数据,您可以更直观地了解压测业务的状态。

SLA则是服务商与您达成的正常运行时间保证。

详见

https://help.aliyun.com/document_detail/111729.html?spm=a2c4g.11186623.3.3.19693e74AnPY9O

SLA 分为网络服务/云服务提供商的在线保证率和项目自身故障率

6个9

2个9 = (1-99%)X24 X 365 = 87.6 小时 = 3.65天

3个9 = (1-99.9%)X24 X 365 = 8.76 小时

4个9 = (1-99.99%)X24 X 365 = 0.876 小时 = 52.56分钟

5个9 = (1-99.999%)X24 X 365 = 0.0876 小时 = 5.256分钟

6个9 = (1-99.9999%)X24 X 365 = 0.00876 小时 = 0.5256分钟 = 31秒

AP

12306 强一致性

降级处理

兜底数据

默认值: 设置安全的默认值,不会引起数据问题,比如库存为0

静态值:请求的页面或api无法返回数据,提供一套静态数据展示,比如加载失败提示重试,或默认菜单

缓存: 缓存无法更新便使用旧的缓存

限流降级

当流量洪峰到达的时候,对于丢弃的用户可以提供友好的提示

比如提示用户当前繁忙稍后重试等

超时降级

对调用的数据设置超时时间,当调用失败,对服务降级

重试/自动处理

客户端高可用:提供多个可调用的服务地址

微服务重试:dubbo重试机制

API调用重试:当达到重试次数后,增加访问标记,服务降级,异步探测服务是否恢复。

WEB端:在服务不可用时,web端增加重试按钮或自动重试可以提供更友好的体验。

自动重试需设置重试次数和数据幂等处理

降级开关

在服务调用方设置一个flag,标记服务是否可用

存储在第三方,配置文件、数据库、redis、zookeeper中。

数据组装降级

多库/多维度组装JSON/XML时,如果有一些不重要的数据无法获取或数据出错,可以忽略继续。

爬虫和机器人

分析机器人行为:短时间连续操作,agent,行为轨迹、拖拽(模拟登陆/秒杀/灌水)

爬虫:引到到静态页或缓存页

读降级

在一个请求内,多级缓存架构下,后端缓存或db不可用,可以使用前端缓存或兜底数据

写降级

在cap原理和BASE理论中写操作存在于数据一致性这个环节,

降级的目的是为了提供高可用性,在多数的互联网架构中,可用性是大于数据一致性的。

所以丧失写入数据同步,通过上面的理论,我们也能勉强接受数据最终一致性。

高并发场景下,写入操作无法及时到达或抗压,可以异步消费数据/cache更新/log等方式

前端降级

当系统出现问题的时候,尽量让请求隔离在离用户最近的位置,避免无效链路访问

在后端服务部分或完全不可用的时候,可以使用本地缓存或兜底数据

在一些特殊场景下,对数据一致性要求不高的时候,比如秒杀、抽奖等可以做假数据

js降级

在js中埋降级开关,在访问不到达,系统阈值的时候可以避免发送请求

接入层

可以在接入层,在用户请求还没到达服务的时候,通过、Nginx + Lua、Haproxy + lua

过滤无效请求和服务降级

应用层降级

参考常老师项目中的springcloud

片段降级

页面中异步加载的数据,有一部分无法得到

js、css无法加载 -> 兜底 css

静态化处理

在活动前可以通过静态化技术,把原来需要调用多个动态接口的页面整体缓存下来保存成一个静态文件

当动态服务无法支撑的时候,降级为静态化服务

静态文件内尽量不去异步加载数据

静态文件包含可变内容,可以使用模板技术定时生成更新

提前预埋

APP 浏览器 js/css缓存大促前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值