我正在寻找一个用于.Net / Mono的分布式计算的框架(开源),它不仅是基于任务的,而且支持分布式任务的持久性。
手头的项目是一个复杂的系统仿真,需要分布到较小的独立“子仿真”中。这些子模拟将持续运行很长一段时间,并将每隔一段时间接收数据并将数据发送回Master,在Master中更新具有聚合结果的View并将其呈现给用户。
因此,要分发的工作(子模拟)是有状态的,并且应该在多个会话中在Worker中存在很长一段时间(在线或离线)。这将需要Worker进行本地持久存储(序列化)(子模拟非常大,在每个会话中来回发送它们到Master是不会有效率的)。
该框架应通过允许使用不同的实施(即本地群集、互联网、单机、第三方云平台)来提供对正在使用的实际底层网络或云平台的透明度。
如果在模型/模拟级别,性能可以根据网络延迟进行调整(例如,通过调整Worker和Master之间发送的数据的频率和粒度),那就更好了。
我看了看NGrid,但这似乎还没有完成,而且已经过时了。我还研究了其他一些常用的工具(MPAPI、MPI.NET、Alchemi等)。但据我所知,这些都不符合要求。如果不存在这样的框架,我对设计这样的框架的技巧很感兴趣。
发布于 2010-08-18 02:32:25
您看过Microsoft DSS / CCR框架吗?它是一个SOA并发框架,最初是在机器人平台上开发的。我们之前使用它创建了一个交通模拟器。它本身不是开放的,但也不是很贵,而且我相信它对学术界是免费的。
您必须编写逻辑来创建并行作业,但这在理论上应该不是很难。这个框架有一堆管理工具。
Hadoop也是另一种选择,可能是我推荐的。在这个使用hadoop文件系统的解决方案中,您发出的存储请求更加可行。
http://wiki.apache.org/hadoop/HadoopStreaming Is there a .NET equivalent to Apache Hadoop?
在上面的线程中还有myspace技术http://code.google.com/p/qizmt/
发布于 2010-07-19 23:26:23
看看Gearman (http://gearman.org/)吧。它提供了您提到的大多数需求。Gearman的主要问题是服务器必须托管在Linux机器上(或者使用服务器的PEARL或Python实现)。这些节点可以在任何环境/平台上运行。
https://stackoverflow.com/questions/3160133
复制相似问题