亚马逊网络服务:在EC2云上进行.Net网格计算的解决方案有哪些?

3
我的公司的需求非常简单:我们有一个多线程的 .Net 计算程序,读取许多 GB 的二进制文件,进行大量计算,并将结果存储到 SQL Server 数据库中。我们希望在云上执行这个重复任务,以尽可能短的时间完成。
所以我们正处于云/网格/集群计算的领域。
我认为这方面会有大量资源和可用的替代方案。但我惊讶地发现自己错了。 虽然挂载/运行 EC2 实例很容易,但找到一种相对简单和直接的方式来并行化和聚合这些 EC2 实例的处理能力并不容易。亚马逊客户服务一直在回避问题,我无法从他们那里得到具体的答案。
我发现 utilify 很有前途。它是由 alchemi 的人开发的。 然而,文档链接 已经失效,当我联系支持时,也没有得到答复,这让我感到不安。
我们选择亚马逊而非 Azure,因为 AMI 是直接无缝的虚拟机(无需“打包”应用程序或其他),而且 EBS 是更方便的存储,因为它是一个“真正”的文件系统。另一方面,Azure 似乎已经为 Windows 准备好了 HPC,而 AWS 仅为 Linux 强力 AMI 提供此功能。
欢迎任何帮助和提议。
编辑:.Net 应用程序是多线程的,由数百个并行工作器异步完成完全相同的任务。

Azure目前具有本地文件系统访问功能,我认为它被称为“Cloud Drive”。其次,在并行化方面没有显而易见的解决方案,这完全取决于您的应用程序。我建议首先在本地对应用程序进行并行化处理,然后将其扩展到网格计算中。试图直接从同步应用程序转向并行化网格计算应用程序是“疯狂”的做法。 - Chris Marisic
@Chris Marisic:请看编辑。我认为说多线程已经足够强调我们的应用程序是异步的了。此外,与普通虚拟机相比,在Azure上部署应用程序是具有侵入性的,因此除非别无选择,否则最好坚持使用EC2。 - Mehdi LAMRANI
1
从问题的措辞来看,我觉得你试图将一个普通应用程序立即转换为网格计算。关于你对Azure的陈述,听起来你对当前平台大部分都不了解,并且有一些偏见,这可能是由于之前版本的影响。我建议重新评估Azure在这个角色中的作用,因为你描述的情况正是Azure被创建的确切原因。 - Chris Marisic
3个回答

3

Amazon EC2是一个基础设施即服务系统(IaaS),这意味着EC2将为您提供硬件和操作系统,但不会为您解决网格计算问题。这与Windows Azure形成对比,后者是平台即服务(PaaS)系统,需要使用不同的架构,其中您的应用程序被分解为不同的角色(Web角色、工作角色等),可以轻松扩展到网格中。有关IaaS vs PaaS的更多详细信息,请参见此问题。

Azure与EC2的部署差异在于Azure要求您考虑比EC2更大的规模。如果您想在EC2上进行扩展,您必须自己完成或使用他们的Elastic Bean Stalk,目前仅支持Apache Tomcat上的Java。

关于如何设计系统,我的建议是找到一种将问题分解为可以在单个机器上处理的块,并将描述如何执行工作的消息加载到队列中的方法。然后,您可以让EC2实例或Azure角色从队列中拉出工作,执行所需的计算,然后直接将结果存储在目标位置,或将结果发送到输出队列,然后汇总结果。这是进行网格计算的最简单方法,而不需要完全重新设计,比如MapReduce。但仍然需要担心如果VM在提交结果之前死亡会发生什么,但这可以通过在结果被提交之前不删除队列条目来管理。

0

如果你可以回到Azure而不是EC2,那么:

抱歉 - 没有EC2的类似参考资料 - 尽管您可能能够从Microsoft的Dryad项目中获得一些灵感(我认为这些目前仅在“教育”非商业许可下提供)


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接