我正在寻找一个用于.Net / Mono 分布式计算的框架(开源),它不仅基于任务,而且支持分布式任务的持久性。
手头的项目是一个复杂的系统模拟,需要将其分配到更小的独立“子模拟”中。这些子模拟将持续运行很长时间,并且会不时地接收数据并将数据发送回主控,主控会更新汇总结果的视图并将其呈现给用户。
因此,要分发的工作(子模拟)是有状态的,并且应该在多个会话中长时间在工作人员处保持存在(在线或离线)。这将需要 Worker 进行本地持久存储(序列化)(子模拟非常大,每次会话都将它们来回发送给 Master 效率不高)。
该框架应该通过允许使用不同的实现(即本地集群、互联网、单机、第 3 方云平台)来提供关于正在使用的实际底层网络或云平台的透明度。
如果在模型/模拟级别,可以根据网络延迟调整性能(例如通过调整在 Workers 和 Master 之间发送的数据的频率和粒度),那就太好了。
我查看了 NGrid,但这似乎未完成且过时。我还查看了其他一些常见的嫌疑人(MPAPI、MPI.NET、Alchemi 等),但据我所知,这些不符合要求。如果不存在这样的框架,我对设计这种框架的技巧很感兴趣。