【问题标题】:Distributed Computing Framework (.NET) - Specifically for CPU Intensive operations [closed]分布式计算框架(.NET) - 专门用于 CPU 密集型操作 [关闭]
【发布时间】:2010-12-17 19:57:06
【问题描述】:

我目前正在研究可用于开发分布式应用程序的选项(开源和商业)。

“分布式系统由通过计算机网络进行通信的多台自治计算机组成。”维基百科

该应用程序专注于分发高度 cpu 密集型 操作(而不是数据密集型),因此我确信 MapReduce 解决方案不符合要求。

您可以推荐的任何框架(+ 简要总结任何经验或与其他框架进行比较)将不胜感激。

【问题讨论】:

  • 我正在积极研究这个主题,所以我也不会为这个问题添加自己的答案而感到羞耻,一切都是为了更大的利益!
  • 我已经回答了社区 Wiki(似乎是正确的),以便在社区认为合适时添加更多感兴趣的注释。
  • 那么几年后,MPAPI 仍然是您认为的正确答案吗?
  • 安德烈亚斯,我不确定。 MPAPI 仍然有效,现在可能有更好的选择。自己动手并不难,这就是我现在面临同样问题的方式。这只是工作调度和消息传递。
  • 我认为这不应该被关闭。因为这是一个真正的问题。

标签: .net frameworks distributed distributed-computing grid-computing


【解决方案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】:
    【解决方案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 仍在进行中?
        猜你喜欢
        • 2011-12-24
        • 2011-03-23
        • 2011-04-11
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        相关资源
        最近更新 更多