评估软件架构的性能?

时间:2010-09-26 15:27:16

标签: performance architecture modeling evaluation

我正在寻找可以帮助我评估软件架构性能的工具。对于这个特定项目,我需要建模一个适度大小的[distributed]系统,该系统可与面向消息的中间件(MOM)相媲美。基于模型我想在某些情况下测量系统的性能。此外,这些工具应该帮助我决定架构的更改如何影响系统的性能。

以下是我希望能够回答的一个示例问题(与MOM类比):
如果持久层从SQL后端更改为某些花哨的新NoSQL后端并且最终的一致性,整个系统的吞吐量(以消息/ s为单位)会如何变化?在[简化]模型中,需要持久化(即写入DB)的组件具有延迟X ms的操作,直到持久性提供程序确认为止。如果持久性后端改变并且确认是即时的,那么所述延迟将下降到Y ms。如何减少这种延迟会影响系统的吞吐量?

请注意,我主要对准备使用软件产品或建模技术而不是研究材料感兴趣,但不过可以随意提及值得注意的学术资源。

6 个答案:

答案 0 :(得分:1)

您给出的示例更多的是设计和实现的变化 - 而不是架构。当然,NoSQL的实现可能会更快并且总体上会增加吞吐量,但它的实现性能正是您要测量的。

我建议架构的性能更多地基于所涉及的组件数量以及它们的排列方式 - 这取决于您在“架构”和“设计”之间划线的位置(以及实现细节)

Roger Sessions花了很多时间来研究IT系统中的impact of complexity(特别是面向服务的架构)。就个人而言,我怀疑一个更复杂的架构可能效率不高,因此速度不快的想法是有道理的。

我不确定你是否真的可以测试架构的“性能” - 从它只存在于“纸上”的角度来看。众所周知,在纸上看起来很完美的飞机会扼杀试飞员。

在软件方面,我知道各种建模系统都具有让您通过流程并找到瓶颈的功能;我所知道的唯一一个是ProVision(但可能还有其他人)。

答案 1 :(得分:0)

虽然主要用于网络研究,但ns-3 simulator可用于建模和模拟您的应用程序。它可能取决于您的应用程序以网络为中心的方式。 ns-3有一个Application类作为其对象模型的一部分,用于模拟TCP / UDP以上的所有内容。您可以编写一个非常简化的应用程序逻辑版本,它只会通过网络发送乱码并在特定操作中引入延迟。 ns-3提供良好的可追溯性。

答案 2 :(得分:0)

SimPy这样的模拟器框架对于建模和模拟系统的行为很有价值。与ns-3之类的东西相比,你没有现成的零件,但你不会受到以网络为中心的模拟的限制。

使用这种方法,你可以自由地进行建模,但是如果不是从一个好的对象模型开始,那么更改模型中的部件可能会非常耗时:使用像这样的通用概念可能是个好主意。 “通道”用于组件之间的通信,而不是直接/明确地连接组件。 OO概念和最佳实践适用。

答案 3 :(得分:0)

This master thesis评估了几个Architecture description languages (ADLs)及其对评估体系结构性能的适用性。它得出结论,当前的ADL不支持在性能预测方面评估非功能属性。本文还介绍了一种名为SAPE(软件架构性能评估)的软件,正如其名称所暗示的那样,旨在帮助评估软件架构的性能方面。看来这个软件无法在网上任何地方使用。

答案 4 :(得分:0)

This paper概述了从[正式]软件架构规范中推导性能模型的几种方法。大多数方法中使用的规范语言是UML,性能模型[quote:] 包括排队网络(QN)及其扩展,称为扩展排队网络(EQN)和分层排队网络(LQN),随机定时Petri网(STPN) ),随机过程代数(SPA)和仿真模型

答案 5 :(得分:0)

可能OMNeT++最接近我的想法:

  

OMNeT ++是一个离散事件模拟   环境。它的主要应用   区域是模拟   通信网络,但因为   其通用且灵活的架构,   已成功用于其他领域   喜欢模拟复杂的IT   系统,排队网络或硬件   架构也是如此。

相关问题