.NET或JAVA用于志愿计算(互联网节点)的框架建议

时间:2011-01-10 08:47:31

标签: frameworks client-server distributed-computing grid-computing

我希望在互联网上订阅我的服务器的客户端机器捐赠他们的闲置cpu周期。(如SETI @ Home)

他们会从服务器到处理工作(工作单位),并将结果发送回服务器。 (这是最简单的描述)。我需要的框架应该允许我定义一个工作/任务。其余的事情,如沟通,工作执行/跟踪,客户端二进制更新等应该由框架管理。

  • 我对Alchemi.NET进行了一些评估,但它没有得到积极维护,似乎是半生不熟的。

  • BOINC在C中有API,但我想要一个.NET或JAVA框架。

  • 我正在看Manjrasoft的ANEKA,但它似乎只适用于局域网云。

必须有一些这样的框架可用。我需要专家建议!

4 个答案:

答案 0 :(得分:0)

我不是专家,但我对使用MPI(使用C)的分布式计算有一点经验。你所说的并不像网格计算,而是主/从系统。那就是你的服务器是主服务器,它指导所有客户端(从服务器)。

我对.net编程知之甚少,所以我会说一般。

那里有很多网页框架,可能大多数都有你需要的设施。那就是你的客户端将能够上传他们收集的内容的文件(或者他们可以只使用http get / post),因为你不必担心UI问题,你可以通过一个动作来处理所有事情(假设一个基于行动的网络框架)。然后,服务器可以通过JSON或XML返回响应,客户端可以使用它来进一步指导。如果系统非常简单并且可能是原型设计的良好选择,JSON是正确的选择。

对于应用程序升级,我会认为这是一个单独的问题(尽管服务器将其返回给客户端应该是一件简单的事情)。

答案 1 :(得分:0)

BOINC是最自然地满足您的志愿计算要求的框架,它稳定且高度可扩展 - 我确保您在排除它之前已经完全考虑过它。

如果您需要在短期限内提供某些,那么我会考虑建立一个简单的主管(或调度程序) - 工作模式,只是为了让应用程序脱离实际。主管将负责分组数据并通过http提供。 Workers(您的客户端应用程序)将连接到管理服务器;下载一大堆工作;完成大块;并将结果上传给主管。

主要技巧是让状态机正常运行,以便您可以准确地跟踪每个工作块的状态。我将在后台的数据库中拥有主管持久状态。

您的首次发布是需要内部版本还是供公众使用?

虽然这有效但我开始考虑加快BOINC的速度并计划迁移。

答案 2 :(得分:0)

我的推荐

工作区:

  1. 有一个请求接收者,将消息放入消息队列,如rabbit mq
  2. 有很多工人,听同一个队列,从中完成工作并在完成后进行处理。
  3. 完成后,在另一个队列上发送一条消息,其中包含已知位置的URI,例如您的网络驱动器。目标是您解析的数据。
  4. 接收方收听这些“已完成”的消息。从URI获取数据。
  5. 完成。

    RabbitMQ附带great CLR APIs.

    同样的理由适用于Microsoft Azure及其AbbFabric Queue。加分是非常好的。

    热门版本

    http://topshelf-project.com/

    它提供了一个文件夹,您可以在其中删除二进制文件,然后运行它们。它管理这些的版本控制以及将它们作为Windows服务运行。

    部署

    您可以使用robocopy / xcopy和“net use Q:pwd \ server \ share”,“net delete Q:”

    部署二进制文件

    持续整合

    Teamcity

    在广泛使用MsBuild之后,我建议使用psake编写脚本并使用PowerShell运行构建。如果您使用PowerShell进行了高级操作,那么您的构建脚本中也可以使用WinRM,这非常顺利。

    使用git / subversion提交编号作为先前版本号中的0.0.0.x,x,并且您将具有在“Debug”/“Production”版本中“共享”的自动版本控制。

    Azure方式

    工作区:

    与上述相同,但使用AppFabric Queue而不是RabbitMQ。

    热门版本

    通过交换“暂存”和“生产”实例,可以避免停机。

    部署

    您可以访问Azure工具中的Visual Studio的MsBuild任务,因为可以阅读here,或者您可以使用PowerShell AzureSnapIns进行持续集成的类似设置。

    持续整合

    与上述相同。

答案 3 :(得分:0)

.net的ClickOnce安装程序如何管理自动更新的客户端二进制文件。 http://msdn.microsoft.com/en-us/library/t71a733d.aspx

我不确定一个“就业框架”,但微软的Sync框架支持滚动你自己的工作与客户同步?

http://msdn.microsoft.com/en-us/sync/default