带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)

简介: 带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(1)

性能优化之接口优化

image.png作者:马啟超(是也)

image.png出品:大淘宝技术

 

 

本文从客户端的视角,分享客户端如何协同服务端进行接口时间的优化。

 

Compose是什么

 

接口性能优化对于客户端的同学来讲涉及可能不是很多,但是接口的性能对于客户端的体验影响是巨大的;请求失败、loading、无数据这几个关键词跟客户端的同学一提,想必接口优化的意义就不用多说了吧。

 

一个快速而又稳定的接口,对于客户端的用户体验来说是大有裨益的。本文从客户端的视角,分享客户端如何协同服务端进行接口时间的优化。

 

分析

简析

 

客户端的一次完整的接口请求主要包括:

  1. 业务发起请求
  2. 网络传输
  3. 服务端处理
  4. 数据响应后解析
  5. 图层布局与渲染

 

那么我们来看一下通常客户端发起一次接口请求,耗时都发生在哪些阶段:

image.png

 

 

 

  1. Prepare:主要包括请求前的参数拼装以及发送请求处理的线程切换;
  2. Network Request:主要包括,鉴权、网络传输、服务端处理、Network SDK的数据处理等。
  3. Data Parse:业务上的数据解析,如json解析等的操作,以及线程间的切换等耗时。
  4. UI Refresh:主要是视图布局,渲染的操作。
  5. First Item Render:第一张卡片的渲染时间。

 

从上面数据上来看,客户端的耗时主要是:

  1. 请求前的参数绑定过程
  2. 请求后数据解析
  3. 数据上屏的图层布局以及渲染
  4. 异步请求过程中的线程不断切换造成切换耗时

 

客户端上这些操作往往在整个链路上占比较小,且过程优化空间较小;

 

然而大头往往在这两个方面:网络传输和服务端处理。

 

方案

降低ServerRT(服务端处理耗时)

 

通常降低服务端处理耗时,是由服务端小伙伴来优化,当然优化过程中需要端上一起协助完成,大致了解一下服务端耗时的几种处理方案;

主要有这几种方式:

  1. 接口加缓存:合理设计临时缓存、持久缓存可以提高接口性能
  2. 内部接口并发请求:通常一个复杂的接口需要调用下游几个业务的接口,如果合理的进行并发请求,将会收到很好的效果
  3. 异步化:如写日志,更新缓存等不会影响接口准确性的非核心流程,可以采用异步方式进行处理,不阻塞主计算逻辑处理
  4. 数据批量处理:接口存在较大量计算,可以通过批量分批次(分而治之)方式来解决大量数据计算耗时问题
  5. sql加索引:数据库SQL是最常见的性能瓶颈,如SQL子查询、不合理索引设计、全表扫描、大量数据返回、大 SQL等,通过监控平台查看慢查询SQL可立即找出影响接口性能瓶颈关键点

 

带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)https://developer.aliyun.com/article/1340953?groupCode=taobaotech

相关文章
|
存储 设计模式 算法
DDD之于业务支撑的意义
DDD之于业务支撑的意义
467 0
|
8月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
负载均衡 前端开发 Java
SpringCloud调用组件Feign
本文深入探讨微服务Spring体系中的Feign组件。Feign是一个声明式Web服务客户端,支持注解、编码器/解码器,与Spring MVC注解兼容,并集成Eureka、负载均衡等功能。文章详细介绍了SpringCloud整合Feign的步骤,包括依赖引入、客户端启用、接口创建及调用示例。同时,还涵盖了Feign的核心配置,如超时设置、拦截器实现(Basic认证与自定义)和日志级别调整。最后,总结了`@FeignClient`常用属性,帮助开发者更好地理解和使用Feign进行微服务间通信。
1009 1
|
JSON 分布式计算 Java
ODPS开发大全:进阶篇(2)
ODPS开发大全:进阶篇
903 9
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
551 10
|
机器学习/深度学习 自然语言处理 算法
面向电商家居行业3D室内场景合成中的空间感知(1)
面向电商家居行业3D室内场景合成中的空间感知
742 9
|
安全 IDE Java
MapStruct-JavaBean映射工具使用指南
MapStruct-JavaBean映射工具使用指南
375 9
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
783 8
|
XML Java 程序员
Java的基础入门(1)
Java的基础入门
336 7
|
缓存 NoSQL Java
个人项目中技术落地的基础入门(1)
个人项目中技术落地的基础入门
450 6