用于实现分布式消息传递算法的编程语言
基本上,我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为。
- 八卦协议
- 多个paxos
- 一致的散列
我的兴趣在于这些算法。 我基本上正在寻找一种编程语言,可以让我快速编写这些算法并深入理解这些算法。
我应该选择哪种语言? Java,Scala,Erlang或其他任何东西。
目前,我了解Java和C ++。
您可以尝试在Erlang中实现协议。
- 流程通信非常优雅地融入了语言和VM。 两个elrang进程之间的异步消息传递,无论是在同一个VM中还是在语义上等效的VM之间。
- 在erlang中,编写算法的容错方面/重试逻辑等是轻而易举的。 将所有内容封装到轻量级进程中,并使用称为管理程序的特殊进程来重新启动它们。
- 序列化Erlang对象非常简单。 您不必显式编码序列化逻辑(例如在Java中实现Serializable)。
- Erlang发行版附带了一个名为rpc的模块,它允许您调用远程VM上的function。
- Elrang贝壳是真正的神派。 您可以将shell附加到任何远程VM。 shell允许您分析内部表/数据结构。 VM还具有极其复杂的调试和跟踪function,可通过shell使用。
- 你可以看看Riak ,这是一个用Amazon的Dynamo模拟的Erlang编写的开源 NoSQL数据存储。 它实现了Consistent Hashing和Gossip协议。
哦,是的! 你可以通过查看以下内容来开始编程Erlang:
- 了解一些Erlang非常好
- Erlang Book Part 1
- Orielly的Erlang编程教科书(Francesco Cezarini和Simon Thompson)
- 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搜索工具和库。
所有这些协议都已在各种Erlang项目中实现。 有关详细信息,请参阅Mnesia , Riak , CouchDB , Scalaris (并非每个项目中的所有协议)。 对于这种协议实验,我无法想象比Erlang更友好的环境。
你有没有决定你的消息传递库? 如果您对MPI感兴趣,可以使用它的Java和C ++版本。
MPI为您执行大量工作,例如广播消息和检索回复,这对您的算法至关重要。 因此,我建议您为C ++或Java找到适当版本的MPI并开始工作。
看一眼:
- mpiJava
- 的openmpi