在云上部署CPU密集型Web服务

时间:2012-11-23 20:39:17

标签: multithreading web-services cloud cpu

我有一个应用程序,我希望将其作为Web服务(SaaS)公开。该应用程序是CPU密集型的,是一个多线程应用程序,需要花费大量的时间来执行(平均15-20秒)。因为,我想将其作为SaaS公开,并希望使用亚马逊,谷歌App Engine等市场上现有的云服务,以便在扩展我的服务时所涉及的成本和所涉及的工作并不多。我脑子里有几个问题:

1。)由于应用程序是多线程的,并且调用的线程数取决于服务抛出的结果数(因此基本上线程数是动态实体)。现在我有一个6核处理器,所以我保持线程池大小为6但是因为我正在迁移到云,我怎样才能最佳地使用云基础架构?

2。)云服务提供商(?)是否可以选择为每个请求选择所需的CPU核心数(或者类似于我的目的)?

3.。)代码需要进行哪些更改(与线程相关)?

4。)我应该看到移动到云端的任何其他特定区域?

1 个答案:

答案 0 :(得分:0)

在Amazon EC2中,您基本上只需为different types of instances付费 - 您可以自由选择一个只有一个核心,一个只有十六个。你得到你付出的代价。

  

如何以最佳方式使用云基础架构?

您的方法很好,如果您的任务是CPU密集型的,则拥有一个与CPU内核/ CPU具有相同线程数的线程池。

  

选择每个请求所需的CPU核心数

不,至少不是亚马逊。您在给定的实例上运行应用程序,这就是您所获得的。您必须提前选择实例类型,但当然您可以随时在它们之间切换,添加新实例等。云!

在Google App Engine you can't create threads中,所以对您来说这是一个无选择。另见:Why does Google App Engine support a single thread of execution only?

  

3.。)代码需要进行哪些更改(与线程相关)?

无。毕竟,这是一台标准的PC。

  

4。)我应该看到移动到云端的任何其他特定区域?

好吧,看看上面的一些服务对你来说完全没用,比如GAE。在你实际支付某些费用之前做一些研究。