2011-08-21 60 views
6

基本上,我希望實現以下算法並分析使用這些算法構建的系統在不同條件下的行爲。爲實現分佈式消息傳遞算法而選擇的編程語言

  • Gossip協議
  • 多的Paxos
  • 一致這裏散列

我關心的是這些算法。我基本上在尋找一種編程語言,可以讓我快速編寫這些算法並深入理解這些算法。

我應該選擇哪種語言? Java,Scala,Erlang或其他任何東西。

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

+7

以我的經驗,二郎是真的,真的非常適合於分佈式的消息傳遞。我不知道你提到的任何協議,但我確實認爲Erlang很適合用於這些目的。 –

+0

以後不要後悔。 Erlang已被證明是容錯分佈式系統的未來。在二郎語義已經從一開始就設計爲支持這樣的算法 –

+1

快速原型如果你知道Java和C++,你爲什麼要尋找替代品?如果你能解釋你的理由,這將有助於提出建議。 –

回答

8

你可以嘗試實施二郎的協議。

  • 過程通信非常優雅地融入語言和虛擬機。異步消息在兩個elrang進程之間傳遞,無論是在同一個VM中還是跨語義等價的VM。
  • 算法的容錯方面/重試邏輯等的編碼在erlang中是一件輕而易舉的事情。將所有內容封裝在輕量級進程中,並使用稱爲supervisors的特殊進程重新啓動它們。
  • 序列化Erlang對象非常簡單。您不必顯式編寫序列化邏輯(例如在Java中實現Serializable)。
  • Erlang發行版帶有一個名爲rpc的模塊,它允許您調用遠程VM上的功能。
  • Elrang外殼是真正的神派。您可以將外殼附加到任何遠程VM。該外殼讓你可以剖析內部表格/數據結構。虛擬機還具有非常複雜的調試和跟蹤功能,可通過外殼獲取。
  • 你可以看看Riak,一個open source NoSQL數據存儲以Erlang編寫的模擬亞馬遜的Dynamo。它實現了一致的哈希和八卦協議。
0

您是否決定了消息傳遞庫?如果您對MPI感興趣,則可以使用Java和C++版本。

MPI爲您執行大量工作,例如廣播消息並檢索答案,這對您的算法至關重要。因此,我建議您爲C++或Java找到合適的MPI版本,並開始工作。

看看:

+1

MPI需要一組穩定的機器。它不適用於多雲架構,其中配置不均勻,延遲可能會有所不同,並且您不確定機器是否還活着。所以,這不是分佈式計算的最終靈丹妙藥。 – paradigmatic

+0

@paradigmatic:不同意! MPI程序可以在異構(HW,OS,PL)環境中執行。請注意,ajav(已問過的人)只需要一個庫來通過在一組協議中進行實驗來學習消息傳遞。他並沒有面對真實的多雲環境,例如你所提到的環境。請參閱FT-MPI(http://icl.cs.utk.edu/ftmpi/)瞭解MPI的容錯版本。 – hsalimi

+1

忘了Erlang?這是錯誤的建議。今天實施的算法可能無法應對今天的挑戰,因爲它的技術基於昨天的挑戰。 Erlang已經在可擴展性,可用性和穩定性方面進行了戰鬥測試(只需很短的原型設計時間)。比較Riak,Membase,Scalaris,Yaws e.t.c等系統。這些系統依賴於Erlang內置的穩定模型,並且已被證明可以應對當今的挑戰。試試Erlang,你不會後悔 –

2

所有這些協議已經在各種Erlang項目中實現。有關更多詳細信息(並非每個項目中的所有協議),請參閱 MnesiaRiak,CouchDB,Scalaris。我無法想象這種協議實驗比Erlang更友好的環境。

4

哦,是的!你可以通過查看這些開始編程二郎:

  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
012上述個

這些鏈接會爲您提供資源,所有的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

有時候,你可以隨時要求#2的任何問題在這裏,也可以從SourceForge的搜索工具和庫。

+1

這似乎太棒了。看看這些功能,我想我應該在用C++和Java編寫10年之後學習這個優雅的PL。 – hsalimi