OTP热插拔是一致的和可预测的

Ric*_*ard 2 erlang erlang-otp

给定一个具有多个模块的工作erlang项目...想要热插拔多个相关模块...是同步(全部或全部)的新模块的过渡,或者它们是一次安装一个......这样任何在飞行中的交易可能有一个不可预测的结果.

例如:

我在生产中有两个模块... foo和bar.这样foo和bar之间存在依赖关系......代码的执行从foo移动到bar.现在我有foo和bar的更新,我想同时替换它们.这样我不希望事件在foo(1)和bar(2),或foo(2)和bar(1)上执行.

在SQL上下文中,这将被称为事务.

Luk*_*kas 5

它不是在事务中完成的,而是一次完成的.这是您必须在新模块中处理的事情.即如果旧模块调用新模块,则必须确保旧接口仍然存在并且不会崩溃.这反过来使您以正确的顺序加载模块非常重要,以避免新模块调用旧模块并期望接口在那里.

如果您对系统进行非常小的增量更改,这往往不是问题,但如果您想每年进行一次大爆炸升级,它将变得越来越复杂.