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

本文涉及的产品
日志服务 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
分享
相关文章
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
426 1
PolarDB开源项目未来展望:技术趋势与社区发展方向
【9月更文挑战第5天】随着云计算技术的发展,阿里云推出的云原生分布式数据库PolarDB受到广泛关注。本文探讨PolarDB的未来展望,包括云原生与容器化集成、HTAP及实时分析能力提升、智能化运维与自动化管理等技术趋势;并通过加强全球开源社区合作、拓展行业解决方案及完善开发者生态等措施推动社区发展,目标成为全球领先的云原生数据库之一,为企业提供高效、可靠的服务。
204 5
【专栏】探讨分布式限流所面临的挑战以及目前业界常用的解决方案
【4月更文挑战第27天】在互联网时代,分布式限流是应对高并发、保护系统稳定的关键。它面临数据一致性、算法准确性和系统可扩展性的挑战。常见限流算法有令牌桶、漏桶和滑动窗口。解决方案包括使用分布式存储同步状态、结合多种算法及动态调整阈值。定期压力测试确保策略有效性。随着系统规模增长,限流技术将持续发展,理解并应用限流原理对保障服务质量至关重要。
191 3
TDengine 资深研发分享解决思路,长查询不再成为系统性能瓶颈!
本文探讨了如何应对和解决长查询问题,以提升 TDengine 在复杂查询场景下的表现。
186 0
架构师才需要学习的知识:亿级流量调优方法+实战
在我们敲代码,推动系统做更多事情的时候,我们遇到了一个共同的问题:性能。网站和应用程序的功能比以往更丰富。结果,他们对网络和设备资源的要求越来越高。因此,我们现在很难在各种网络条件和设备上实现高水平的性能。
云原生中间件的技术演讲与未来趋势展望
过去这几年,随着云原生技术生态的高速发展,中间件技术也在顺应这个大趋势向前演进,如果要说中间件的演进大方向就是云原生化
829 16
阿里巴巴在应用性能测试场景设计和实现上的实践
提升性能前,先测试摸个底,找到性能瓶颈。 测试前,先设计好应用性能的测试场景,并实现它。 本文是《Performance Test Together》(简称PTT)系列专题分享的第5期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。
9439 21
AI助理

你好,我是AI助理

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