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

本文涉及的产品
日志服务 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日志并进行多维度分析。
目录
相关文章
|
存储 SQL 弹性计算
圆桌讨论:如何构建一站式全链路解决方案
本文整理自天翼云首席研发专家候圣文,OceanBase社区布道师周跃跃,CloudCanal联合创始人万凯明,StarRocks解决方案架构师王天宜,在如何构建简单高效的现代化数据栈的分享。
圆桌讨论:如何构建一站式全链路解决方案
|
8天前
|
人工智能 Cloud Native 安全
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三)在云栖大会的精彩分享。讲师深入浅出的分享了软件架构演进过程中,网关所扮演的各类角色,AI 应用的流量新特征对软件架构和网关所提出的新诉求,以及基于阿里自身实践所带来的开源贡献和商业能力。
|
26天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
57 1
|
2月前
|
云栖大会
弹性能力与稳定性技术最新演进 | 2024云栖大会预告
弹性能力与稳定性技术最新演进 | 2024云栖大会
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB开源项目未来展望:技术趋势与社区发展方向
【9月更文挑战第5天】随着云计算技术的发展,阿里云推出的云原生分布式数据库PolarDB受到广泛关注。本文探讨PolarDB的未来展望,包括云原生与容器化集成、HTAP及实时分析能力提升、智能化运维与自动化管理等技术趋势;并通过加强全球开源社区合作、拓展行业解决方案及完善开发者生态等措施推动社区发展,目标成为全球领先的云原生数据库之一,为企业提供高效、可靠的服务。
96 5
|
6月前
|
搜索推荐 Cloud Native 算法框架/工具
都闪开,这才是最牛x技术搜索引擎【云原生】
都闪开,这才是最牛x技术搜索引擎【云原生】
|
运维 Cloud Native 安全
带你读《云原生架构白皮书2022新版》——业务发展视角
带你读《云原生架构白皮书2022新版》——业务发展视角
267 8
|
存储 分布式计算 Kubernetes
带你读《2022年开源大数据热力报告》——热力趋势三:云原生大规模重构开源技术栈
带你读《2022年开源大数据热力报告》——热力趋势三:云原生大规模重构开源技术栈
288 0
|
运维 Kubernetes Cloud Native
|
消息中间件 运维 Cloud Native
云原生中间件的技术演讲与未来趋势展望
过去这几年,随着云原生技术生态的高速发展,中间件技术也在顺应这个大趋势向前演进,如果要说中间件的演进大方向就是云原生化
778 6
下一篇
无影云桌面