Erlang的容錯能力(據我瞭解)包括使用主管進程來關注工作進程,所以如果一個工人死了,主管可以啓動一個新進程。主管進程如何監控進程?同樣可以在JVM上完成嗎?
Erlang如何進行這種監測,特別是在分佈式情況下?如何確定這個過程真的死了?它有心臟跳動嗎?是什麼內置到運行時環境?如果拔下網線會怎麼樣 - 假設其他進程已經死了,如果它不能與它們通信?等等
我在想如何實現Erlang在JVM(比如Java或Scala)中聲稱的相同的容錯性等。但我不確定它是否需要內置在JVM中的支持才能和Erlang一樣。作爲一個比較點,我還沒有遇到Erlang如何做的定義。
謝謝,這很有道理。在機器之間發送消息不同於在本地進程之間發送消息(更大的開銷,更多的原因可能會失敗等)似乎是常見的事情。所以編寫你的應用程序來了解這一點(沒有銀彈讓本地/遠程調用一樣,所以不要嘗試)。 這意味着JVM中的類似模型當然有可能。只監督本地進程/線程/光纖/行動者/任何,並將代碼寫入您的應用程序ping其他節點(以及如果您無法到達某個節點時該怎麼辦)。 – 2009-07-22 13:58:11