为了减少接口的响应时间,有哪些优化措施?(可以从架构、代码等各个角度谈)?

我们在开发过程中,当然是希望自己项目接口的响应时间越短越好,至少我看着自己开发出来的代码,都是毫秒级的响应,会有一种自豪感;那么我们项目做了哪些优化,和大家分享分享。

优化代码

先从小处着手,代码写的好坏,直接影响到接口的响应速度;当然这里也不可能展开详谈每一行代码怎么写,主要还是说一下措施:

  • 代码规范:我经常会以自己的标准去衡量其他开发人员代码的好坏,虽然我也不是什么大牛,但毕竟做了十多年的开发,所以很多时候组内年轻人的代码,在我眼里都是不合格的,为了短时间内提升他们的代码水平,只能制定详细的代码规范让他们去遵守;

  • 项目级的处理方案:有些公共的功能,并不需要每个开发去写代码,比如异常处理,直接往上抛,会有统一的代码捕捉异常进行处理的。

  • 集体Code Review还是有必要做的,一方面起到一个威慑的作用(大部分人都好面子,如果自己写的代码太烂被大家看到,也会不好意思,所以写代码的时候会小心一些),另外确实可以让开发人员取长补短。

缓存

缓存很重要,所以单独拿出来说。

  • 出参入参直接缓存:某些场景下,是可以直接把入参作为key,出参作为value,直接缓存起来的,比如放到Redis中;我们有个项目是做费率计算的,需要根据入参查询费率表,并有大量的计算操作,这种场景有两个特点:一是费率信息不会改变,二是计算复杂费时,这个场景就非常适用于出参入参直接缓存(出参=计算结果)。

  • 字典类型的数据,可以静态化后放入内存或第三方缓存中,并定时刷新缓存或做缓存失效的设置。

  • 提前做数据的整合和加工:如果一个接口返回的数据需要几张表关联后才能提供,如果可以的话,尽量提前把这个关联做好;真正接口查询的时候,只查询关联后的结果就可以了。

  • 总之,能查询缓存的话,尽量不要直接查询数据库。

接口拆分

设计和代码一样重要,甚至在我看来,设计比敲代码更重要;所以如何设计一个接口,是非常重要的(通常要全盘考虑):

  • 我见过这样的接口,号称万能接口,只对外提供一个接口,根据传入参数的不同,后面的业务逻辑也不相同,我是非常反感这样的做法。

  • 垂直拆分:把一个庞大的接口,拆分成N个独立的小接口,每个接口可以独立部署、维护、迭代;但是接口的【大小】,是很考验开发人员(架构)的。

  • 水平拆分:一方面把接口部署多套,前面挂负载均衡,这是水平拆分的一种;另外一种水平拆分,是将接口中的业务逻辑拆分后并行处理,也是可以减少接口的响应时间的。

为了减少接口的响应时间,有哪些优化措施?(可以从架构、代码等各个角度谈)?相关推荐

  1. 将一个接口响应时间从2s优化到 200ms以内的一个案例

    一.背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧- 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 . 二.步骤 2.1 定位 定位性能 ...

  2. Java实现elastic中服务接口性能指标统计(接口QPS、接口99响应时间等)并存入表

    近期需要对线上A服务接口进行健康度监控,即把A服务各个接口每天的性能指标进行统计并写入库表,便于对接口通过周期性数据进行全面分析及接口优化. 据调研了解,有2种解决方案可行: 1)目前服务接口请求信息 ...

  3. 支付系统接口性能压力测试TPS优化之路

    支付系统接口性能压力测试TPS优化之路 郭柏雅 本文案例是我们品课学院在银行系统性能测试第一个案例,由发生至解决,通过对业务逻辑的认知.测试环境的了解.测试脚本的开发.服务的监控分析优化.操作系统的监 ...

  4. Fiddler抓包查看接口的响应时间

    一.Fiddler抓包查看接口的响应时间 1.需要在每个接口后面直观查看响应时间,不用看右侧Statistics查看Overall Elapsed响应时间 上网百度的资料 2.在右侧FiddlerSc ...

  5. 《MySQL性能优化和高可用架构实践》阅读总结

    文章目录 介绍 第1章 MySQL架构介绍 1.1 MySQL简介 1.2 MySQL主流的分支版本 1.3 MySQL存储引擎 1.4 MySQL逻辑架构 1.5 MySQL物理文件体系结构 第2章 ...

  6. 2.7mnist手写数字识别之训练调试与优化精讲(百度架构师手把手带你零基础实践深度学习原版笔记系列)

    2.7mnist手写数字识别之训练调试与优化精讲(百度架构师手把手带你零基础实践深度学习原版笔记系列) 目录 2.7mnist手写数字识别之训练调试与优化精讲(百度架构师手把手带你零基础实践深度学习原 ...

  7. mysql优化十:从架构角度全局理解mysql性能优化

    从架构角度全局理解mysql性能优化 MySQL性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的.比如硬件和 OS调优 ...

  8. 另外一些MySQL优化措施

    使用MySQL连接池提高性能 对于访问数据库来说,建立连接的代价比较昂贵,因此,我们有必要建立"连接池 "来提高访问的性能.我们可以把连接当做对象或者设备,池中又有许多已经建立的连 ...

  9. 二、服务器优化(3)服务器端优化措施

    一.硬件 如果条件允许,则尽可能使用性能更好的硬件设备. 1.CPU CPU 的选型原则,一般先看主频的高低,然后考虑二级缓存的大小. 其次,注意 Windows 的电源选项. 2.内存 原则上,内存 ...

最新文章

  1. 后勤问题怎么办。。。(求刊登)
  2. 用户注册功能交互流程
  3. html 保存文件指定路径,78.上传文件及在服务器保存文件到任意路径
  4. react 组件传值
  5. mysql特殊语句_mysql特殊语句 - BENNEE的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. bowtie1和bowtie2的比较
  7. unity编辑器扩展_07(创建对话框,检测按钮的点击,点击按钮后提示信息,保存设置的数据,显示点击按钮后的处理的进度条信息)...
  8. ELK之ES-Logstash-Kibana互联
  9. FreeBSD下使用Blogbio写cnblogs博客
  10. Qualomm openwrt SDK编译
  11. 程序员英文简历范例(前端)
  12. ubuntu12.04安装配置opensips,搭建voip服务器
  13. 进销存php 百度云盘,fb1334 PHP网络版进销存源码WEB进销存源码含说明
  14. 解决Office桌面图标异常
  15. #windowsxpsp3系统MS12-020漏洞测试
  16. [C++] 开灯问题(两个思路)
  17. [云原生专题-45]:Kubesphere云治理-基于Kubernetes 构建的企业级容器平台简介与总体架构
  18. 赛事解读|中国工程机器人大赛暨国际公开赛——飞思实验室空中机器人项目-仿真与自主任务赛项
  19. zcmu --1919(多重背包)
  20. oracle角色数达到上限,ROLE启用个数限制

热门文章

  1. 13003.数据类型转换问题(python)
  2. 路德维希贝多芬计算机怎么操作,贝多芬是不是听不见和看不见
  3. ARM裸机环境搭建(U-Boot命令详解)
  4. 怎么把arraylist集合的值放在实体类的属性了_原创 | 使用JPA实现DDD持久化-O/R映射元数据:类级映射-实体和值对象...
  5. 华硕服务器性能,华硕45nm四核服务器主板突破性能瓶颈
  6. 阅读众包文献中一些值得mark 的小收获
  7. 恢复SQLSERVER被误删除的数据(转——收藏)
  8. dom jaxp详解
  9. 调用newtonsoft.json反序列出错
  10. windbg 修改内存和寄存器指令