分布式计算框架(.NET) - 专门用于 CPU 密集型操作 [关闭]
Posted
技术标签:
【中文标题】分布式计算框架(.NET) - 专门用于 CPU 密集型操作 [关闭]【英文标题】:Distributed Computing Framework (.NET) - Specifically for CPU Intensive operations [closed] 【发布时间】:2010-12-17 19:57:06 【问题描述】:我目前正在研究可用于开发分布式应用程序的选项(开源和商业)。
“分布式系统由通过计算机网络进行通信的多台自治计算机组成。”***
该应用程序专注于分发高度 cpu 密集型 操作(而不是数据密集型),因此我确信 MapReduce 解决方案不符合要求。
您可以推荐的任何框架(+ 简要总结任何经验或与其他框架进行比较)将不胜感激。
【问题讨论】:
我正在积极研究这个主题,所以我也不会为这个问题添加自己的答案而感到羞耻,一切都是为了更大的利益! 我已经回答了社区 Wiki(似乎是正确的),以便在社区认为合适时添加更多感兴趣的注释。 那么几年后,MPAPI 仍然是您认为的正确答案吗? 安德烈亚斯,我不确定。 MPAPI 仍然有效,现在可能有更好的选择。自己动手并不难,这就是我现在面临同样问题的方式。这只是工作调度和消息传递。 我认为这不应该被关闭。因为这是一个真正的问题。 【参考方案1】:MPAPI 框架 - http://www.codeplex.com/MPAPI
我的想法
似乎是更简单的解决方案之一。 我看不到故障转移支持的证据。 开源 =] 并且兼容 MONO 耶! 使用“RemotingLite”框架确保单声道兼容性。 编写单机或多机(集群)应用程序同样简单。 开发人员的理念是“性能至上”。所以可以肯定地说他已经优化了。 不断更新框架。【讨论】:
我真的很喜欢 MPAPI。它几乎做了我想做的所有事情,但不是全部,所以我在 Frank 的工作的启发下创建了 DuoVia.MpiVisor。对我来说它更容易使用,但这可能是因为我写了它。 ;-)【参考方案2】:我是 Alchemi 的主要开发人员之一。 我们不得不改变方向,重新开始,结果就是利用平台。 Utilify 平台在概念上与 Alchemi 相似,建立在从 Alchemi 吸取的经验教训之上,并提供了更灵活的编程模型来在 Windows 网络上构建分布式 .NET 应用程序。
请访问 www.utilify.com 了解更多信息。目前,有免费的测试版可供下载。
问候, 克里希纳。
【讨论】:
我尝试安装 Utilify Manager 并收到错误消息。所以我无法继续前进。错误表示包已损坏。【参考方案3】:Appistry CloudIQ 平台 http://www.appistry.com
将使数百台机器显示为一个计算资源。 目前在FedEx 的生产环境中用于运行路由算法 允许您使用 C、C++、Java 和 .Net 编写应用程序 无单点故障 自动恢复/重试失败的任务【讨论】:
这项工作具体如何?它像网络流量负载均衡器吗?我们使用了appliedalgo.com——它负责调度、执行管理(持久性+执行历史/参数/结果的跟踪)、负载平衡。他们的负载平衡实现基于 CPU/内存使用和磁盘活动(也有覆盖)计算“主机分数”,以及可从 .NET 和 Java 客户端访问的简单“扩展 API”。最重要的是,它是一个完全独立的服务器应用程序,具有自己的 GUI,因此您可以调用执行参数和结果并进行快速比较。 关于applyalgo.com,你说他们支持Java和.NET,但它只能在Windows上运行?另外,C++呢? Linux 呢? 我们公司只有 .NET、Java 和一些 SQL 编码的作业,没有 C++ 编码,我不确定它们是否支持 C++ 客户端。使用 AppliedAlgo,您可以通过“Extension API”对批处理进行编码 - 通过 .NET 的 WsHttpBinding 和 Java 的 BasicHttpBinding 公开的基于 WCF 的接口。然而,没有提到 C++。此外,它们的负载平衡通过分发到连接的节点(NodeController,它只在 Windows 上运行,而不是 Linux)来工作 不,我想您可能使用的是早期版本。我在他们的网站上说他们确实支持“非托管 C++”,但仅限 Windows。 Applied Algo ETL Suite 在 WCF(任何可以与 WCF 对话的语言中构建的作业都可以与之通信)和 RabbitMQ(RabbitMQ 具有许多语言的 API,例如 Perl/Python)公开了“扩展 API”。 ..等等)。他们为非托管 C++/.NET 和 Java 捆绑了示例。但不限于这些。【参考方案4】:Alchemi“.NET 网格计算框架”
http://www.gridbus.org/~alchemi/publications.html
http://sourceforge.net/projects/alchemi/files/
Alchemi 是一个 .NET 网格计算框架,可让您轻松地将 Intranet 和 Internet 连接机器的计算能力聚合到虚拟超级计算机(计算网格)中,并开发在网格上运行的应用程序。
快速笔记:
在 2007 版本 1.0.6 (.NET 2.0) 中停止更新。 有据可查,正式这样做了。 使用 XML 定义作业。 (在 2007 年风靡一时,一切都使用 XML) 与 MPAPI 相比相对复杂,但不要认为这是一个很大的负面因素。 需要很长时间才能跟上进度。 是开源的 =)。 可扩展,可通过 Gridbus 代理 (http://www.gridbus.org) 与其他集群技术结合使用 似乎被广泛使用(参见出版物http://www.gridbus.org/~alchemi/publications.html)=)【讨论】:
【参考方案5】:Azure 网格 - http://azuregrid.codeplex.com/
社区版 Neudesic 网格计算框架 (http://www.neudesic.com/insight/Publications/Pages/PUB20090428.aspx) 包括用于启动和监控作业运行的 GUI。 Part 1: A Design Pattern for Grid Computing on Azure. Part 2: Coding an Azure Grid Application. Part 3: Running an Azure Grid Application.【讨论】:
【参考方案6】:DryadLINQ 是一个 Microsoft Research 项目,它允许 LINQ 查询分布在多台计算机上,而不是像并行 LINQ 那样只分布在多个内核中。
Blog post with a brief example.
【讨论】:
【参考方案7】:适用于 .NET 的 AWS 开发工具包 - http://aws.amazon.com/sdkfornet/
我认为这种云产品和 .NET api 也可能符合要求。 Amazon 提供高性能机器 (see price list),允许委派大规模执行高 CPU 密集型操作。
【讨论】:
【参考方案8】:NGrid - http://ngrid.sourceforge.net/
概述
NGrid 是一个用 C# 编写的开源 (LGPL) 网格计算框架。
通过 Mono 独立于平台 项目。 一个透明的多线程编程 网格编程模型。 一个物理网格框架和一些网格 实现。 电网通用实用程序 编程或网格实现。 上次更新时间为 2008 年 5 月【讨论】:
NGrid 仍在进行中?以上是关于分布式计算框架(.NET) - 专门用于 CPU 密集型操作 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
WorkerMan 入门学习之GatewayWorker框架使用