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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文中蚂蚁金服技术专家陈显铭将分享关于性能优化的常见模式及趋势的一些技术干货。

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



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

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



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

                                               
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
1
455
分享
相关文章
圆桌讨论:如何构建一站式全链路解决方案
本文整理自天翼云首席研发专家候圣文,OceanBase社区布道师周跃跃,CloudCanal联合创始人万凯明,StarRocks解决方案架构师王天宜,在如何构建简单高效的现代化数据栈的分享。
圆桌讨论:如何构建一站式全链路解决方案
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
433 1
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
268 1
弹性能力与稳定性技术最新演进 | 2024云栖大会预告
弹性能力与稳定性技术最新演进 | 2024云栖大会
【专栏】探讨分布式限流所面临的挑战以及目前业界常用的解决方案
【4月更文挑战第27天】在互联网时代,分布式限流是应对高并发、保护系统稳定的关键。它面临数据一致性、算法准确性和系统可扩展性的挑战。常见限流算法有令牌桶、漏桶和滑动窗口。解决方案包括使用分布式存储同步状态、结合多种算法及动态调整阈值。定期压力测试确保策略有效性。随着系统规模增长,限流技术将持续发展,理解并应用限流原理对保障服务质量至关重要。
200 3
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(下)
带你读《云原生架构白皮书2022新版》——作业帮原生降本增效实践之路(下)
236 19
带你读《云原生架构白皮书2022新版》——架构持续演进闭环
带你读《云原生架构白皮书2022新版》——架构持续演进闭环
100 5
云原生中间件的技术演讲与未来趋势展望
过去这几年,随着云原生技术生态的高速发展,中间件技术也在顺应这个大趋势向前演进,如果要说中间件的演进大方向就是云原生化
838 24

热门文章

最新文章

下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等