编者按:征途小丘,陈显铭,蚂蚁金服技术专家,分享性能优化的常见模式及趋势,

中生代技术转载成文,以飨读者



性能优化的价值

从上图可以看出几个优点

  • 成本降低

  • 稳定性提升

  • 用户体验体验提升

性能优化的缺点也有

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

性能优化的两种模式

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

单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能。

结构型优化,通过改造链路结构和配比,进行整体性能的优化。

单应用优化常见步骤

优化基本思路(闭环)

  1. 确定性能瓶颈/热点

  2. 确定优化方案

  3. 实施、反馈优化情况

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

  1. 性能压测:通过工具/人肉等方式量化运行时性能情况

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

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

  1. 压测工具:jmeter

  2. 内存的使用情况:mat,gc日志,vmstat

  3. IO情况:iostat

  4. 网络情况:netstat

  5. 热点代码:jprofile,btrace,jstack,jstat

  6. CPU情况:top

优化的常见手段或模式

  1. 静态化:动态数据和静态数据分离。

  2. 异步化:使用异步化减少主流程中的非关键业务逻辑。

  3. 并行化:使用多线程并发处理,缩短响应时间。

  4. 内存优化:减少对象大小,减少对象创造,数据模型优化

  5. 去重复运算:业务逻辑优化,或者使用缓存

  6. 减少数据库操作:数据冗余,数据缓存等

  7. 缩短数据库事务:短事务,异步化,最终一致性等方式可以考虑

  8. 精简代码逻辑:去除冗余代码,诸如过度设计检查等代码。

  9. 精简日志操作:日志大小要关注,注意IO上的瓶颈;日志太多,说明生成的string也会多,也增加了gc负担

  10. 等等

结构型优化常见步骤

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

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

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

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


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


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


3、单应用集中式部署带来应用集群处理能力提升

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

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

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

服务化集群部署模式

两个结构优化的案例

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


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



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

-END-

欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。

本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。

  • 长按下方的二维码可以快速关注我们

  • 如想加群讨论学习,请点击右下角的“加群学习”菜单入群


性能优化的常见模式及趋势相关推荐

  1. kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...

  2. 蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6 分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高 ...

  3. mysql根据排序取前百分之二十_MySQL 性能优化 MySQL常见SQL错误用法

    1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般DBA想到的办法是在type, name, create_time字段上加组合索引.这样 ...

  4. Android 应用性能优化-StrictMode(严格模式)

    为什么80%的码农都做不了架构师?>>>    UI线程如果被阻塞5秒的话,那么应用程序此时就会弹出ANR的对话框,ANR对应用程序来说是一个很严重的问题. 如何防止应用程序出现AN ...

  5. strictmode android,Android 应用性能优化-StrictMode(严格模式)

    UI线程如果被阻塞5秒的话,那么应用程序此时就会弹出ANR的对话框,ANR对应用程序来说是一个很严重的问题. 如何防止应用程序出现ANR,怎么分析查看导致ANR问题的原因? 我们来介绍Android的 ...

  6. 蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点

    陈显铭(山丘) 读完需要 6 分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高 ...

  7. 资深架构师手把手教你性能优化

    图片来源:pexels.com 孔庆龙,一线架构师,具有多年的金融架构经验,具备 SOA 服务化.服务治理.系统优化.分布式系统项目经验.目前关注于互联网金融技术架构设计.分布式架构.微服务架构.De ...

  8. 没做性能优化,系统说炸就炸...

    航母哥 读完需要 2 分钟 速读仅需 1 分钟 目前就职于 58 研发中心担任资深架构师,负责消息中间件与全链路压测的实施与落地.前阿里巴巴消息中间件资深研发,架构师.擅长 Java 编程,对主流中间 ...

  9. 性能测试之前端性能优化(前端基础知识,前端性能测试常用工具,前端性能优化常见方法)

    目录 1. 前端基础知识 1.1 为什么要关注前端页面的性能,了解页面的加载,渲染方式和顺序? 1.2 一次页面请求会经历哪些步骤? 1.3 页面的展示过程 2. 前端性能测试的常用工具 2.1 Go ...

  10. Android WebView 性能优化

    原文出处:http://motalks.cn/2016/09/11/Android-WebView-JavaScript-3/ WebView相关阅读 Android WebView 和 javaSc ...

最新文章

  1. 人工智能AI正从这五个方面改变公司
  2. python复制文件夹不阻塞_Python学习第54天(阻塞(blocking) IO和非阻塞(non-blocking)IO)...
  3. MRJob 极速入门教程,使用Python玩转Hadoop
  4. redis实战:使用redis实现自动补全
  5. python手势识别_Python|使用opencv进行简单的手势检测
  6. java 数组下标 变量_Java基础语法:数组
  7. 【飞秋】使用C# 4编写动态的代码
  8. 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!
  9. hadoop实战项目:查找相同字母组成的字谜
  10. 大一计算机应用基础答案李小艳,13级幼师班期末考试计算机试题A卷
  11. flutter listview 滚动到底部_Flutter系列之Flex布局详解
  12. (三)canvas绘制样式
  13. 白盒测试实践作业进度报告——Day 3
  14. 罗马音平假字复制_罗马音大全可复制汉字app下载
  15. 快速了解德国TRINAMIC运动控制芯片(TMC电机驱动芯片)
  16. python匿名函数优点_python匿名函数定义及实例解析
  17. 畅通工程1863(并查集)(WA的思考)
  18. 【转录调控网络】代谢组学与其他组学的联合分析经典模式简介
  19. supervisor的用法
  20. 全程干货!人物设计是什么?如何设计出好看的人物?

热门文章

  1. SharePoint专家新闻轮转器WebPart----亲測力推之Web部件
  2. Java Web开发入门 - 第3章 Tomcat单元测试
  3. 975分过CCNA 640-801体会分享
  4. 如何在苹果Mac上截屏或录制屏幕?
  5. FoneDog Data Recovery数据恢复教程
  6. 运行在MAMP Pro上的PhP和Mysql更改版本教程
  7. SQLServer之删除用户自定义数据库用户
  8. Python全栈学习_day010作业
  9. weiapi2.2 HelpPage自动生成接口说明文档和接口测试功能
  10. 巧用DOS命令上传文件