6

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

  • 八卦协议
  • 多个 paxos
  • 一致的哈希

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

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

目前,我知道 Java 和 C++。

4

4 回答 4

8

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

  • 进程通信非常优雅地融入了语言和 VM。两个 elrang 进程之间的异步消息传递,无论是在同一个 VM 中还是在语义上等效的 VM 之间。
  • 在算法的容错方面/重试逻辑等方面的编码在 erlang 中是轻而易举的。将所有内容封装到轻量级进程中,并使用称为监督者的特殊进程来重新启动它们。
  • 序列化 Erlang 对象非常简单。您不必显式编码您的序列化逻辑(例如在 Java 中实现 Serializable)。
  • Erlang 发行版带有一个名为rpc的模块,它允许您在远程 VM 上调用函数。
  • Elrang 贝壳是真正的神送。您可以将外壳附加到任何远程 VM。Shell 允许您分析内部表/数据结构。VM 还具有极其复杂的调试和跟踪功能,您可以通过 shell 使用这些功能。
  • 您可以查看Riak,这是一个以亚马逊的 Dynamo 为模型,用 Erlang 编写的开源NoSQL 数据存储。它实现了一致性哈希和 Gossip 协议。
于 2011-08-21T18:51:26.327 回答
4

哦是的 !您可以通过查看这些来开始编程 Erlang:

  1. 向你学习一些 Erlang 非常有用
  2. Erlang 书籍第 1 部分
  3. Orielly 的 Erlang 编程教科书(Francesco Cezarini 和 Simon Thompson)
  4. Joe Armstrong 的编程 Erlang 教科书

上面的链接将为您提供您可能需要的所有 Erlang 编程资源。然而,我建议您从 开始Joe Armstrongs Programming Erlang Text Book,并在阅读时使用网站:(Learn you some erlang for great good上面的参考文献 1)作为进一步理解数据结构的参考。

你可以从这里下载 Erlang:Erlang 下载官方页面

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

偶尔,您可以随时在此处询问有关 Stackoverflow 的任何问题,或者您可以从 sourceforge 搜索工具和库。

于 2011-08-23T11:48:29.103 回答
2

所有这些协议都已经在各种 Erlang 项目中实现了。有关更多详细信息,请参阅 MnesiaRiakCouchDBScalaris(并非每个项目中的所有协议)。对于这种协议实验,我无法想象比 Erlang 更友好的环境。

于 2011-08-22T09:25:15.370 回答
0

你决定好你的消息传递库了吗?如果您对 MPI 感兴趣,可以使用它的 java 和 C++ 版本。

MPI 为您执行许多工作,例如广播消息和检索回复,这在您的算法中是必不可少的。因此,我建议您为 C++ 或 Java 找到合适的 MPI 版本并开始工作。

看一眼:

于 2011-08-21T18:20:00.877 回答