1,同步处理变成异步处理
比如可以利用mq等中间件,将部分业务进行异步处理
2,多线程处理
一般业务都是有IO操作的(数据库交互),可以利用多线程并发处理多个任务
3,批处理
有大批量的数据写入时,可以把每500条数据当作一个批次处理,减少与db交互次数。
核心就是减少for循环的次数
4,选择合适的数据库
一般来说,代码的指令执行很快,业务系统一般都要操作数据库,因此性能的瓶颈点,取决于使用的数据库,如果随机读写多可以使用mysql,复杂的数据分析(很多join)可以使用postgresql
5,sql优化
关系型数据库要建立合适的索引,编写sql语句时,要符合该数据库的索引执行原理
6,增加服务器个数
整个系统的处理,可能是由于服务器的个数不够,导致请求排队,适当增加服务器个数。
现在很多系统都是部署在k8s上,自动扩容应该比较简单。
7,提高数据库配置
增加服务器个数后,接口还是慢,那可能就是数据库压力太大了。观察后,先提升数据库配置,比如把2h4g 调整到 4h8g,再观察观察。
8,数据库分库分表
常规业务不会涉及到上亿的数据,但是如果未来的数据可能会增长到这个级别,就可以分库分表了
9,使用缓存
在性能要求很高,但是又频繁读取数据库的时候,可以考虑使用缓存。
建议:关于缓存一致性问题,怎么做都是无法保证,往往最简单的解决方案最不容易出错。业务系统设计的时候,不应该花大量的代价去思考怎么解决极难解决的技术问题,而是思考出了问题该怎么办。
10,业务拆分
很多时候,性能的根源也可能是业务涉及的不合理,把很多功能柔在一起,如果你能想到更好的解决方案,可以给产品提,解决性能的最终办法,就是解决来源。
写在最后:业务代码主要保证逻辑清晰,功能正确,不要为了性能,而写出晦涩难懂的代码,当然也得避开嵌套的for循环。