首先,我是奥尔良的新手,但我已经阅读了一些文档,我不得不说这个项目看起来很有希望。我有一个问题是如何在生产环境中更新筒仓上的谷物代码。
我知道Erlang有一个演员模型,在Whatsapp中,他们可以对代码进行实时更新。这是奥尔良目前可能发生的事情吗?还是我必须停止竖井并部署新代码?如果是的话,这可以用程序实现吗?
谢谢!
我认为您不能像您所说的那样动态部署代码。颗粒是类,它们可能依赖于其他类,所有这些类都在DLL中找到。例如,如果添加一个新类,则必须将该DLL部署到所有思洛存储器中。
注意:我在这里交替使用"服务器"one_answers"思洛存储器"。
为了避免宕机,您可以部署部分服务器,将流量切换到它们,然后部署其余服务器。奥尔良部署支持对集群唯一的DeploymentId。如果使用新的DeploymentId部署思洛存储器,它们将不会加入旧集群。
上一段中的描述听起来可能有点抽象,所以让我们举一个实际的例子。您有5台服务器,它们都在同一个集群上,DeploymentId为123,负载均衡器以循环方式将流量转发给它们中的每一台。
- 关闭前3个思洛存储器。集群会注意到节点的离开并进行调整。负载均衡器还注意到并仅将流量转发到最后2个节点(它们仍然具有DeploymentId 123)
- 您将更新后的代码部署在DeploymentId为456的前3个思洛存储器上,并打开它们。DeploymentId不同,因此它们不会加入旧集群
- 您将负载平衡器指向前3个思洛存储器。您现在正在有效地运行新代码,因为最后两个竖井不会收到任何请求
- 关闭最后2个思洛存储器,并使用新的DeploymentId(456)进行部署。当您打开它们时,它们将加入新集群
- 您可以将负载平衡器调整为指向所有5个节点