架构师训练营W7-总结

米斯特程序猿 2020年11月08日 308次浏览

本周训练营包含内容挺多,有些比较细,要写好总结需要花费一定时间,这里先做一些粗略的总结,后续复习的时候再修改详细点,针对每一节的总结大致如下

  1. 性能测试:系统性能的主要技术指标
  • 主要介绍了常见的性能压测指标
  • 为什么要进行性能测试,因为用户的随机性、网络的天然不稳定性、人员能力的参差不齐等等因素造成系统的稳定性不能很好预测,所以需要做性能测试来确认系统最大承载力,从用户角度来看就是体验,从公司角度来看就是省钱
  1. 全链路压测的挑战
  • 全链路压测最大的挑战是【数据构建】、模拟环境搭建
  • 通常只有系统做了重大改变(或者新系统)才会进行全链路压测,用来评估改变的影响,超大型系统的全链路压测成本很高
  • 为了降低全链路压测成本以及复杂度,一定会采用自动化系统来测试,如果这个系统设计有问题,那么测试的可靠性就大打折扣了,听说亚马逊有个自动化测试的系统,目的就是搞破坏,破坏网络、破坏系统,用来测试系统的健壮性
  1. 性能优化:系统性能优化的分层思想
  • 性能优化分层思想主要解决不同规模系统的优化解决方向
  • 分层可以分两层,应用层、物理层,90%以上的系统基本都是通过优化应用层就能满足业务要求(TCP/IP协议也是应用软件只不过更接近硬件层),少量超大规模系统才需要硬件层面的优化(这里说的优化不是升级带宽、升级CPU之类的,而是定制化处理)
  1. 操作系统:计算机如何处理成百上千的并发请求?
  • 主要理解一下操作系统是如何与硬件打交道的,在单核时代为了充分利用CPU以及让用户感到“多任务处理”人们发明了分时的概念,CPU轮流给不同应用分配若干运行时间,由于CPU速度处理极快分配的时间片用户是感受不到的,所以给人的感觉是CPU能同时处理多个任务,到了多核时代就不一样了,就是真的可以多任务了,每一个CPU内核都能处理任务,基本上就是有多少CPU就能同时处理多少任务
  • 回到主题就是计算机为何能处理成百上千的并发请求这个问题,其本质就是CPU能高速切换任务给与的一种”同时“处理的假象,实际上只有多CPU内核才能真正意义上的多任务处理(其实叫并行处理更合适),之所以能支撑成百上千的请求是因为有缓存队列(比如常说的IO模型里的epoll),新来的请求不一定马上就被CPU处理,但是CPU执行速度远大于其它硬件,所以可以通过分时间片方式处理耗时不同的任务
  1. 锁:锁原语CAS与各类锁
  • CAS的实现离不开底层操作系统以及硬件的支持,更多的是利用CPU执行速度来解决并发问题
  • 各类锁的本质也都是依托硬件层面的指令组合以及程序语言设计的规定来解决
  1. 异步并发分布式编程框架
  • 简单理解了什么是异步编程模型,以及它的优势和缺点
  • 通过这节学习能感受到未来异步处理将会是大趋势,因为数据量随着信息化水平的增高只会越来越庞大,再没有出现成熟的颠覆式计算系统以及硬件支持以前,只会越来越异步化处理任务

通过本周的学习,个人觉得科班似的系统学习真的很重要,尤其是操作系统原理、数据结构与算法这些,是各类编程语言、软件设计的基石,这些知识越扎实(不是死记硬背的那种),在软件以及硬件领域走的才会越远