加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡水站长网 (https://www.0318zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

记一次接口性能优化实践总结

发布时间:2021-02-22 16:07:53 所属栏目:外闻 来源:互联网
导读:最近对外接口偶现504超时问题,原因是代码执行时间过长,超过nginx配置的15秒,然后真枪实弹搞了一次接口性能优化。在这里结合优化过程,总结了接口优化的八个要点,希望对大家有帮助呀~ 数据量比较大,批量操作数据入库 耗时操作考虑异步处理 恰当使用缓存

最近对外接口偶现504超时问题,原因是代码执行时间过长,超过nginx配置的15秒,然后真枪实弹搞了一次接口性能优化。在这里结合优化过程,总结了接口优化的八个要点,希望对大家有帮助呀~

  • 数据量比较大,批量操作数据入库
  • 耗时操作考虑异步处理
  • 恰当使用缓存
  • 优化程序逻辑、代码
  • SQL优化
  • 压缩传输内容
  • 考虑使用文件/MQ等其他方式暂存,异步再落地DB
  • 跟产品讨论需求最恰当,最舒服的实现方式

嘻嘻,先看一下我们对外转账接口的大概流程吧

 

解析:

  • 因为联行号匹配比较耗时,放在异步处理的话,同步联机返回可以省掉这部分时间,大大提升接口性能,并且不会影响到转账主流程功能。
  • 除了这个例子,平时我们类似功能,如用户注册成功后,短信邮件通知,也是可以异步处理的,这个优化建议香饽饽的~
  • 所以,太耗时的操作,在不影响主流程功能的情况下,可以考虑开子线程异步处理的啦。

3.恰当使用缓存

在适当的业务场景,恰当地使用缓存,是可以大大提高接口性能的。这里的缓存包括:Redis,JVM本地缓存,memcached,或者Map等。

这次转账接口,使用到缓存啦,举个简单例子吧~

优化前

以下是输入用户账号,匹配联行号的流程图

 

解析:

  • 把热点数据放到缓存,不用每次查询都去DB拉取,节省了这部分查SQL的耗时,美滋滋呀~
  • 当然,不是什么数据都适合放到缓存的哦,访问比较频繁的热点数据才考虑缓存起来呢~

4. 优化程序逻辑、代码

优化程序逻辑、程序代码,是可以节省耗时的。

我这里就本次的转账接口优化,举个例子吧~

优化前:

优化前,联行号查询了两次(检验参数一次,插入DB前查询一次),如下伪代码:


 

(编辑:衡水站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读