背景

主调模块,被调模块,两种模块之间会有有向调用,要记录每对模块的每个有向调用每秒的调用量到数据库里,前端展示他们最近(一般最近一周/一天)的调用量曲线(粒度为分钟)。

实现

数据库里存 主调模块-被调模块 当作key,再存对应调用量数据的COS文件路径(需要查两次)。

COS文件按周拆分,告警分析是按周为一个周期的,每个COS文件最开头存了一个基数(就是一周第一秒的调用量值),后续就只用存差值【根据基数和差 值计算出调用量实际值】(节省1/3的空间),本来每次都要存几位数字(百万左右),现在只需要存2-3位(百左右)。

当上游通过消息队列推送过来的调用量数据中出现同一秒有两个值的数据时,上报错误并做以下兜底:1、当两个调用量数值相等时认为是发生了重复记录,取其中一个当作这一秒的调用量数值;2、当数值不同时将两个数值相加当作这一秒的调用量数值

COS文件是一个索引文件

通用性能要求:后端单次查询响应需要在1000ms内

​将活动期间商户API调用量数据写入COS文件,并返回文件路径。​添加两种告警,一是容量保障商户API无法查询到的告警;二是同一商户API场景不唯一的情况告警。

目前商户API调用量数据依赖上游商户CGI调用量数据;目前仍存在商户CGI数据缺失的情况,导致无法获取商户API调用量数据。