接管

如果一个节点启动了,根据 distributed ,它有着比分布式应用当前所运行的节点更高的优先级,那么应用首先会在新的节点重启,并在老的节点停止。这个过程称之为接管

这种情况是通过以下应用主程序调用来启动应用的:

  1. Module:start({takeover, Node}, StartArgs)

其中 Node 是老节点。

例如:如果 myapp 目前运行在 cp3 ,现在如果 cp2 重启了,那么它不会重启 myapp ,因为节点 cp2cp3 之间的次序是不确定的。_images/dist4.gif然而,如果 cp1 也重启了, 函数 application:takeover/2 会将 myapp 移动到 cp1 ,因为 cp1 对此应用的优先级比 cp3 要高。在这种情况下,会在 cp1 执行 Module:start({takeover,cp3@cave},StartArgs) 来启动该应用。_images/dist5.gif