用于实现分布式消息传递算法的编程语言

时间:2011-08-21 18:09:19

标签: java scala erlang consistent-hashing paxos

基本上,我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为。

  • Gossip协议
  • 多个paxos
  • 一致性散列

我的兴趣在于这些算法。我基本上正在寻找一种编程语言,可以让我快速编写这些算法并深入理解这些算法。

我应该选择哪种语言? Java,Scala,Erlang或其他任何东西。

目前,我了解Java和C ++。

4 个答案:

答案 0 :(得分:8)

您可以尝试在Erlang中实现协议。

  • 流程沟通非常优雅地融入了语言和VM。两个elrang进程之间的异步消息传递,无论是在同一个VM中还是在语义上等效的VM之间。
  • 在erlang中,算法的容错方面/重试逻辑等编码是轻而易举的。将所有内容封装到轻量级进程中,并使用称为管理程序的特殊进程重新启动它们。
  • 序列化Erlang对象非常简单。您不必显式编码序列化逻辑(例如在Java中实现Serializable)。
  • Erlang发行版附带一个名为rpc的模块,可让您调用远程虚拟机上的功能。
  • Elrang贝壳是真正的神派。您可以将shell附加到任何远程VM。 shell允许您分析内部表/数据结构。 VM还具有极其复杂的调试和跟踪功能,可通过shell使用。
  • 您可以查看Riak,一个用在Amazon的Dynamo上建模的Erlang编写的open source NoSQL数据存储区。它实现了Consistent Hashing和Gossip协议。

答案 1 :(得分:4)

哦,是的!你可以通过查看以下内容来开始编程Erlang:

  1. Learn You some Erlang for great good
  2. Erlang Book Part 1
  3. Orielly's Erlang Programming Text Book (Francesco Cezarini and Simon Thompson)
  4. Joe Armstrong's Programming Erlang Text Book
  5. 上述链接将为您提供所需的所有Erlang编程资源。但我建议您从Joe Armstrongs Programming Erlang Text Book开始,在阅读时,请使用网站:Learn you some erlang for great good(上面的参考文献1)作为参考,以进一步了解数据结构。

    您可以从此处下载Erlang: Erlang Download official Page

    您可能需要其他链接和资源(应用程序,库e.t.c.),其中大部分都在此处编入索引: Erlang/OTP .com website

    有时,您可以随时在Stackoverflow上提出任何问题,或者您可以从sourceforge搜索工具和库。

答案 2 :(得分:2)

所有这些协议都已在各种Erlang项目中实现。看到 MnesiaRiakCouchDBScalaris了解更多详情(并非每个项目中的所有协议)。对于这种协议实验,我无法想象比Erlang更友好的环境。

答案 3 :(得分:0)

您是否决定过您的邮件传递库?如果您对MPI感兴趣,可以使用它的Java和C ++版本。

MPI为您执行大量工作,例如广播消息和检索回复,这对您的算法至关重要。因此,我建议您为C ++或Java找到适当版本的MPI并开始工作。

看看: