Springboot分布式项目优化策略

文章介绍了HTTP接口响应时间的优化方法,包括减少HTTP发送时间、服务器处理时间和传输参数时间。提出了通过精简参数、分析业务逻辑、批量操作、异步处理以及数据库和缓存优化等策略来提升系统效率和稳定性。特别提到了在批量插入时使用SqlSession的批处理以及利用Redis缓存减少数据库负载。
摘要由CSDN通过智能技术生成

目录

调优概念

http接口响应时间优化

http发送时间优化:

服务器处理时间优化:

(1)、具体分析业务逻辑来看哪些地方可以优化

(2)、减少IO次数和循环调用

(3)、拆分业务,采用异步形式

(4)、底层优化


调优概念

 调优是对系统性能进行优化的过程,可以提高系统的效率和稳定性。调优一般都是都是针对接口而言,比如http接口,dubbo接口等;一定是针对业务来的。

http接口响应时间优化

HTTP 接口的响应时间包括以下三个方面:

  1. HTTP 发送时间:指客户端发送请求到服务器的时间。

  2. 服务器处理时间:指服务器处理请求的时间,主要包括数据库查询、逻辑处理等。

  3. 服务器传输参数时间:指服务器将处理后的参数返回到客户端的时间。

实例:

http发送时间优化:

        在实际开发中,我们通常会使用实体类来传递参数,但是有些字段是无用的,这样会导致传递了无用的参数,从而降低系统性能。此时,我们可以定义一个新的类来接收参数,避免传递无用的参数。例如,例如在 Spring Boot 中定义 Param 和 VO 两个类,一个用于接收参数,一个用于输出结果。

服务器处理时间优化:

(1)、具体分析业务逻辑来看哪些地方可以优化

例如,在批量插入时,可以采用以下三种方式进行优化:

①.利用 for 循环进行操作:

for(int i = 0; i < list.size(); i++) {
    userMapper.insert(list.get(i));
}

②. 在 Mapper.xml 中利用 foreach 进行操作:

<foreach collection="list" item="item" index="index" separator=";">
    insert into user value(#{item.id}, #{item.name}, #{item.age})
</foreach>

③. 采用 sqlSession 去封装的批量插入:(性能最好)

SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
for(int i = 0; i < list.size(); i++) {
    mapper.insert(list.get(i));
    if (i != 0 && i % 1000 == 0) {
        sqlSession.flushStatements();
    }
}
sqlSession.flushStatements();
sqlSession.commit();
sqlSession.clearCache();

(2)、减少IO次数和循环调用

        当进行批量操作时,牢记减少IO次数可以显著提升系统性能。同时,应该避免循环调用其他服务,除非绝对必要。

(3)、拆分业务,采用异步形式

        对于复杂的业务逻辑,将其拆分成独立的模块,采用异步方式执行可以在保证准确性的情况下提高系统效率。这种模式可以避免阻塞线程池,从而提高整体系统的性能。

(4)、底层优化

        ①、数据库优化:

        数据库优化可以极大提高系统性能。可以针对特定的查询进行具体优化,例如:避免使用自己写的连表查询,减少多次IO等。此外,使用MyBatis Plus等ORM框架可以大大减少手写SQL的复杂性。

        ②、Redis缓存:

        缓存是优化系统性能的常见手段。使用Redis缓存可以大幅降低读写次数,提高系统的效率。

        ③、引入其他中间件:

        引入其他中间件如ES可以实现更复杂的查询,解决了模糊查询的缺陷。

模糊查询的弊端:比如我的书名为java并发教程,可以根据java查到,也可以根据教程查到,但是根据java教程就查不到了

        同时,将MySQL中的数据同步到ES中,可以有效减少数据库的负载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADRU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值