Week 07 学习总结
本周学习的主要内容
架构师掌握系统的设计能力(面向对象,分层),解决高并发场景的能力(MQ、缓存、数据分片),还需要了解系统的瓶颈在哪里,以及通过找到系统性能瓶颈,要知道相应的性能优化方法。
本周的学习内容:
性能测试,包括性能测试的指标和方法;
性能优化,包括性能优化的原则、方法和层次思想;
在操作系统方面,主要内容有 进程与线程的说明、线程各种锁的介绍、文件 IO 及 HDFS 大文件存储;
最后就是分布式编程框架 Akka,通过 Actor 模型的编程思想,如何实现真正的异步编程;
性能测试
【性能测试】是【性能优化】的【前提】,通过性能测试,不仅是发现系统需要优化的点在哪里,并且也是优化后究竟有没有解决问题的验证手段。
不同视角下,有不同的性能优化手段:
主观视角:用户感受到的性能,比如用户觉得与竞对的产品比,系统打开页面较慢,首先需要了解清楚慢的地方,找到问题进行优化;
客观视角:性能指标是真实反映系统真实运行状态的数据,这些指标包括 响应时间、并发数、吞吐量等;
所以,对于性能优化,要了解用户体验,为什么用户会觉得系统很慢?慢的地方在哪儿?用户感觉慢是表面现象,通过表面现象找到【实际的问题】才是关键;只有发现问题,才能明确决绝问题的方法,而不是一上来就用各种技术;课上多次提到的,问题是什么最重要;技术是手段,而不是答案,性能是由数据表现;
要先了解问题,通过找到问题,明确解决问题的思路,并且要知道解决问题方法过程中会遇到哪些困难;
总结:
没有性能测试,就不要进行性能优化;
要先找到瓶颈在哪里;
通过性能测试,找到响应时间,特别是每个点的调用时间,包括数据库、方法、服务、缓存的调用时间;
软件性能优化
软件性能优化基本原则
不能优化一个没有性能测试的软件;
不能优化一个不了解的软件;
性能优化方法
性能优化,不是盲目的堆积最新的技术,而是需要一套合理的方法进行指导;
软件性能优化的方法:
首先,必须通过【性能测试】,找到系统的【性能指标(响应时间、并发数、吞吐量、性能技术器)】,如果说一个系统有性能问题,就像一个人生病去医院看病,医生不会立马开药或者直接动手术,肯定是先要做各项检查,拿到检查结果后才好对症下药;
获得【性能指标】后,针对各项数据进行【指标分析】,发现软件性能与资源瓶颈点,这个过程非常重要,只有分析出性能瓶颈点,确定问题发生的位置;
找到问题发生的位置,在结合【架构与代码分析】,寻找性能与资源瓶颈的关键点;
接下来,才是对【架构或代码】进行优化,技术是解决性能瓶颈问题的,但是一项技术优化 会影响原本的软件架构,带来一系列复杂问题,要清楚知道面对的困难,找到困难点结合技术进行优化;
【优化】不是终点,优化完成后,需要再次进行【性能测试】,验证优化后的结果是否解决原本的问题,也通过【性能测试】,完成一个闭环。
评论 (1 条评论)