Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用F#(.Net)执行分布式计算_.net_F# - Fatal编程技术网

如何使用F#(.Net)执行分布式计算

如何使用F#(.Net)执行分布式计算,.net,f#,.net,F#,因此,我最近在F#中对异步库有了一些乐趣,并对Async.Parallel感到非常惊讶,它基本上接受了一系列异步任务,并将它们统一到一个异步任务下 然而,现在我很好奇如何在多台计算机之间分配计算任务,例如我桌上的两台笔记本电脑 是否可以序列化这些异步任务并将其发送到另一台计算机,然后由另一台计算机执行任务并将结果发送回 或者我需要序列化数据本身并将其发送到另一台计算机,在这台计算机上运行一些代码来执行计算并将结果发送回 或者也许还有另一种简单的方法 在F#中使用.Net进行分布式计算的一般方法是

因此,我最近在F#中对异步库有了一些乐趣,并对Async.Parallel感到非常惊讶,它基本上接受了一系列异步任务,并将它们统一到一个异步任务下

然而,现在我很好奇如何在多台计算机之间分配计算任务,例如我桌上的两台笔记本电脑

是否可以序列化这些异步任务并将其发送到另一台计算机,然后由另一台计算机执行任务并将结果发送回

或者我需要序列化数据本身并将其发送到另一台计算机,在这台计算机上运行一些代码来执行计算并将结果发送回

或者也许还有另一种简单的方法

在F#中使用.Net进行分布式计算的一般方法是什么?(推荐的设计模式、工具、库等)

我的最终目标是将一个大的计算任务分解成更小的部分,并在多台机器上运行它们。最好是以一种过于简单的、非企业的、过于复杂的方式。

有一个名为的项目,它几乎完全符合您所描述的:-)

它允许您使用
cloud
块编写云计算:

let first = cloud { return 15 }
let second = cloud { return 27 }
您可以使用
let
与异步工作流一样,您也可以使用
Cloud.ofAsync
从异步工作流创建它们。云计算可以使用
云在网络上分布。并行

cloud {
  let! results = [ first; second ] |> Cloud.Parallel
  return List.sum results }
目前,有用于在本地(用于测试)和Azure集群内部运行计算的Membrace绑定,但在支持Amazon方面也有一些工作正在进行中


有关更多信息,请参见Mathias Brandewinder在

上的精彩演讲。fsharp.org有一个处理此问题的页面,它提供了有关此问题的最新资源

正如Tomas Petricek所说,这似乎是用F#进行分布式计算的惯用方法。遗憾的是,它专注于云计算(Azure和Amazon),提供的关于本地多机集群的信息很少。我找到了一个解决这个问题的方法,似乎提供了一个解决方案,但是一个官方教程(也许还有一些内置函数)会很好

微软的是在F#开发的,它提供了Sparks的替代品。该文档解释了如何构建本地(似乎仅限于windows计算机)。这可能是最简单的解决办法,但它似乎已经死了


另一个选择可能是akka.net,它有一个。

我绝对推荐您使用akka.net。我目前正在使用它实现分布式集成解决方案,我可以告诉你,这真是太棒了。微软研究院的“奥尔良项目”也相当不错,尽管它不是惯用的f#方法

如今,无论使用何种语言和平台,都没有“简单”的方法来进行分布式计算,因为工具和标准还不太成熟。我建议您首先查看Akka.Net。但这只是针对云计算的,OP询问了一张桌子上的两台计算机。@FyodorSoikin我从未使用过Membrace,但快速查看了一下。我认为托马斯是对的。记忆看起来确实很有趣。教程网站上说,
“您可以使用实例创建一个多机集群……本教程没有介绍这一点。”
,有没有关于如何开始创建一个本地集群(例如两台本地计算机)的指南?(我简单地看了一下Membrace文档,并没有看到任何直接明显的方法。我想我会在下个周末更好地看一下它)