我有一个应用程序,我希望将其作为Web服务(SaaS)公开。该应用程序是CPU密集型的,是一个多线程应用程序,需要花费大量的时间来执行(平均15-20秒)。因为,我想将其作为SaaS公开,并希望使用亚马逊,谷歌App Engine等市场上现有的云服务,以便在扩展我的服务时所涉及的成本和所涉及的工作并不多。我脑子里有几个问题:
1。)由于应用程序是多线程的,并且调用的线程数取决于服务抛出的结果数(因此基本上线程数是动态实体)。现在我有一个6核处理器,所以我保持线程池大小为6但是因为我正在迁移到云,我怎样才能最佳地使用云基础架构?
2。)云服务提供商(?)是否可以选择为每个请求选择所需的CPU核心数(或者类似于我的目的)?
3.。)代码需要进行哪些更改(与线程相关)?
4。)我应该看到移动到云端的任何其他特定区域?
答案 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。在你实际支付某些费用之前做一些研究。