首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新orleans代码

动态更新orleans代码
EN

Stack Overflow用户
提问于 2017-01-03 23:22:55
回答 1查看 334关注 0票数 0

首先,我是Orleans的新手,但我已经阅读了一些文档,我必须说这个项目看起来非常有前途。我有一个关于如何在生产环境中更新竖井上的颗粒代码的问题。

我知道Erlang有一个角色模型,在Whatsapp中,他们可以执行onthefly代码更新。这是目前在Orleans上可能发生的事情,还是我必须停止竖井并部署新代码?如果是这样的话,这可以通过编程来完成吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-01-04 03:32:01

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

注意:我在这里交替使用"server“和"silo”。

为了避免宕机,您可以部署部分服务器,将流量切换到这些服务器,然后部署其余的服务器。Orleans部署支持集群唯一的DeploymentId。如果您使用新的DeploymentId部署思洛存储器,它们将不会加入旧群集。

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

  1. 关闭前3个竖井。集群会注意到节点的偏离并进行调整。负载均衡器还会注意到并仅将流量转发到最后2个节点(这些节点仍具有DeploymentId 123)。
  2. 您可以使用DeploymentId 456在前3个思洛存储器上部署更新的代码,并将其打开。DeploymentId是不同的,所以它们不会加入旧集群。
  3. 将负载均衡器指向前3个竖井。你现在实际上是在新的代码上运行,因为最后两个竖井不会收到任何请求。
  4. 你关闭了最后两个竖井,并用新的DeploymentId部署它们(456)。当您打开它们时,它们会加入新群集。
  5. 您可以调整负载平衡器以指向所有5个节点。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41446741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档