2011年的分布式Haskell技术现状是什么?

21

我读了很多关于分布式Haskell的文章。已经有很多工作在分布计算领域完成,但看到remote包实现了类似Erlang消息传递的功能,不过它仅处于0.1版本和早期阶段。

我想实现一个系统,在该系统中存在许多提供独立服务的单独进程,并由多个主要进程相互连接。这似乎是Erlang的天然选择,但对于Haskell来说则不然。但我喜欢Haskell的类型安全性。

最近Haskell是否采用了Erlang风格的进程管理?


3
像你所说的,这似乎是Erlang天生就擅长解决的问题,这不是Erlang被设计出来解决的类型问题吗?我很喜欢Haskell,但这听起来明显是一个“恰当工具完成工作”的情况。为什么不直接使用Erlang呢? - C. A. McCann
4
因为除了并发性之外还有其他考虑因素,我认为Haskell在这些方面提供了更好的优势。我正在寻求如何在Haskell中最佳地实现面向进程的并发的建议。 - user1002430
2个回答

16
如果你想了解更多关于 remote 包(又名 CloudHaskell),请参阅该论文以及 Jeff Epstein 的论文。它旨在提供你需要的 actor 抽象,但正如你所说,它仍处于早期阶段。关于改进方面有活跃的讨论在parallel-haskell 邮件列表上进行,因此如果你有remote没有提供的特定需求,我们很乐意让你加入并帮助我们决定其未来的发展方向。
remote 更成熟但更低级别的是haskell-mpi包。如果您使用 Simple 接口,可以发送包含任意Serialize实例的消息,但抽象程度仍然远低于remote
还有一些实验性系统,例如《Implementing a High-level Distributed-Memory Parallel Haskell in Haskell》(Patrick Maier 和 Phil Trinder,IFL 2011,无法在线找到 PDF)。它混合了monad-par的确定性数据流并行处理方法,以及在网络上对I结构进行序列化的有限能力。这些类型的抽象对于进行分布式计算很有前途,但由于重点是计算纯函数值而不是提供 Erlang 风格的进程,因此它们可能不适合您的应用程序。

此外,为了完整起见,我应该指出Haskell维基百科页面上有关于云和高性能计算Haskell的内容,涵盖了我在这里描述的内容,以及分布式Haskell的子部分,似乎需要更新。


3
CloudHaskell 的论文和文章使用了很多术语和“关键词”(函数名,数据类型),这些与 CloudHaskell/remote 包中的术语不同。编写一个更加更新的解释/教程会非常有帮助! - amindfv
1
显然,CloudHaskell正在重新实现:https://github.com/haskell-distributed/distributed-process - balu

8

我经常感觉IPC和actors是被过度推销的功能。有很多吸引人的消息传递系统,例如MessagePack0MQThrift都有Haskell绑定。在我看来,你需要添加的唯一东西就是适当地处理进程地址并决定谁/什么管理这个地址能力。

顺便说一下:许多编码人员将例如0MQ纳入他们的Erlang环境中,仅仅因为它提供了通过消息代理结构化消息的可能性,而不是依赖于超级规模的进程到进程的消息传递。

在“大规模多核世界”中,我个人认为共享内存方法最终将优于消息传递。当然,有人可以反驳异步性。但是,当您写下要通过“几个主要进程”“连接”您的进程时,实际上您正在谈论同步。此外,您当然可以挑战单个函数,进程或线程是否是正确的并行化水平。

简而言之:我可能会看看在Haskell中MessagePack或0MQ是否能够满足我的需求,并在我的代码中处理其余部分。

1
好的观点,但我想补充一下,共享内存和消息传递并不是竞争模型,而是互补的模型。MPI和OpenMP经常以发挥各自优势的方式相结合。我现在正在使用“Par”单子进行类似的工作,其中共享内存并行性运行计算,这些计算可能会通过消息传递发送到节点之间。 - acfoltzer
1
当然没错。但是,我认为例如10G以太网已经足够好了,可以使共享内存方法在物理系统的边界之外变得可行。看看[RoCe](http://dl.acm.org/citation.cfm?id=1634475)和[iWARP](http://en.wikipedia.org/wiki/IWARP)。我希望我能赢得商业赞助来建立一个测试平台。 - J Fritsch
对于我们这些新手来说,“共享内存方法”是什么意思? - jberryman
@jberryman 这里提供了一个非常好的概述,批判地涵盖了许多问题:http://bartoszmilewski.wordpress.com/2010/08/02/beyond-locks-and-messages-the-future-of-concurrent-programming/ - J Fritsch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接