更具体地说,在erl的核心,使用什么算法来理解其他节点的存在和可用性?它如何处理网络分区?所有节点是否都在不断地相互ping?
例如,如果有两个节点,并且拉动了网络电缆,它如何决定该怎么做?据推测,一个节点应该闲置,因为它是孤儿,而另一个节点继续,否则你会得到一个裂脑行为..
在阅读paxos和raft时,似乎必须在内部进行领导选举,但我似乎无法找到任何可理解的解释 - 我将博士留在我的其他裤子中..任何人都可以解释这个巫术英文?
答案 0 :(得分:2)
我有同样的问题here,并在this very good article回答,您可以在其中找到问题的详细解释。主要思想是:分布式模式的Erlang节点通过网状网络连接。他们通过在net_tick_time
常数决定的时间段内完成的ping来监视对方。 Ping用于检测无法通信的网络分裂或暂停的节点。通过底层网络连接立即(在几毫秒内)检测到其他故障,例如VM崩溃,电缆拔出。