蚂蚁金服技术专家对性能优化的常见模式及趋势的思考

简介: 本文中蚂蚁金服技术专家陈显铭将分享关于性能优化的常见模式及趋势的一些技术干货。

发表自《中生代》微信公众号。作者是陈显铭,从事研发工作七年,蚂蚁金服技术专家。对于性能优化的思考,很有价值,分享给大家。



1cad191cec1499d6b86ad0b6c98719825488edc3

从上图可以看出几个优点

  • 成本降低
  • 稳定性提升
  • 用户体验体验提升

性能优化的缺点也有

  • 维护成本增加:代码可能变复杂,结构可能变复杂,技术栈可能变复杂


性能优化的两种模式

个人总结,性能优化整体上可以分为两类:单应用优化和结构型优化。

  • 单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能。
  • 结构型优化,通过改造链路结构和配比,进行整体性能的优化。


单应用优化常见步骤

优化基本思路(闭环)

  •     确定性能瓶颈/热点
  •     确定优化方案
  •     实施、反馈优化情况

确定性能瓶颈/热点的常见方法

  • 性能压测:通过工具/人肉等方式量化运行时性能情况
  • 业务/代码梳理:通过代码走读,发现资源消耗热点(牛B的人可以这么干);通过统计代码对资源的操作,量化代码对资源的消耗(比如一个业务操作会进行多少次数据库调用,会进行多少次服务运算等方式)

压测时常观察的内容及工具(举例java应用)

  •     压测工具:jmeter
  •     内存的使用情况:mat,gc日志,vmstat
  •     IO情况:iostat
  •     网络情况:netstat
  •     热点代码:jprofile,btrace,jstack,jstat
  •     CPU情况:top

优化的常见手段或模式

  •     静态化:动态数据和静态数据分离。
  •     异步化:使用异步化减少主流程中的非关键业务逻辑。
  •     并行化:使用多线程并发处理,缩短响应时间。
  •     内存优化:减少对象大小,减少对象创造,数据模型优化
  •     去重复运算:业务逻辑优化,或者使用缓存
  •     减少数据库操作:数据冗余,数据缓存等
  •     缩短数据库事务:短事务,异步化,最终一致性等方式可以考虑
  •     精简代码逻辑:去除冗余代码,诸如过度设计检查等代码。
  •     精简日志操作:日志大小要关注,注意IO上的瓶颈;日志太多,说明生成的string也会多,也增加了gc负担

等等

结构型优化常见步骤

此部分介绍的内容,在很多网站架构变迁的文章中介绍过,这里通过图的方式展现出来。

每个阶段都有适用的软件架构,基于成本、建设复杂度、维护成本的考虑,不必强求一开始建设很完整的技术体系。

个人认为,性能是驱动应用体系研究的重要驱动力,可以通过下面应用结构演进看出来。

1、单应用时代常见瓶颈先发生在DB

d9b41efea8be940b761f3e2c5b9afdad0270c82f

2、单应用时代常见第一个解法是使用缓存(偏向应用级别缓存)

a28589c829b7d713879539d1d2e118df46e6c8ab

3、单应用时代常见第一个解法是独立缓存服务(集中式缓存,如memcache)

6fe669c2f4e636ce569e16961b4de5b1c54b185a

4、单应用集中式部署部署后的DB瓶颈

ffb82180d13153d0e109a306095d7ac432f07893


5、单应用集中式部署部署后的DB瓶颈解法(数据库拆分、读写分离)

4c08ae11b70584f1cffa379150c0d97c23fa6242


6、服务化拆分应对更大范围请求量

9beb9e83c72cce5c99ca9f36515bfe2850312db0


服务化集群部署模式

78d30b1d8cd9c170d6dd3d1c3dff42bb8f069c4e

6、服务化拆分应对更大范围请求量两个结构优化的案例

处理单点/网络瓶颈的可行方式

b0603b3a65b364af1fe00559ca77c2acb1c35fea

处理数据库连接池瓶颈的可行手段

275dd6acf5907d154ff43ebd69022e890d195059


总结:性能/应用优化的几个趋势

a000440790307fb1396f3a7d3f76f366908128e7



关于作者

59ef457cee0f3fc5ab315629354deef4043c0302

陈显铭,从事研发工作七年,蚂蚁金服技术专家,爱思考



                                                    中生代技术分享群微信公众号

                                               
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
存储 人工智能 缓存
大模型存储的 “最后一公里” :蚂蚁大模型存储加速系统 PCache 如何解决万亿参数训练难题?
本文尝试通过当前学术和工业界在大模型存储领域的关注点和相关工作,并结合蚂蚁大模型训练场景实际的需求和问题,来介绍蚂蚁是如何在多云环境里构建一套具备高可用性、高性能以及低成本的云原生 AI 存储加速系统 PCache;并通过该存储方案在蚂蚁支持了百亿文件规模的多模态和万亿参数的 MOE 训练任务。
|
对象存储
|
3月前
|
人工智能 Cloud Native 安全
超前探展!2025 云栖大会朋友圈晒图必备
2025 云栖大会设置人工智能+、计算、前沿应用三大主题馆,围绕云计算与 AI,全景式呈现展示 AI 时代云计算最新技术形态与产品进展。在计算馆,阿里云将集中展示从芯片到平台的全栈技术能力。观众可以了解到阿里云在超大规模集群、分布式训练、异构资源管理、推理加速等方面的软件能力,也能首次接触到面向推理和智能体需求的新一代硬件。如果你也一样,关注 AI 原生应用的创新和落地~请直奔计算馆 -「云原生 AI 应用开发」特展 !
|
机器学习/深度学习 数据采集 算法
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
本文介绍了2024年中国研究生数学建模竞赛C题的详细分析,涵盖数据预处理、特征提取、模型训练及评估等多个方面。通过对磁通密度数据的处理,提取关键特征并应用多种分类算法进行波形分类。此外,还探讨了斯坦麦茨方程及其温度修正模型的应用,分析了温度、励磁波形和磁芯材料对磁芯损耗的影响,并提出了优化磁芯损耗与传输磁能的方法。最后,提供了B站视频教程链接,供进一步学习参考。
1238 7
【BetterBench博士】2024华为杯C题:数据驱动下磁性元件的磁芯损耗建模 Python代码实现
|
11月前
|
人工智能 监控 API
体验《多模态数据信息提取》
体验《多模态数据信息提取》
|
11月前
|
存储 人工智能 自然语言处理
海量数据的智能处理及在网盘场景中的应用实践
本次分享主题为海量数据的智能处理及在网盘场景中的应用实践,涵盖面向非结构化数据的多样化处理能力、数据处理智能化演进、企业网盘基于智能媒体管理的应用转型以及智能化和内容结构化能力。通过丰富的AI算子和智能媒体管理,实现图片、音视频等多媒体数据的高效处理,并支持多模态检索、知识库构建与AI助手等功能,助力企业网盘智能化升级,提升用户体验和数据管理效率。
351 7
|
12月前
|
存储 API 开发工具
【实践】基于生命周期管理的存储成本优化
本实验介绍如何在阿里云创建和管理对象存储服务(OSS)。主要内容包括:1. 创建Bucket,选择存储类型及冗余方式;2. 上传文件,推荐使用API或SDK而非控制台直接操作;3. 设置生命周期规则,管理文件的存储层级转换与自动删除。实验重点在于合理配置存储策略以降低成本,并确保数据安全。通过控制台操作,用户可以轻松管理存储资源,但需注意防止不必要的公网访问以避免费用风险。
275 1
|
机器学习/深度学习 存储 人工智能
用60%成本干80%的事,DeepSeek分享沉淀多年的高性能深度学习架构
【10月更文挑战第2天】近年来,深度学习(DL)与大型语言模型(LLMs)的发展推动了AI的进步,但也带来了计算资源的极大需求。为此,DeepSeek团队提出了Fire-Flyer AI-HPC架构,通过创新的软硬件协同设计,利用10,000个PCIe A100 GPU,实现了高性能且低成本的深度学习训练。相比NVIDIA的DGX-A100,其成本减半,能耗降低40%,并在网络设计、通信优化、并行计算和文件系统等方面进行了全面优化,确保系统的高效与稳定。[论文地址](https://arxiv.org/pdf/2408.14158)
707 5
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
人工智能 Linux Anolis
线上观看超 2 万,40+厂商齐聚!龙蜥社区走进 Arm MeetUp 精彩回顾来了
龙蜥社区走进 Arm MeetUp 精彩回顾来了,附课件获取方式。