通過CAP theorem,這是不可能的distributed Erlang system同時提供所有三個以下保證的:分佈式Erlang和在CAP定理
- 一致性(所有的Erlang運行時間,或節點,請參見在同一數據同一時間)
- 可用性(節點故障不會妨礙倖存者持續經營)
- 分區容忍性(系統繼續,儘管任意消息虧本經營)
分佈式Erlang系統可以支持零,一個或兩個的保證。
使用Erlang和OTP,每個保證如何實現?大多數分佈式Erlang應用程序爲A級和P級的更高級別做出了實際選擇,並解決了「最終一致性」問題。看來Erlang本身被設計爲支持分佈式(P),容錯(A),軟實時,不間斷的應用程序。
編程語言(Erlang),運行時系統(ERTS)和一組庫(OTP)用於構建分佈式容錯應用程序;我該如何做定義的分佈式容錯應用程序的三件事?
您更新的問題,就像是說:「我有一把錘子,我怎麼能蓋房子,學校或寄宿學校?」你將得到的最佳答案將解釋CAP理論,但是實施細節很難給出一套簡單的指令。 – mikerobi 2010-10-03 18:28:50
我明白了你的意思,但我認爲它更像是說:「我有一種編程語言,運行時系統和許多用於構建分佈式容錯應用程序的庫(Erlang/OTP)。 _define_分佈式容錯應用程序?「 – Rudiger 2010-10-04 16:37:55
我沒有在Erlang中看到這個一致性項目符號。只是提到由於網絡延遲造成的mnesia及其問題。很多時候,我看到一個cluseter建立在隨機狀態的FSM上。分區T. - 同樣的。嘗試合併狀態或mnesia(拆分表),它通常是通過選擇主節點並在加入節點後轉儲另一半來完成的。矢量時鐘很容易實現。我最近做了它,但在測試中,他們在合併之前爆炸了真實數據。 – user425720 2010-10-04 20:07:45