2011-04-21 42 views

回答

6

Runa看着這個使用兵馬俑,並最終發佈swarmiji作爲分佈式代理庫。

SMP系統和羣集之間的真正差異之一是共享內存。在集羣中,代碼必須要求數據,而在SMP中,它可以直接讀取數據。這有一些很好的優點和一些(縮放)的缺點。

Clojure的STM與其他許多STM系統的區別很大,它建立在相對時間的概念上,正如每個事務生成計數器所測量的。如果沒有共同訪問這一代計數器,它不能給事件定單,也不能做它的工作(請原諒這個過分簡單的解釋)。

STM的主要動機之一是創建一個真正利用共享內存併發性的系統,例如確保讀者永遠不會等待作者,讀者總能看到有效的數據。因爲這是爲了利用共享內存而構建的,所以它失去了很多它的吸引力而沒有共享內存。

演員模型(ala Erlang)更適合分佈式計算。或者換句話說:或許我們不應該試圖在分佈式併發孔中設置一個方形釘。

6

不是。我的意思是,它可以被製作;像Terracotta聲稱能夠在多個節點上分配邏輯JVM,但clojure的STM /集合語義非常依賴線程間內存共享,從而有效節省空間和時間。

您可能更適合使用消息傳遞或面向批處理的架構來處理系統的多節點部分。

+0

有保羅Stadig在一個點上完成的工作,使其能夠分散的Clojure Terracotta上的數據結構(因此,幾個bug修復都進入了這兩個項目)。但與實際支持分佈式STM相比,這是相距甚遠。 – 2011-04-21 18:03:50

3

我可以做到這一點,但它不是一個好主意。現在NoSql有一個很大的原因,它是因爲事務不能很好地工作。

相關問題