0

我正在寻找一个用于.Net / Mono 分布式计算的框架(开源),它不仅基于任务,而且支持分布式任务的持久性。

手头的项目是一个复杂的系统模拟,需要将其分配到更小的独立“子模拟”中。这些子模拟将持续运行很长时间,并且会不时地接收数据并将数据发送回主控,主控会更新汇总结果的视图并将其呈现给用户。

因此,要分发的工作(子模拟)是有状态的,并且应该在多个会话中长时间在工作人员处保持存在(在线或离线)。这将需要 Worker 进行本地持久存储(序列化)(子模拟非常大,每次会话都将它们来回发送给 Master 效率不高)。

该框架应该通过允许使用不同的实现(即本地集群、互联网、单机、第 3 方云平台)来提供关于正在使用的实际底层网络或云平台的透明度。

如果在模型/模拟级别,可以根据网络延迟调整性能(例如通过调整在 Workers 和 Master 之间发送的数据的频率和粒度),那就太好了。

我查看了 NGrid,但这似乎未完成且过时。我还查看了其他一些常见的嫌疑人(MPAPI、MPI.NET、Alchemi 等),但据我所知,这些不符合要求。如果不存在这样的框架,我对设计这种框架的技巧很感兴趣。

4

2 回答 2

1

您看过 Microsoft DSS / CCR 框架吗?它是最初在机器人平台上开发的 SOA,并发框架。我们之前用它来创建交通模拟器。它本身不是开放的,但它并不昂贵,我相信学术界是免费的。

您必须编写逻辑来创建并行作业,但这在理论上应该不难。该框架有一堆管理工具。

Hadoop 也是另一种选择,可能是我推荐的。通过使用 hadoop 文件系统的此解决方案,您提出的存储请求更可行。

http://wiki.apache.org/hadoop/HadoopStreaming 是否有与 Apache Hadoop 等效的 .NET?

在上面的 SO 线程中还有 myspace 技术 http://code.google.com/p/qizmt/

于 2010-08-17T18:32:25.377 回答
0

看看 Gearman ( http://gearman.org/ )。它提供了您提到的大部分要求。Gearman 的主要问题是服务器必须托管在 Linux 机器上(或者您使用服务器的 PEARL 或 Python 实现)。节点可以在任何环境/平台上运行。

于 2010-07-19T15:26:22.770 回答