erlang - erlang 如何处理分布式网络?

标签 erlang distributed distributed-transactions distributed-system

更具体地说,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/

相关文章:

unicode - Erlang 和带有 Cyrillic 的二进制文件

java - 什么是 Erlang 替代品?

syntax - 如何使用 erl_lint 来检查 Erlang 模块的语法?

NHibernate 3.0 : TransactionScope and Auto-Flushing

c# - Saga 完成导致 Distributed Transaction Completed 错误

rest - 为 Cowboy REST API 启用 CORS

distributed - 是否可以在给定客户端实例的情况下关闭 dask.distributed 集群?

java - 使用进程内 Java RMI 注册表时如何正常关闭

sockets - ZeroMQ 设计决策

sql-server - 分布式事务的性能开销