Orleans 2.0 官方文档 —— 6.3.5 部署 -> Grain版本管理 -> 部署grain的新版本

部署grain的新版本

滚动升级

在此方法中,您可以直接在您的环境中部署较新的silo。这是最简单的方法,但是很难中断正在进行的部署并回滚。

推荐配置:

  • DefaultCompatibilityStrategy 设置成 BackwardCompatible
  • DefaultVersionSelectorStrategy 设置成 AllCompatibleVersions
var silo = new SiloHostBuilder()
  [...]
  .Configure<GrainVersioningOptions>(options => 
  {
    options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
    options.DefaultVersionSelectorStrategy = nameof(AllCompatibleVersions);
  })
  [...]

当使用此配置时,“老”客户端将能够与两个版本的silo上的激活体进行通信。较新的客户端和silo只会在较新的silo上触发新的激活体。

滚动的GIF

使用staging环境

在此方法中,您将需要第二个环境(staging环境),在停止生产环境之前,您将在该环境中部署新的silo。生产环境的silo、staging环境的silo、以及客户端,将成为同一群集的一部分。重要的是,来自两个环境的silo可以相互通信。

推荐配置:

  • DefaultCompatibilityStrategy 设置成 BackwardCompatible
  • DefaultVersionSelectorStrategy 设置成 MinimumVersion
var silo = new SiloHostBuilder()
  [...]
  .Configure<GrainVersioningOptions>(options => 
  {
    options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
    options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
  })
  [...]

建议的部署步骤:

  1. “V1” silo和客户端已部署,并在生产环境槽中运行。
  2. “V2” silo和客户端开始在Staging槽中启动。它们将加入与生产环境槽相同的集群。到目前为止,还没有创建“V2”激活。
  3. 一旦Staging槽中的部署完成,开发人员就可以重定向V2客户端上的一些流量(冒烟测试,目标beta用户等)。这将创建V2激活,但由于Grains是向后兼容的,并且所有silo都在同一个集群中,因此不会创建重复的激活体。
  4. 如果验证成功,将继续进行VIP swap。如果没有,您可以安全地关闭Staging集群:现有的V2激活体将被销毁,并且如果需要,将创建V1激活。
  5. V1激活体最终将“迁移”到V2 silo。您可以安全地关闭V1 silo。

警告

请记住,无状态工作者没有版本控制,并且流代理(streaming agent)也将在staging环境中启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值