• Web业务系统常见性能优化手段


    1,同步处理变成异步处理

         比如可以利用mq等中间件,将部分业务进行异步处理

    2,多线程处理

         一般业务都是有IO操作的(数据库交互),可以利用多线程并发处理多个任务

    3,批处理

        有大批量的数据写入时,可以把每500条数据当作一个批次处理,减少与db交互次数。

        核心就是减少for循环的次数

    4,选择合适的数据库

         一般来说,代码的指令执行很快,业务系统一般都要操作数据库,因此性能的瓶颈点,取决于使用的数据库,如果随机读写多可以使用mysql,复杂的数据分析(很多join)可以使用postgresql

    5,sql优化

         关系型数据库要建立合适的索引,编写sql语句时,要符合该数据库的索引执行原理

    6,增加服务器个数

        整个系统的处理,可能是由于服务器的个数不够,导致请求排队,适当增加服务器个数。

       现在很多系统都是部署在k8s上,自动扩容应该比较简单。

    7,提高数据库配置

         增加服务器个数后,接口还是慢,那可能就是数据库压力太大了。观察后,先提升数据库配置,比如把2h4g 调整到 4h8g,再观察观察。

    8,数据库分库分表

        常规业务不会涉及到上亿的数据,但是如果未来的数据可能会增长到这个级别,就可以分库分表了

    9,使用缓存

         在性能要求很高,但是又频繁读取数据库的时候,可以考虑使用缓存。

        建议:关于缓存一致性问题,怎么做都是无法保证,往往最简单的解决方案最不容易出错。业务系统设计的时候,不应该花大量的代价去思考怎么解决极难解决的技术问题,而是思考出了问题该怎么办。

    10,业务拆分

          很多时候,性能的根源也可能是业务涉及的不合理,把很多功能柔在一起,如果你能想到更好的解决方案,可以给产品提,解决性能的最终办法,就是解决来源。

    写在最后:业务代码主要保证逻辑清晰,功能正确,不要为了性能,而写出晦涩难懂的代码,当然也得避开嵌套的for循环。

        

       

  • 相关阅读:
    基于 SE (2)-XYZ 约束的地面车辆视觉-轮速计定位与建图
    大话游戏循环Game Loop——Python&C++
    【DTEmpower案例操作教程】智能数据挖掘
    001:vue3 实现自定义指令v-copy复制
    74.C++ STL stack容器
    设计模式-代理模式
    驾校预约平台
    机器学习之机器如何学习
    Vue 动态设置css伪元素content的值,解决不渲染和渲染为数字的问题
    SpringBoot+ECharts+Html 地图案例详解
  • 原文地址:https://blog.csdn.net/qq_29231037/article/details/133359496