更具体地说,erl 的核心是使用什么算法来了解其他节点的存在和可用性?它如何处理网络分区?所有节点都不断地相互 ping 吗?
例如,如果有两个节点,并且网络电缆被拉断,它如何决定做什么?据推测,一个节点应该处于空闲状态,因为它是孤立的,而另一个节点则继续运行,否则就会出现裂脑行为。
在阅读 paxos 和 raft 时,似乎它必须在内部进行领导者选举,但我似乎找不到任何可以理解的解释——我把我的博士学位留在了我的另一条裤子里..任何人都可以解释这个巫毒吗是英文吗?
最佳答案
我也有同样的问题here得到的答复是 this very good article您可以在其中找到您的问题的详细解释。主要思想是:分布式模式的Erlang节点通过网状网络连接。它们通过在 net_tick_time
常量决定的时间段内完成的 ping 来相互监视。 Ping 用于检测网络 split 或无法通信的停止节点。其他故障(例如虚拟机崩溃、电缆拔出)可通过底层网络连接立即(几毫秒内)检测到。
关于erlang - erlang 如何处理分布式网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749141/