APP客户端接口本地缓存,降低请求量和请求峰值,减少云资源成本

背景

静态信息:非实时有状态的数据

团课每天11点抢课,类似整点活动秒杀业务场景。
针对资源位、评价等静态信息在xx点高峰时进行缓存,达到降低请求量和请求峰值的目标。
在成本预算控制下,云资源成本和WAF都受限于请求峰值。
出于业务和数据安全考虑,公司希望接入阿里云的WAF,但一年价格和成本较高。

目标

APP本地缓存/前置缓存

  • 基于后端接口缓存配置响应,在APP端侧缓存接口的响应内容;
  • 【降本】从APP端侧降低接口的请求量,顺势减少容器等弹性资源成本,顺势降低使用WAF的成本
  • 【缓存效果】缓存命中率,与业务特征、用户的操作行为有关
  • 【缓存对象】服务端可降级的接口

客户端缓存方案

客户端-接口缓存

Content-Type: text/html; charset=utf-8
Cache-Control: max-age=300, private

1.缓存规则

客户端HTTP三方框架实现Cache-Control相关逻辑,并且根据参数内存缓存。

  1. 内存缓存机制,(安卓OkHttp是只能用磁盘缓存+内存缓存)
  2. 添加一个feature-整体开关整个缓存方案

2.缓存标识

缓存标识 == 接口签名

缓存标识请求全路径+参数的哈希值

后端接口缓存配置方案

接口缓存策略配置

  • 通过接口路径维度配置
  • 配置项: 缓存生效时间区间+持续时间
    • 缓存生效时间区间: [startTime, endTime], 每天重复
    • 持续时间: durationTime, 5m/5s
      • 最大值是5m,防止配置错误,影响业务
    • 生效状态开关

接口路径: com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew

接口缓存配置落地页

图片

前后端交互路径

接口签名=path+hash(所有参数)
前后端交互路径

Action

  • 全局开关控制
  • 梳理清楚所有缓存的实操点,如用户登出
  • 预演验证
  • 重复的用户占比30%,统计重复请求的占比
  • 团课详情页,精选评价和cms接口可缓存

缓存对象

【缓存对象】服务端可降级的接口

11点整的1秒峰值>3000+

每天峰值:2024-06-13 11:00:00 ~ 2024-06-13 11:00:01

根据业务日志分析业务请求特征

# 2024-06-13 **11:00:00** ~ 2024-06-13 **11:00:01**

* and header.lk-appv : "6.1.0" and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" and ("gcCoursedetailsbooks" or "gcFloat") | select count( distinct "header.X-devid" )

* and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" and ("gcCoursedetailsbooks" or "gcFloat")

* and api : "/com.xxx.cms.api.front.AdvertiseConfigFrontService/getAdvertiseConfigNew" 

2024-06-13 10:58:00 ~ 2024-06-13 11:02:00
日志条数:73,578
设备数:5870

实战案例

生产环境实战

设备数 == 人数

整体效果

粗略估算,每年为公司的云资源成本整体节省至少20万。

【缓存效果】11点整的1秒峰值,请求量下降了约x.x万,整体下降了20%

统计数据-效果图-略

【缓存效果】生效期间,请求量下降了x.x万+,整体下降了70-80%。(本地缓存命中率)

统计数据-效果图-略

用户端获取广告位

【缓存效果】11点整的1秒峰值,请求量下降了xx00+,整体下降了80%

【缓存效果】生效期间,请求量下降了x.x万+,整体下降了80%

获取当前教练的企业微信二维码

【缓存效果】11点整的1秒峰值,请求量下降了xx00+,整体下降了90%

【缓存效果】生效期间,请求量下降了x.x万+,整体下降了75+%

精选评价

【缓存效果】11点整的1秒峰值,请求量下降了xx00+,整体下降了75%

【缓存效果】生效期间,请求量下降了x.x万+,整体下降了70%

参考

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简放视野

深度思考,简放视野。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值