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

标签 java scala erlang consistent-hashing paxos

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

  • 八卦协议(protocol)
  • 多个paxos
  • 一致性哈希

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

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

目前,我会 Java 和 C++。

最佳答案

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

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

关于java - 选择用于实现分布式消息传递算法的编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140086/

相关文章:

java - 动画按钮移动并在 Android 中设置新位置

scala - 创建一个 Akka fat Jar

java - HDFS API - 计算目录、文件和字节数

erlang - 如何从 Erlang 列表中删除倒数第二个元素

windows - Docker 容器在启动后立即关闭

java - Android Webview可以运行JSP吗?

Java Reflection 参数类型匹配,如何处理接口(interface)而不是类

java - 获取 Google map 的当前位置

scala - 如何像在 Scala 控制台中那样检查脚本中的对象?

erlang - 在try catch block 中没有尾部递归代码?