知识卡片
性能术语体系的精确辨析
内容
“可伸缩性”这类性能词汇有六七种含义混用,需要精确区分。响应时间:完成一次外部请求处理所需的时间。响应性:系统响应请求的速度感知,与响应时间不同——如果处理过程中能先给用户一些”已接到请求”的反馈(如进度条),响应性会更好,但响应时间本身并未缩短。等待时间:获得任何响应的最小时间,即使实际工作量为零,远程调用天然比本地调用等待时间长,这也是要尽量避免远程调用的原因。吞吐率:单位时间处理的请求量,企业应用常用每秒事务数(tps)衡量,但需要固定一组有代表性的事务集合才有可比性。负载:系统当前承受的负荷(如并发用户数),常作为其他指标的背景条件。负载敏感度:响应时间随负载变化的程度,变化越小说明系统”衰减”得越慢。效率:性能除以资源消耗。容量:达到可接受性能阈值前能承受的最大负载或吞吐率。可伸缩性:增加资源(通常是硬件)对系统性能的提升幅度,分垂直可伸缩性(提升单机性能,如加内存)和水平可伸缩性(增加服务器数量)。书中用Swordfish和Camel两个系统的对比说明这些术语不能混为一谈:单机时Camel(40tps)效率高于Swordfish(20tps);加一台服务器后Camel到50tps、Swordfish到35tps,Camel容量仍更大,但Swordfish的可伸缩性表现更好;再加服务器后Swordfish每台提升15tps、Camel只提升10tps,此时才能说Swordfish的水平可伸缩性优于Camel——单看容量或效率的某一个快照,得不出关于可伸缩性的结论,可伸缩性衡量的是”增加资源”这个动作本身带来的边际收益,而不是某个时刻的绝对数值。
结构图:
flowchart TB
A["性能术语体系"]
A --> B["响应时间:处理耗时"]
A --> C["响应性:用户感知到的快慢<br/>可通过反馈提升而不缩短响应时间"]
A --> D["等待时间:远程调用天然存在的最小延迟"]
A --> E["吞吐率:单位时间处理量(tps)"]
A --> F["负载:当前并发压力"]
A --> G["效率=性能/资源;容量=阈值内最大负载"]
A --> H["可伸缩性:增加资源带来的性能边际收益<br/>垂直(单机增强)vs水平(加机器)"]
参考来源
- 位置:《企业应用架构模式》"引言"之"0.4 关于性能的考虑"(源文件:_epub-src/OEBPS/Text/000009.html)
- 结论依据:原文逐一定义"响应时间""响应性""等待时间""吞吐率""负载""负载敏感度""效率""容量""可伸缩性"九个术语,并用Swordfish与Camel两系统随服务器数量增加的容量变化数据说明"可伸缩性"与"容量/效率"是不同维度,直接支撑本卡结构图。
- 原始内容:可伸缩性度量的是向系统中增加资源(通常是硬件)对系统性能的影响……Swordfish的容量是20tps,而Camel的容量是40tps……Swordfish每增加一台服务器提高15tps, Camel每增加一台服务器提高10tps……Swordfish的水平可伸缩性比Camel好