首页 文章

亚马逊网络服务:在EC2 Cloud 上为.Net网格计算提供哪些解决方案?

提问于
浏览
3

我公司的需求非常简单:我们有一个多线程的.Net计算程序,可以读取许多Gb的二进制文件,处理大量计算,并将结果存储到SQL Server数据库中 . 我们希望在 Cloud 上执行此操作,以在尽可能短的时间内执行此循环任务 .
所以我们正好进入 Cloud /网格/集群计算的事情 .

我以为会有很多关于这个问题的资源和大量可用的替代方案 . 我只是惊呆了,弄清楚我是多么的错 . 虽然安装/运行EC2实例是轻而易举的,但找到一种相对简单直接的方法来并行化和聚合这些EC2实例的处理能力并不容易 . 亚马逊的客户服务一直在躲避,我根本无法得到他们的具体答案 .

我找到utilify听起来很有希望 . 它由alchemi人开发 . 然而,当我联系支持时,documentation link被打破了,我的电子邮件没有答案,所以这不是很令人放心 .

我们选择亚马逊而不是Azure,因为AMI是直接无缝的VM(不需要“捆绑”应用程序或其他),因为EBS是一个更“方便”的存储,因为它是一个“真正的”文件系统 . 另一方面,Azure看起来HPC已准备好用于Windows,而AWS仅为Linux驱动的AMI提供 .

任何帮助和主张都非常受欢迎

EDIT :
.Net应用程序是多线程的,由数百个并行工作程序组成,它们异步执行完全相同的任务 .

3 回答

  • 3

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

    Azure与EC2上的部署差异正是因为Azure要求您以更大的规模进行思考,然后再考虑EC2 . 如果你想在EC2上扩展,你必须自己做或使用它们的Elastic Bean Stalk,它目前只支持Apache Tomcat上的Java .

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

  • 0

    如果您可以返回Azure而不是EC2,那么:

    对不起 - 没有任何类似的EC2参考 - 尽管你可以从微软的Dryad项目中获得一些灵感(我认为这些目前仅在“教育”非商业许可下提供)

  • 0

相关问题