背景:我正在为面向服务架构 ( SOA )中的系统开发一个调度程序,其框架类似于Internet 通信引擎 ( ICE )。
系统中的服务根据其工作负载在多台机器上运行。例如,当工作负载为 1000/秒时,服务 A 将在 10 台机器上运行,而当工作负载为 10000/秒时,服务 A 将在 100 台机器上运行。
在系统中,一个服务也调用其他服务。因此,服务 A 的响应时间不仅取决于每台机器上的工作量,还取决于服务 A 调用的服务 B、C、D 的响应时间。如果服务 B 出错,则服务 A 出错,也。当服务调用网络复杂时,当一个服务开始出错时,就会有很多服务出错。很难确定哪个服务应该有更多的机器。
由于系统性能的原因,我们在调度时无法对所有服务有一个全貌。因此,我们需要根据服务 A 的本地信息做出决策。
问题是我们能否对服务 A 建模以在给定服务 A 的情况下预测服务 A 的性能(服务 A 的当前工作负载、服务 B、C、D 的当前性能以及机器上的当前资源利用率)。
目的:我们可以通过模型找出导致服务A性能下降的因素(服务B/C/D的性能下降还是资源限制?)。
给定:训练数据可以是服务 A、B、C、D 的历史性能(平均响应时间、工作负载)以及运行服务 A 的机器上的资源利用率。