支持分布式任务持久性的.Net / Mono分布式计算框架

时间:2010-07-01 17:19:39

标签: .net frameworks persistence simulation distributed-computing

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

手头的项目是一个复杂的系统模拟,需要分配到较小的独立“子模拟”中。这些子模拟将持续运行很长时间,并且会定期接收数据并将数据发送回主服务器,其中正在更新具有聚合结果的视图并将其呈现给用户。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

http://wiki.apache.org/hadoop/HadoopStreaming Is there a .NET equivalent to Apache Hadoop?

同样在上面的SO线程是myspace技术 http://code.google.com/p/qizmt/

答案 1 :(得分:0)

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