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

时间:2013-06-07 03:31:37

标签: erlang otp

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

例如:

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

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

1 个答案:

答案 0 :(得分:5)

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

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