Dashboard实时统计遇到的坑以及如何爬过去的

这个坑困了一天多,记录一下做个分享。

 

在dashboard中大部分情况下数据需要记在一张统计表中,跑一个定时任务刷新表中数据,以便于dashboard直接展示。但由于种种原因,有部分dashboard元数据不适合记录在dashboard微服务,而且数据量不大,只需要实时统计。

需求:统计即将超出承载能力的商家。

背景:商家关联采购单,采购单明细,采购能力表,需要根据单量、sku总数、采购总价三个限制维度(每个维度的统计时间段不同)统计,即在规定时间段内该供应商的采购单量、规定时间段内该供应商的sku总量、规定时间段内供应商的采购总价是否超出限制。

一轮代码:

由于每个供应商的每个维度的每个统计时间段可以不同,只能

1.先查出所有供应商,遍历供应商

2.根据供应商编号查出供应商对应的维度限制(数量限制以及时间段限制),每个供应商对应三条数据

3.根据供应商编号以及各维度的限制时间段查出所有符合条件的采购单以及明细(需要查三次),统计出需要的三个值(单量、sku总数、采购总价)

4.比较三个值与供应商的限额对比,算出最高的比例。

上述的实现方案,500左右的供应商,几万的采购单,直接导致了接口卡死。大家有想法可以一起交流

 

二轮代码优化:

优化一:因为并不是所有供应商在固定时间段内都有供货,就想办法缩小供应商的范围

优化二:避免在for循环中进行数据库操作,在for循环外层查出数据,分好组

优化三:过滤掉供应商限制时间为0的数据,为0是初始化产生的数据。不在统计范围

结果:半年内的采购单统计数据,平均请求时间在1秒,满足需求。有问题欢迎讨论!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值