**
1 WHAT 对高性能的理解?
**
性能是软件的一个重要质量属性。衡量软件性能包括了响应时间、TPS、服务器资源利用率等
客观指标,也可以是用户的主观感受(从程序员、业务用户、终端用户/客户不同的视角,可
能会得出不同的结论)。
在说性能的时候,有一个概念与之紧密相关—伸缩性,这是两个有区别的概念。性能更多的
是衡量软件系统处理一个请求或执行一个任务需要耗费的时间长短;而伸缩性则更加关注软
件系统在不影响用户体验的前提下,能够随着请求数量或执行任务数量的增加(减少)而相
应地拥有相适应的处理能力。
但是,什么是“高”性能?这可能是一个动态概念,与当前的技术发展状况与业务所处的阶
段紧密相关。比如,现在在行业/企业内部认为的高性能,站在5年后来看,未必是高性能。
因此,站在架构师、设计师的角度,高性能需要和业务所处的阶段来衡量。高到什么程度才
能与当前或可预见的未来业务增长相匹配。一味去追求绝对意义上的高,没有太大的实际意
义。因为,伴随性能越来越高,相应的方法和系统复杂度也是越来越高,而这可能会与当前
团队的人力、技术、资源等不相匹配。但是什么才合适的高性能了?这可能需要从国、内外
的同行业规模相当、比自己强的竞争者、终端用户使用反馈中获取答案并不断迭代发展。
软件系统中高性能带来的复杂度主要体现在两方面,一方面是单台计算机内部为了高性能带
来的复杂度;另一方面是多台计算机集群为了高性能带来的复杂度。