gpt4 book ai didi

c# - .net 分布式网格计算迁移,关于库、架构的建议

转载 作者:太空狗 更新时间:2023-10-29 20:35:38 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我有一个 c#多线程蒙特卡罗模拟 ,应用程序已经结构化,可以将其划分为独立执行的任务,TaskController 执行任务,聚合中间结果,检查收敛(提前终止标准)然后返回最终结果,目前使用 ThreadPool 实现。

我会 喜欢利用多台计算机来帮助计算 .我没有使用 IIS 的批准或基础设施(这是不会改变的政策),但我可以使用例如 WCF 与 NetTcpBinding 端点绑定(bind),我已经测试了这种跨服务器的通信,它具有适当的权限和工作。

首先,我想在其他服务器上有一个主 exe(控制台应用程序)和几个从属服务器作为专用工作人员(这些应该是 exes 吗?还是 windows 服务?),最终我可以让这个设置在 上运行数百个工作站 期间公司内部(以及服务器)空闲时间 (或当屏幕保护程序处于事件状态时)。

我可以自己写这个,但我必须处理通信,1、2 路?提前终止(中间收敛结果检查)、取消不再需要的任务、部署工作、发现用于部署工作的可用和就绪机器、如果工作站不再空闲则限制/暂停工作?分布式系统中的所有其他内容?

主人(任务 Controller )应该知道所有奴隶 worker 的地址(ip)并告诉他们工作(如果它们可用的话),还是奴隶 worker 应该只知道主人地址并在他们有能力时请求工作这样做,还是沟通应该双向流动?这将在 上运行24 小时制 每天大约启动 9 次运行,以支持不同的业务区域。

我正在寻找有关 的建议.net 网格/分布式库 这可以帮助并在这项工作中提供一些架构建议。

更新

有没有人使用以下任何一种体验?

http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/

或使用来自 .net 的 JavaSpaces、Jini 或找到等效的 .net 技术
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org

谢谢

最佳答案

我会调查使用 space-based architecture 的可能性为了这。

master 会将作业写入一个空间(本质上是一个对象存储库)。消费客户一直在寻找工作,当工作变得可用时,他们将从空间中提取、处理并将结果写回该空间或另一个空间(全部在事务下)。您可以将作业标记为属于特定运行,以便对结果进行分组。

这样做的好处是很容易扩展(只需添加更多的消费者)。消费者必须确定他们何时可以工作,并且只需要配置有关空间的信息(如何找到它)。生产者与消费者集完全分离。

因为工作是在事务下处理的,如果一个消费者未能完成,工作将返回到空间并可供另一个消费者处理。

您可以轻松处理中间结果。生产者从空间中获取结果,并且可以在结果可用时获得中间体。您可以轻松取消作业。只需将它们从空间中删除即可。

您可以非常轻松地添加更多生产者。他们只是写到同一个空间,如果工作被适本地标记,结果就会明确地与生产者联系在一起。

不幸的是,我不确定 .Net 可以使用哪些框架(我来自 Java 世界,会使用 Javaspaces - 这些使用动态发现,几乎不需要配置)。但值得一些谷歌搜索。也许(如果这足够强大的话),您可以编写 C# 生产者/消费者来连接到 Javaspace 基础设施。

关于c# - .net 分布式网格计算迁移,关于库、架构的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com