2

给定一个具有多个模块的工作 erlang 项目......想要热插拔多个依赖模块......是过渡到同步的新模块(全部或不同步)还是一次安装一个......这样任何事务都在进行中可能会产生不可预知的结果。

例如:

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

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

4

1 回答 1

5

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

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

于 2013-06-07T07:47:14.127 回答