性能优化方案及思考

简介: 周末闲暇在家,朋友让我帮忙优化一个接口,这个接口之前每次加载都需要40s左右,经过优化将性能提了10倍左右;又加了缓存直接接口响应目前为300ms左右,于是将自己的优化思路整理总结一下

一、背景介绍


周末闲暇在家,朋友让我帮忙优化一个接口,这个接口之前每次加载都需要40s左右,经过优化将性能提了10倍左右;又加了缓存直接接口响应目前为300ms左右,于是将自己的优化思路整理总结一下


二、思路&方案


  • 1.分析需求,梳理业务流程,明确执行范围边界;绘制当前业务调用图
  • 2.将边界地方加入时间消耗,查看需要优化的地方
  • 3.绘制优化后的业务调用图
  • 4.进行代码的调整
  • 5.测试验证


三、过程


  • 1.如下是分析的业务调用图


7256267fb6954e5aa709a5de83d496c0.png


  • 2.如下是边界加入时间消耗的执行结果


9e9849a5b7944e62affa4a090f439cc5.png


  • 3.如下为优化后的业务终版图(通过线程池、多线程并发爬取数据)


01e7d55f05514ed989fb97b4ca9783dd.png


  • 4.进行代码调整(初步优化,只放了自己调整的核心内容;和终版图还不太一致)


060c7c95ea3f462f93584b73124f916d.png


  • 5.测试验证(爬取和加载还未隔离的耗时结果)


2da9f460a92e4d98a08920757a93c27a.png


  • 6.加入缓存之后基本就达到了300ms(当然针对于这个时间还可以优化,思路就是将可以提前处理的内容再进行预制处理)


四、总结


  • 1.做事情之前一定要先梳理清楚、画好图,对照图给自己或者别人讲解一下
  • 2.根据业务需求,合理"压榨"cpu资源(使用多线程,并且要交给线程池去管理避免由于线程过多导致cpu时间都消耗在任务切换上)
  • 3.使用redis的rightPushAll方法的时候,不会根据value值去重,需要先删除key键对应的值再增加
  • 4.缓存其实也是数据分层的一种实现方式


五、升华


通篇总结下来,其实就是运用了预制和分治的思想;另外,在数据存储层面可以通过不同业务提供不同数据层级的数据以保证访问效率,还可以保证数据一致性

相关文章
|
Java Sentinel
【熔断限流组件resilience4j和hystrix】
【熔断限流组件resilience4j和hystrix】
427 0
|
Dubbo Java 应用服务中间件
Dubbo第二讲:深入理解dubbo分布式服务框架/负载/容错/调优/高可用/dubbo网关/面试/技术选型
Dubbo第二讲:深入理解dubbo分布式服务框架/负载/容错/调优/高可用/dubbo网关/面试/技术选型
653 0
|
API 数据安全/隐私保护 Python
不到 20 行 Python 代码即可制作精美证件照
不到 20 行 Python 代码即可制作精美证件照
359 1
不到 20 行 Python 代码即可制作精美证件照
|
Kubernetes Nacos 微服务
微服务注册与发现的原理与实现
微服务注册与发现的原理与实现
|
安全 Java 开发者
Java中的Path类使用详解及最佳实践
Java中的Path类使用详解及最佳实践
|
小程序 JavaScript 前端开发
微信小程序如何控制元素的显示和隐藏
微信小程序如何控制元素的显示和隐藏
|
Unix
AIX 配置NFS记要
AIX 配置NFS记要
265 0
|
Java 缓存 Linux
如何回答性能优化的问题,才能打动阿里面试官?
阿里妹导读:日常工作中,我们多少都会遇到应用的性能问题。在阿里面试中,性能优化也是常被问到的题目,用来考察是否有实际的线上问题处理经验。面对这类问题,阿里工程师齐光给出了详细流程。来阿里面试前,先看看这篇文章哦。
21565 2
如何回答性能优化的问题,才能打动阿里面试官?
|
存储 机器学习/深度学习 分布式计算
Hadoop学习笔记(HDP)-Part.12 安装HDFS
本系列为HDP大数据平台部署实战指南,涵盖HDFS、YARN、Hive等核心组件安装配置,详解Ambari集群搭建、Kerberos安全认证及高可用实现,助力快速构建企业级大数据环境。
701 0
|
缓存 负载均衡 算法