项目性能优化

用4个方法,提升接口性能 | 多线程 | 数据库优化 | 缓存 | 异步与MQ_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1QG4y1g7QJ/?spm_id_from=333.788&vd_source=c75991e76531b6d1e567b05c728023c9

  1. 多线程

2.数据库优化

连表一一多表多次查询

冗余表字段 减少查询次数

建索引一一索引优化

事务控制一一缩小力度(事务控制)函数式解决 多线程事务 事务失效

3.读写分离 分裤分表

4.缓存

redis 缓存、分布式锁、数据库

内存 咖啡因、guava

需要数据预热

5.锁粒度

lock类

分布式锁:redis 需要等待时间 失效时间

finally 释放锁

6.异步
mq


接口性能优化笔记如下
1.接口中有串行的操作可以改成多线程并发操作提高接口响应速度(企业中实际用线程池)
2.数据库优化
(1)对于联表查询是一个非常耗时吃内存的操作,采用先查小表得到大表的拼接条件再进行大表的获取
(2)数据库表结构 适当加冗余字段减少查询次数 比如订单表和餐厅表 在订单表多加一个餐厅名称
(3)加索引,例如利用主键索引查询id ,给创建时间加普通索引,提高订单创建时间范围查询效率,特别需要注意索引失效场景
(4)声明式注解@Transactional控制加的粒度不要过大(可以缩小粒度抽出来函数或用java8函数式编程灵活解决问题),大事务可能会引发死锁,回滚时间长,并发情况下数据库连接池占满,锁等待,接口超时,db主从延迟等
(5)分库分表(用读写分离等),
3.拥抱缓存
用redis做缓存,以及一些内存缓存框架(跟随jvm内存)guava Caffeine Cache
4.锁和异步
锁:使用lock类控制锁的范围(比synchronized更加灵活),分布式锁,特别注意 获取锁时需要添加等待时间(不加可能会一直自旋)和失效时间(不加可能会自动续期 例如redission看门狗),一定要在finally释放锁

异步:日志可以异步写用Async,或系统间交互用消息队列 (可以保证消息可靠性 例如消费者消费失败了 消费队列还可以进行重发)


chatGPT:

提升接口性能的方法有很多,下面是几种常用的方法:

优化接口代码,减少不必要的运算和冗余代码。

分析接口所用到的数据,确保数据结构合理,尽量避免数据碎片化。

使用缓存技术,如果接口返回的数据不是实时数据,可以考虑使用缓存技术来减少数据库访问次数。

调整服务器硬件配置,如果服务器性能不足,可以考虑更换更高性能的硬件。

使用更高效的数据库,如果接口的性能瓶颈在于数据库,可以考虑更换更高效的数据库系统。

对接口进行单元测试和性能测试,通过测试来发现性能瓶颈并进行优化。

分析接口调用情况,如果接口有大量的重复调用,可以考虑使用消息队列或者事件驱动的方式来解决。

接口聚合和熔断,如果接口依赖于其他接口,可以考虑把多个接口聚合成一个,减少网络调用次数;如果接口容易出现故障,可以考虑使用熔断技术来避免故障的蔓延。

使用负载均衡,如果接口需要承载大量的并发请求,可以考虑使用负载均衡技术来提高系统的吞吐量。

注意接口安全,避免恶意攻击导致接口性能下降,建议对接口进行安全测试,并采取必要的防护措施。

使用静态资源服务器,如果接口返回的内容包含大量的静态资源,可以考虑使用独立的静态资源服务器来加速资源的加载。

优化接口的网络传输,例如使用压缩技术来减少数据的大小,或者使用 CDN 来加速数据的传输。

使用异步处理技术,如果接口需要执行大量的耗时任务,可以考虑使用异步处理的方式来避免阻塞接口的响应。

对接口进行分布式部署,如果接口需要承载大量的并发请求,可以考虑把接口部署到多台服务器上,通过负载均衡技术来实现水平扩展。

总之,要提升接口性能,需要从多个方面入手,综合考虑各种因素,并不断优化和改进,才能达到最优的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值