项目接口性能优化方案

这篇具有很好参考价值的文章主要介绍了项目接口性能优化方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🧑‍💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:项目实战经验


项目接口性能优化方案,项目实战经验,性能优化,分布式,后端


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。链接>>>>>>《SpringBoot实战》

🌟前言

身为一个合格的开发者,在系统开发时不仅仅是要考虑功能的实现,还要考虑接口性能以此来提升用户体验、节省硬件成本。本文总结了系统开发中常见的接口性能优化手段。


🌟异步思想

在这之前先介绍一下同步和异步

  • 同步:用户请求时,逻辑中所有的操作完成之后才返回给用户信息。
  • 异步:用户请求时,逻辑中的部分操作可以另辟蹊径去完成,减少用户等待时间。

举个例子,比如说在采集用户日志时,见下图的同步操作:

项目接口性能优化方案,项目实战经验,性能优化,分布式,后端
在此接口经过一系列复杂逻辑操作耗时很长,那么怎么优化呢?是不是经过最后一个逻辑处理就可以响应给用户信息?于是可以采用异步思想的去解决,常见的解决方案据我经验有两类:

  1. 编程语言工具:Java中的Future和Callable、CompletableFuture、Spring框架中的@Async。
  2. 中间件:消息队列中间件。比如说针对上述可以采用kafka进行异步。至于采用何种MQ根据业务需求选择即可。
    项目接口性能优化方案,项目实战经验,性能优化,分布式,后端

🌟池化思想

在开发中见识过的比如说对象、连接、线程(统称为资源)都可以进行池化,以此来提升系统资源利用率。在优化时可以接口类型对资源进行池化,我在这里总结了两类:

  1. 网络请求:在对接第三方接口时需要发起http请求或者数据库连接,这时候我们可以采用对连接进行池化。比如基于Http实现请求调用常见的有HttpClient、OkHttp、Restemplate,我们可以对其进行池化提升接口性能。
  2. IO请求或者CPU操作:接口在涉及IO请求、CPU调度时就可以对内存或者线程进行池化,也就是我们常用的线程池ThreadPoolExecutor、ThreadPoolTaskExecutor(spring中)。

🌟缓存思想

在系统开发中缓存一共有两类:

  1. 本地缓存:
    • HashMap-线程非安全
    • ConcurrentHashMap-线程安全
    • LinkedHashMap-非线程安全
    • MyBatis二级缓存
    • 缓存框架:Guava、Caffeine
    • Nginx缓存
  2. 分布式缓存:
    • Redis
    • Memcached

注意:在使用分布式缓存时要注意缓存一致性问题。


🌟数据库优化

  1. SQL参数调整
    • innodb_buffer_pool_size:增大该参数值可以增加InnoDB存储引擎的缓冲池大小,提高查询性能。
    • max_connections:增大该参数值可以增加数据库的最大连接数,以支持更多的并发查询。
    • wait_timeout:减小该参数值可以释放空闲连接的资源,以提高连接的利用率。
    • slow_query_log:启用慢查询日志,以记录执行时间超过阈值的查询语句,便于优化。
    • log_queries_not_using_indexes:启用该参数可以记录未使用索引的查询语句,用于优化查询语句。
  2. 索引优化
  3. 数据库表结构优化
  4. SQL语句优化
  5. 分库分表优化(数据量大)

🌟组合优化

组合优化就是采用上述几种的组合了,或者说可以提高硬件性能。


🌟写在最后

有关于项目接口性能优化方案到此就结束了。感谢大家的阅读,就我目前个人经验而言只能提供这几种思路了,希望有大佬可以在评论区做出补充!


项目接口性能优化方案,项目实战经验,性能优化,分布式,后端文章来源地址https://www.toymoban.com/news/detail-776559.html

到了这里,关于项目接口性能优化方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式系统架构设计之分布式数据存储的安全隐私和性能优化

    在前面分布式系统部分,有对安全性做过介绍,如前面所述,在分布式系统中,确保系统的安全性和隐私是至关重要的。安全性关注系统的防护措施,而隐私是关注用户的个人信息保护。 身份认证:确保用户和系统组件的身份是合法的,通过通过密码、令牌或证书实现 授权

    2024年02月02日
    浏览(43)
  • 实战经验:IIS网站服务器性能优化攻略

    Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一个像模像样的Web站点来,但配置、优化 IIS的性能,使得网站访问性能达到最优状态却不是一件简单的事情,这里我就介

    2024年01月19日
    浏览(43)
  • Jmeter性能实战之分布式压测

    1、JMeter分布式测试时,选择其中一台作为调度机(master),其它机器作为执行机(slave)。 2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。 3、执行完成后,slave会把结果回传给master,m

    2024年02月07日
    浏览(32)
  • 高性能分布式对象存储——MinIO实战操作(MinIO扩容)

    MinIO的基础概念和环境部署可以参考我之前的文章:高性能分布式对象存储——MinIO(环境部署) 官方文档:https://docs.min.io/docs/minio-admin-complete-guide.html MinIO Client (mc) 为 UNIX 命令(如 ls、cat、cp、mirror、diff、find 等)提供了现代替代方案。它支持文件系统和兼容 Amazon S3 的云存

    2023年04月26日
    浏览(47)
  • 分布式计算中的大数据处理:Hadoop与Spark的性能优化

    大数据处理是现代计算机科学的一个重要领域,它涉及到处理海量数据的技术和方法。随着互联网的发展,数据的规模不断增长,传统的计算方法已经无法满足需求。因此,分布式计算技术逐渐成为了主流。 Hadoop和Spark是目前最为流行的分布式计算框架之一,它们都提供了高

    2024年01月23日
    浏览(38)
  • (四)库存超卖案例实战——优化redis分布式锁

    在上一节内容中,我们已经实现了使用redis分布式锁解决商品“超卖”的问题,本节内容是对redis分布式锁的优化。在上一节的redis分布式锁中,我们的锁有俩个可以优化的问题。第一,锁需要实现可重入,同一个线程不用重复去获取锁;第二,锁没有续期功能,导致业务没有

    2024年02月07日
    浏览(32)
  • 一个注解解决分布式锁和接口幂等性,springboot 实战 。强到离大谱

    如今基本上都是分布式、多节点时代,我们业务代码中避免不了需要使用分布式锁。 admin4j-lock 为我们提供分布式锁解决方案。支持 redisson 和 zookeeper 分布式锁 支持redisson分布式锁和zookeeper 分布式锁 支持可重入锁 支持读写锁 支持红锁 redLock 支持一个注解解决分布式锁问题

    2023年04月26日
    浏览(33)
  • 【项目实战】分布式计算和通信框架(AKKA)入门介绍

    Akka是一个用于构建高并发、分布式、可容错、事件驱动的应用程序的工具包和运行时。它基于Actor模型,提供了一种高效的并发编程模型,可以轻松地编写出高并发、分布式、可容错的应用程序。Akka还提供了一些常用的组件,如路由、集群、持久化等,可以帮助开发人员更加

    2024年02月08日
    浏览(38)
  • (实战)docker-compose部署分布式日志方案EFK(Elasticsearch+Fluentd+Kibana)

    目录 背景 技术架构 部署安装 环境准备 配置Logback并模拟产生日志 制作fluentd镜像 运行docker-compose 效果展示         在现代的软件开发和运维领域,监控和日志管理是至关重要的任务。随着应用程序规模的扩大和分布式系统的普及,有效地跟踪和分析日志数据成为了挑战

    2024年02月03日
    浏览(29)
  • 传统项目基于tomcat cookie单体会话升级分布式会话解决方案

    传统捞项目基于servlet容器 cookie单体会话改造分布式会话方案 ##引入redis,spring-session依赖 ##修改配置文件 ##启动类加入EnableRedisHttpSession注解 ##原理 ##spring自动配置spring.factories ##生成SessionRepositoryFilter过滤器对象 ##使用包装的SessionRepositoryRequestWrapper的request   SessionRepositoryResp

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包