达网络分布式网格计算迁移,在库建议体系结构[关闭]
-
22-07-2019 - |
题
我有一个的 C#多线程蒙特卡罗模拟下,应用程序已经构造为使得其可通过成独立地执行的任务被划分,一个TaskController执行任务,汇总为中间结果,支票收敛(提前终止条件),然后返回最终结果,这是使用一个线程池目前实现。
我的想利用多台计算机在该计算以帮助。我没有批准或基础设施使用IIS(这个政策不会改变),但我可以使用例如 WCF与NetTcpBinding的端点绑定,我测试过在服务器和它这个通信具有适当的权限和工作原理。
要开始我想有一个主EXE(控制台应用程序),并在其他服务器上的几个奴隶专用工人(应该是这些EXE文件?或Windows服务?),最终我能有这个设置来运行的数百在公司内的工作站强>(以及服务器)的过程中的闲置时间强>(或当屏幕保护已被激活)
我会这样写我自己,但我必须处理通信,1,2路?提前终止(中间收敛结果检查),工作部署取消不再需要的任务,工作部署,提供和准备机器的发现,节流/工作暂停,如果工作站不再闲置?其他一切变为分布式系统?
当主(任务控制器)知道所有的奴隶工的地址(IP),并告诉他们做的工作(如果可用),还是应该从工人只知道主地址及要求的工作时,他们在有能力这样做,或通信应沿着两个方向流动?这将有大约9运行在一个二十四小时制运行,每天拉开序幕,以支持不同的业务区域。
我要寻找的 .NET网格/分布式库,可以帮助在这一努力中的一些架构的意见建议。
<强>更新强>
有使用任何以下的人的经验?
http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/
或使用的JavaSpaces,Jini的从.NET或发现等效.NET技术
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org
由于
解决方案
我将调查使用此基于空间的结构的可能性。
在主会写的作业到空间(实质上是一个对象库)。消费的客户一直在寻找工作和就业作为可用,他们会拉从空间,过程和写回结果到空间,或其他(所有交易下)。你会标记乔布斯属于一个特定的运行,以团体成绩。
这样做的优点是,这扩展非常容易地(简单地通过添加更多的消费者)。消费者将不得不决定时,他们可以工作,只需要提供关于空间(如何找到它)的信息进行配置。制片人从一组消费者的完全解耦。
由于工作是一个事务处理下,如果消费者未能完成,工作返回到空间和可用于处理由另一个消费者。
可以很容易地处理中间结果。生产者承担了从空间结果,并可以得到中间体作为结果变得可用。您可以轻松地取消作业。简单地从该空间移除。
您可以很轻松地添加更多的厂家。他们只是写入相同的空间,并且如果作业被适当地标记的,结果被绑定到生产者明确。
我不知道什么框架可用于净,可惜(我从Java世界我和会使用的 JavaSpaces的 - 这些使用动态发现和旁边没有配置需要)。但值得一些谷歌搜索。也许,(如果这是足够强大),你可以写C#生产者/消费者交互的Javaspace基础设施。