在Erlang代码热插拔

时间:2010-06-03 19:01:18

标签: erlang message-loop hotswap

我最近在InfoQ上看到了关于Erlang的视频, 在该视频中,其中一位创作者介绍了如何替换消息循环的行为。

他只是发送一条消息,其中包含新版本的消息循环代码的lambda,然后调用该消息而不是再次调用旧循环。

在Erlang中代码热插拔是否适合? 或者是其他更原生的功能?

1 个答案:

答案 0 :(得分:17)

是的,在erlang服务器中进行热交换通常是指此功能。 stackoverflow问题Achieving code swapping in Erlang’s gen_server以及整齐的Erlang Generic Server tutorialthis little one中都有详细解释。

Erlang / OTP gen_server模块通过在回调模块中实现Module:code_change/3函数,提供了实现热交换的通用方法。

这样,您可以在不关闭服务器代码的情况下升级服务器代码,或者如果某些内容无法正常工作,则可以回退到以前的实现。通常,热插拔应使用通用release handler来实现。