两个不同版本的Erlang VM之间的实时应用程序迁移

时间:2011-08-20 09:49:00

标签: erlang

我在Erlang VM的R13版本上运行Erlang应用程序。 我想在不停止应用程序的情况下将VM升级到R14。 我是如何在cay之间实时迁移应用程序的 不同版本的Erlang VM?

2 个答案:

答案 0 :(得分:4)

你需要两件事:

a)很多很多计划。

b)在多个节点上运行的应用程序。

通常的技巧是取消部分节点集群并将其升级到新版本。它应该能够与旧节点通信。然后在新版本的Erlang接管时碰撞旧节点。

Erlang不提供免费的这种升级。它确实让它变得更加痛苦。

答案 1 :(得分:0)

简短回答,你不能。

这是因为为新版本的BEAM仿真器(Erlang VM)编译的应用程序无法在旧版本的仿真器上正常运行。

或者更多细节:

只能使用release handler升级应用程序而不停止它。但是发布处理程序只能升级VM中运行的应用程序,而不能升级VM本身。您仍然可以准备clearblackbox.py文件,但当systools:make_relup/3注意到新release使用不同版本的BEAM仿真器时,它会添加指令AppRegistryNotReady以重启节点期间升级(请参阅the page I mentioned earlierrelup的说明)。

然而,您可以做的是升级Erlang VM而不中断服务(假设您的应用程序向外部方提供某些服务)。但这在很大程度上取决于应用程序的体系结构,并且没有通用答案。