性能效率支柱简介
如何设计出高性能的架构是一个普遍性的问题。作为基本的质量属性,性能的重要性和性能失败后果的严重性是毋庸置疑的,实际上公司内外都有很多性能失败的例子。本文试图为性能设计、性能优化提供一些技术方法和手段,这些方法手段可以用于系统的软件性能工程建设,也可用于指导性能调整和优化。
早期的设计决策会对性能调节能否成功,以及是否有必要进行性能调节产生重要影响。如果开发的软件对性能非常敏感,实际上需要从设计阶段和开发周期的第一天起就考虑性能管理的问题,即采取系统的主动性能管理的办法来解决性能问题。除了管理上的措施外,解决性能问题需要在系统和架构设计、实现方案设计及编码实现上采取有效的技术手段来保证。
一般认为,性能问题通常由于体系架构或设计问题造成,而不是低效的编码引起的。性能问题在开发过程的早期已经引入,而大部分开发团队直到集成测试,或更晚的时候才予以考虑。实际情况并非完全如此,编码实现阶段引入的性能问题也很普遍,只是解决体系架构引起的问题代价要高得多。下面给出影响系统性能的几个因素:
- 体系架构设计:影响性能的决定性因素,需要在设计之初考虑
- 实现方案设计:影响性能的主要因素,在不改变整体架构的情况下可以修改
- 编码实现:目前情况下是重要因素,也是可以不断改进的因素
系统或组件的性能问题,对外的表象上反应为:
- 请求响应延迟时间过长
- 资源占有量过大
对常见的性能问题进行分析,可以发现对于一个系统或组件来说,性能问题经常发生在以下方面:
- 实体间通信或者调用处理(包括数据库)
- 频繁调用函数、模块处理过程、数据组织等问题
- 并行处理资源争用引起的延迟
- 串行处理进程/线程间等待延迟