在Erlang代码热插拔

Rog*_*son 14 erlang hotswap message-loop

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

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

这段代码是在Erlang中热插拔的吗?或者是其他更原生的功能?

ton*_*nio 18

是的,在erlang服务器中进行热交换通常是指此功能.在stackoverflow问题中很好地解释了在Erlang的gen_server中实现代码交换,以及在这个简洁的Erlang通用服务器教程这个小小的一个.

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

这样,您可以在不关闭服务器代码的情况下升级服务器代码,或者如果某些内容无法正常工作,则可以回退到以前的实现.通常,应使用通用发布处理程序将热交换置于适当位置.