无分页情况下的接口优化

一,功能背景

1,根据商家门店的历史营收,预测未来的营收

2,预测规则由用户设置,对部分或全部的数据求平均、最小值、中位数、指定不同范围数据的系数加权

3,规则地图由规则格子组成,门店-月份组成规则格子,比如superchong店,1-12月组成12个格子,当门店数量比较多的时候,如300家门店,规则地图会很大,且无分页,数据平铺。

4,规则取数范围较为复杂,可能跨店跨月份,比如superchong1门店-1月的规则,是取superchong1-100店的5-10月数据进行求平均。

二,方案设计

1,表:门店-规则关系表、规则表、门店-月份计算结果表

2,规则地图查询接口,查询门店-规则关系表关联规则表,同时获取历史营收数据,计算预估营收

3,用户点击确认方案,把数据落近门店-月份计算结果表

三,优化

规则地图查询接口

1,并行查询数据库

  规则地图关联、历史营收数据一次性获取数据比较大,数据量在3.5k条数据,数据库响应时间约700ms,同步获取时间叠加,选择用completableFuture,注意指定线程池,

在使用之前,用future.get(time)来保证获取到结果,也可以同countdownLatch阻塞。

2,较少字段的查询

  历史营收表中有10+个字段,规则地图使用的只有三个:门店-月份-营收值,获取全部字段要700ms,只获取三个字段,大约400ms

3,并行计算预估营收

  使用list.parallelstream,每一个格子并行计算,可以使用线程池执行,如completableFuture.supplyAsync(),经测试,线程池领先幅度不超过5%,使用并行流代码更为简介,所以采用了并行流的方式

4,效率测试

80%的场景是100家门店以下,总耗时约查库数据准备80ms+并行计算30ms=110ms

300家门店,总耗时约700ms+2.4s=3.1s,比优化前16s,下降了80%

相关推荐

  1. 情况接口优化

    2023-12-13 10:08:26       103 阅读
  2. 面试——深度问题优化

    2023-12-13 10:08:26       41 阅读
  3. MySQL深优化

    2023-12-13 10:08:26       39 阅读
  4. 不停止业务情况优化 Elasticsearch Reindex

    2023-12-13 10:08:26       61 阅读
  5. vb.net环境sqlitehelper解决

    2023-12-13 10:08:26       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 10:08:26       106 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 10:08:26       116 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 10:08:26       95 阅读
  4. Python语言-面向对象

    2023-12-13 10:08:26       103 阅读

热门阅读

  1. C9900-H416的使用方法

    2023-12-13 10:08:26       74 阅读
  2. 顺序表

    顺序表

    2023-12-13 10:08:26      90 阅读
  3. ClickHouse中select final和optimize table final的区别

    2023-12-13 10:08:26       82 阅读
  4. 百度爬虫

    2023-12-13 10:08:26       80 阅读
  5. 12月11日总结

    2023-12-13 10:08:26       75 阅读
  6. 12月8日总结

    2023-12-13 10:08:26       61 阅读
  7. 每日博客

    2023-12-13 10:08:26       80 阅读
  8. 1213

    2023-12-13 10:08:26       83 阅读
  9. 阅读笔记《有效需求分析》2

    2023-12-13 10:08:26       88 阅读
  10. 12月13日总结

    2023-12-13 10:08:26       81 阅读
  11. 12月12日总结

    2023-12-13 10:08:26       77 阅读
  12. 每日总结

    2023-12-13 10:08:26       76 阅读
  13. Linux部署mosquitto及其配置

    2023-12-13 10:08:26       79 阅读
  14. pandas 遍历

    2023-12-13 10:08:26       74 阅读
  15. Qt打包

    2023-12-13 10:08:26       84 阅读
  16. 12.12总结

    2023-12-13 10:08:26       82 阅读
  17. get请求数组参数,格式转换

    2023-12-13 10:08:26       99 阅读
  18. 【异步】CompletableFuture

    2023-12-13 10:08:26       78 阅读