0

首先我是新来的奥尔良,但我已经阅读了一些文档,我不得不说这个项目看起来很有前途。我有一个关于如何在生产环境中更新 Silos 上的谷物代码的问题。

我知道 Erlang 有一个演员模型,并且在 Whatsapp 中他们可以执行代码的即时更新。这在奥尔良目前是否可行,还是我必须停止孤岛并部署新代码?如果是这样,这可以通过编程方式完成吗?

谢谢!

4

1 回答 1

1

我认为您不能像您所说的那样即时部署代码。Grains 是类,它们可能依赖于其他类,所有这些类都可以在 DLL 中找到。例如,如果您添加一个新类,则必须将该 DLL 部署到您的所有孤岛中。

注意:我在这里交替使用“服务器”和“筒仓”。

为了避免停机,您可以做的是部署部分服务器,将流量切换到它们,然后部署剩余的服务器。Orleans 部署支持集群唯一的 DeploymentId。如果您使用新的 DeploymentId 部署您的孤岛,它们将不会加入旧集群。

上一段中的描述可能听起来有点抽象,所以让我们举一个实际的例子。您有 5 台服务器,全部位于同一集群中,DeploymentId 为 123,负载均衡器以循环方式将流量转发到每台服务器。

  1. 您关闭前 3 个筒仓。集群注意到节点的离开并进行调整。负载均衡器还会注意到并将流量仅转发到最后 2 个节点(仍然具有 DeploymentId 123)。
  2. 您使用 DeploymentId 456 在前 3 个孤岛上部署更新的代码,然后打开它们。DeploymentId 不同,因此它们不会加入旧集群。
  3. 您将负载均衡器指向前 3 个孤岛。您现在正在有效地运行新代码,因为最后 2 个筒仓不会收到任何请求。
  4. 您关闭最后 2 个孤岛并使用新的 DeploymentId (456) 部署它们。当您打开它们时,它们会加入新的集群。
  5. 您调整负载平衡器以指向所有 5 个节点。
于 2017-01-03T19:32:00.947 回答