知识卡片
架构设计决定性能上限,实现细节决定性能下限
内容
高性能是几乎所有工程实践都追求的目标,但真正实现高性能是一件极其复杂的事,因为磁盘、操作系统、CPU、内存、缓存、网络、编程语言、架构等每一个环节都可能成为瓶颈——一行不恰当的debug日志能把TPS从30000拖到8000,一个tcp_nodelay参数配置错误能把响应时间从2毫秒拉长到40毫秒,说明”高性能”从来不是单一环节的产物,而是软件系统开发全过程每个阶段共同作用的结果。站在架构师的视角,高性能架构设计主要聚焦两个方向:一是把单台服务器的性能尽量发挥到极致,二是当单机撑不住时设计服务器集群方案。这两者和后续具体的实现、编码质量共同决定了系统最终能达到的性能,但两者的角色并不对等:架构设计决定的是系统性能的上限,实现细节决定的是这个上限之下能实际发挥出来的下限——也就是说,如果架构设计本身就没有为高性能留出空间,后续再怎么打磨实现和编码,能提升的空间也是有限的;反过来,即使架构设计得再好,糟糕的实现细节依然可以把系统实际表现拉得远低于架构本该支撑的水平。这个判断框架的价值在于提醒架构师:性能优化不能等到实现阶段才开始考虑,真正决定性能天花板的决策,发生在架构设计这一步。
参考来源
- 位置:《从零开始学架构》第18讲《单服务器高性能模式:PPC与TPC》开篇(源文件:_epub-src/OEBPS/text00001.html)
- 结论依据:原文说明"一行不恰当的 debug 日志,就可能将服务器的性能从 TPS 30000 降低到 8000;一个 tcp_nodelay 参数,就可能将响应时间从 2 毫秒延长到 40 毫秒",并总结"架构设计是高性能的基础,如果架构设计没有做到高性能,则后面的具体实现和编码能提升的空间是有限的。形象地说,架构设计决定了系统性能的上限,实现细节决定了系统性能的下限",直接支撑本卡片结论。
- 原始内容:架构设计是高性能的基础,如果架构设计没有做到高性能,则后面的具体实现和编码能提升的空间是有限的。形象地说,架构设计决定了系统性能的上限,实现细节决定了系统性能的下限。