首先我是新来的奥尔良,但我已经阅读了一些文档,我不得不说这个项目看起来很有前途。我有一个关于如何在生产环境中更新 Silos 上的谷物代码的问题。
我知道 Erlang 有一个演员模型,并且在 Whatsapp 中他们可以执行代码的即时更新。这在奥尔良目前是否可行,还是我必须停止孤岛并部署新代码?如果是这样,这可以通过编程方式完成吗?
谢谢!
我认为您不能像您所说的那样即时部署代码。Grains 是类,它们可能依赖于其他类,所有这些类都可以在 DLL 中找到。例如,如果您添加一个新类,则必须将该 DLL 部署到您的所有孤岛中。
注意:我在这里交替使用“服务器”和“筒仓”。
为了避免停机,您可以做的是部署部分服务器,将流量切换到它们,然后部署剩余的服务器。Orleans 部署支持集群唯一的 DeploymentId。如果您使用新的 DeploymentId 部署您的孤岛,它们将不会加入旧集群。
上一段中的描述可能听起来有点抽象,所以让我们举一个实际的例子。您有 5 台服务器,全部位于同一集群中,DeploymentId 为 123,负载均衡器以循环方式将流量转发到每台服务器。