1

更具體地說,在erl的核心,用什麼算法來了解其他節點的存在和可用性?它如何處理網絡分區?所有的節點只是不斷地相互ping通?erlang如何處理分佈式網絡?

例如,如果有兩個節點,並且網線被拔出,那麼它是如何決定如何操作的?據推測,一個節點應該閒置,因爲它是孤兒,而另一個進行,否則你會得到一個裂腦行爲。

在閱讀paxos和木筏,它似乎必須在內部做領導選舉,但我似乎無法找到任何可理解的解釋 - 我將我的博士學位留在了我的其他褲子中。任何人都可以用英語解釋這個巫術嗎?

+0

可能的重複[如何檢測Erlang中的終止節點的工作? net \ _ticktime如何影響Erlang中節點活性的控制?](http://stackoverflow.com/questions/24061270/how-is-the-detection-of-terminated-nodes-in-erlang-working-how- is-net-ticktime) –

回答

2

我有同樣的問題here它回答了this very good article你可以找到你的問題的詳細解釋。主要思想是:分佈式模式下的Erlang節點通過網狀網絡連接。他們通過在由net_tick_time恆定的時間段內完成的ping相互監視對方。 Ping用於檢測網絡分割或暫停的節點無法通信。通過底層網絡連接立即(幾毫秒內)檢測到其他故障,如虛擬機崩潰,電纜拔出等。

+0

儘管這可能會回答這個問題,但最好在此提供實際信息,而不僅僅是一個鏈接。 [只有鏈接的答案不被認爲是好答案,可能會被刪除](http://stackoverflow.com/help/deleted-answers)。 –

+0

對不起,我不知道這件事,接下來我會做一些簡單的解釋,謝謝。 – Zuzana

+0

有趣,謝謝!這當然解釋了它們如何連接,但它不能解釋如果事情不可用會發生什麼。例如,如果進程1在節點1上,並且進程2在節點2上,如果節點2停止運行,節點1將接收進程1和2(據我所知)。但是,如果它的網絡分裂,我不知道p1和p2在n1和n2上運行,因爲兩者都看到另一個死亡? – XeroxDucati