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

背景

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

针对资源位、评价等静态信息在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%

团课分享参数接口

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

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

约课规则接口

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

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

参考

  • FinOps Foundation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/737524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

头歌——机器、深度学习——手写体识别

第1关:神经网络基本概念 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 相关知识 为了完成本关任务,你需要掌握:1.神经网络基本概念。 神经网络基本概念 神经网络由输入层、隐藏层、输出层组成;…

安卓逆向经典案例—H5appXX运维

H5app的class不一定是android.webkit.WebView 也可能是腾讯X5内核或者是uc webview 殊途同归也要去hook webview的系统函数和可调式方法setWebContentsDebuggingEnabled。突破sign算法,输出协议和加密算法的作用是什么?分析c-sign值 在加密的位置下断点 …

爱心商城管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,企业管理,用户管理,论坛管理,商品管理,公告管理,用户捐赠 企业账户功能包括:系统首页,个人中…

2009年-2022年 地级市-环境污染处罚数据

环境污染处罚数据是环境保护领域中重要的信息资源,它记录了因违反环保法律法规而受到行政处罚或法律制裁的具体情况。这些数据对于提高公众的环保意识、促进企业采取环保措施以及推动环境治理具有重要作用。 数据内容概述 违法行为的主体:即受到处罚的…

【树形dp 换根法 BFS】2581. 统计可能的树根数目

本文涉及知识点 CBFS算法 动态规划汇总 图论知识汇总 树形dp 换根法 BFS LeetCode 2581. 统计可能的树根数目 Alice 有一棵 n 个节点的树,节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges 表示,其中 edges[i] [ai, bi] &#xf…

LoRaWAN在嵌入式网络通信中的应用:打造高效远程监控系统(附代码示例)

引言 随着物联网(IoT)技术的发展,远程监控系统在各个领域的应用越来越广泛。LoRaWAN(Long Range Wide Area Network)作为一种低功耗广域网通信协议,因其长距离传输、低功耗和高可靠性等特点,成为…

Apollo9.0 PNC源码学习之Planning模块(二)—— planning_component

前面文章: Apollo9.0 PNC源码学习之Planning模块(一)—— 规划概览 0 Planning代码框架速览 1 planning_component源码解析 modules/planning/planning_component/planning_component.h #pragma once#include <memory>#

在vue项目中集成cesium

首先创建一个新的vue项目 安装vite中cesium插件 https://github.com/nshen/vite-plugin-cesium 安装插件 npm i cesium vite-plugin-cesium vite -D配置插件 注释原有样式 修改代码 效果

04--MySQL8.0_JDBC

第一章 JDBC概述 之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系; 后来我们学习了数据库管理软件MySQL,可以方便的管理数据1。 那么如何将它俩结合起来呢?即…

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型&#xff1a;强引用、软引用、弱引用和虚引用 1、强引用&#xff08;Strong Reference&#xff09;2、软引用&#xff08;Soft Reference&#xff09;3、弱引用&#xff08;Weak Reference&#xff09;4、虚引用&#xff08;Phantom Reference…

【Docker】Docker操作容器命令

1、容器 1.1简介 容器镜像是一个软件的轻量级独立可执行软件包&#xff0c;包含运行它所需的一切&#xff1a;代码&#xff0c;运行时&#xff0c;系统工具&#xff0c;系统库&#xff0c;设置。不管环境如何&#xff0c;集装箱化软件都可以运行相同的Linux和Windows应用程序…

华为某员工爆料:偷偷跑出去面试,被面试官鄙视了。第一句话就问:华为淘汰的吧,35岁了,这个年龄在华为能混得下去吗?身体没啥毛病吧

“你都35岁了&#xff0c;难不成是被华为淘汰的&#xff1f;在华为混不下去了吧&#xff1f;身体没啥毛病吧&#xff0c;我们这体检可是很严的。” 近日&#xff0c;一位华为员工在朋友圈爆料&#xff0c;自己在面试时遭到了面试官的无理取闹和人身攻击&#xff0c;原因仅仅是因…

C语言中操作符详解(二)

OK&#xff0c;今天继续为诸君带来有关C语言中操作符的讲解 一 . 位操作符 C语言中的位操作符我相信大家并不陌生&#xff0c;我们在之前就已经接触过了一些 位操作符&#xff08;位操作符的操作数只能是整数&#xff09;&#xff1a; &#xff08;1&#xff09;& &…

头歌——机器学习——集成学习案例

第1关&#xff1a;基于集成学习模型的应用案例 任务描述 本次任务我们将会使用银行营销数据集&#xff08;来源于UCI数据集&#xff1a;UCI Machine Learning Repository &#xff09;,该数据集共45211条数据&#xff0c;涉及葡萄牙银行机构的营销活动&#xff0c;通过一些与…

idea http client GET 请求 报503错误

idea 提供的 http client 插件&#xff0c;在 GET 请求时总是 报503 的错误&#xff0c;但请求URL可以在浏览器中正常访问。 GET localhost:8080/student Response file saved. > 2024-06-20T160906.503.html 有一种原因跟本地配置的代理有关&#xff0c;如下图。如果在…

ubuntu22.04笔记: 更换为阿里源

没有按照LTS 版本 会遇到下面问题&#xff1a; 参考&#xff1a;https://zhuanlan.zhihu.com/p/691625646 Ubuntu 22.04代号为&#xff1a;jammy Ubuntu 20.04代号为&#xff1a;focal Ubuntu 19.04代号为&#xff1a;disco Ubuntu 18.04代号为&#xff1a;bionic Ubuntu …

winmail添加gmail和QQ邮箱(现已更新为outlook mail)

想在windows自带的邮件桌面应用里&#xff0c;不仅能访问outlook邮件&#xff0c;也能访问gmail邮件和QQ邮件的方法。 参考文章&#xff1a; Windows 10 的邮件怎么添加并同步 Gmail&#xff1f;​www.zhihu.com/question/53079836/answer/147669935?utm_psn178781450843941…

嘉楠勘智CanMV-K230的大小核如何操作

摘要&#xff1a;嘉楠勘智CanMV-K230的帮助文档、例子模型说明中&#xff0c;一直在提“大核&#xff0c;小核”&#xff0c;还提到将文件复制到小核并解压&#xff0c;然后在大核中操作&#xff0c;本文介绍一下这两个“核”如何操作。 所需的硬件&#xff1a;CanMV-K230-V1.1…

zkWASM:ZK+zkVM的下一站?

1. 引言 ZK技术具备极大通用性&#xff0c;也帮助以太坊从去中心化投资走向去信任化的价值观。“Don’t trust, Verify it!”&#xff0c;是ZK技术的最佳实践。ZK技术能够重构链桥、预言机、链上查询、链下计算、虚拟机等等一系列应用场景&#xff0c;而通用型的ZK协处理器就是…

论坛实现随机发帖的学习

1、badboy操作&#xff0c;录制发帖全过程&#xff0c;录制结果保存&#xff0c;生成为.jmx格式的文件 2、在Jmeter中打开该.jmx文件&#xff0c;重命名&#xff0c;便于了解步骤 3、生成结果树&#xff0c;查看所以步骤是否正确 4、实现随机发帖。。。。还没写完