写点什么

Week 07 学习总结

用户头像
Jeremy
关注
发布于: 2020 年 07 月 23 日
Week 07 学习总结

本周学习的主要内容

架构师掌握系统的设计能力(面向对象,分层),解决高并发场景的能力(MQ、缓存、数据分片),还需要了解系统的瓶颈在哪里,以及通过找到系统性能瓶颈,要知道相应的性能优化方法。

本周的学习内容:

  • 性能测试,包括性能测试的指标和方法;

  • 性能优化,包括性能优化的原则、方法和层次思想;

  • 在操作系统方面,主要内容有 进程与线程的说明、线程各种锁的介绍、文件 IO 及 HDFS 大文件存储;

  • 最后就是分布式编程框架 Akka,通过 Actor 模型的编程思想,如何实现真正的异步编程;

性能测试

【性能测试】是【性能优化】的【前提】,通过性能测试,不仅是发现系统需要优化的点在哪里,并且也是优化后究竟有没有解决问题的验证手段。

不同视角下,有不同的性能优化手段:

  • 主观视角:用户感受到的性能,比如用户觉得与竞对的产品比,系统打开页面较慢,首先需要了解清楚慢的地方,找到问题进行优化;

  • 客观视角:性能指标是真实反映系统真实运行状态的数据,这些指标包括 响应时间、并发数、吞吐量等;



所以,对于性能优化,要了解用户体验,为什么用户会觉得系统很慢?慢的地方在哪儿?用户感觉慢是表面现象,通过表面现象找到【实际的问题】才是关键;只有发现问题,才能明确决绝问题的方法,而不是一上来就用各种技术;课上多次提到的,问题是什么最重要;技术是手段,而不是答案,性能是由数据表现;

要先了解问题,通过找到问题,明确解决问题的思路,并且要知道解决问题方法过程中会遇到哪些困难;



总结:

  • 没有性能测试,就不要进行性能优化;

  • 要先找到瓶颈在哪里;

  • 通过性能测试,找到响应时间,特别是每个点的调用时间,包括数据库、方法、服务、缓存的调用时间;



软件性能优化

软件性能优化基本原则

  • 不能优化一个没有性能测试的软件;

  • 不能优化一个不了解的软件;



性能优化方法

性能优化,不是盲目的堆积最新的技术,而是需要一套合理的方法进行指导;

软件性能优化的方法:

  1. 首先,必须通过【性能测试】,找到系统的【性能指标(响应时间、并发数、吞吐量、性能技术器)】,如果说一个系统有性能问题,就像一个人生病去医院看病,医生不会立马开药或者直接动手术,肯定是先要做各项检查,拿到检查结果后才好对症下药;

  2. 获得【性能指标】后,针对各项数据进行【指标分析】,发现软件性能与资源瓶颈点,这个过程非常重要,只有分析出性能瓶颈点,确定问题发生的位置;

  3. 找到问题发生的位置,在结合【架构与代码分析】,寻找性能与资源瓶颈的关键点;

  4. 接下来,才是对【架构或代码】进行优化,技术是解决性能瓶颈问题的,但是一项技术优化 会影响原本的软件架构,带来一系列复杂问题,要清楚知道面对的困难,找到困难点结合技术进行优化;

  5. 【优化】不是终点,优化完成后,需要再次进行【性能测试】,验证优化后的结果是否解决原本的问题,也通过【性能测试】,完成一个闭环。


用户头像

Jeremy

关注

还未添加个人签名 2018.01.21 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
作业请加“极客大学架构师训练营”标签,便于分类
2020 年 07 月 27 日 17:13
回复
没有更多了
Week 07 学习总结