Orleans 2.0 官方文档 —— 6.3.1 部署 -> Grain版本管理 -> 概览

grain版本管理

警告

本页介绍如何使用grain接口版本管理。Grain状态的版本管理不在此范围。

概览

在给定的集群上,silo可以支持不同版本的grain类型。 群集与不同版本的粮食

在此示例中,客户端和silo {1,2,3}使用grain接口A的版本1进行编译,silo 4使用A的版本2 进行编译。

限制:

  • 无状态工作者无版本控制
  • 流(Streaming)接口无版本控制

启用版本控制

默认情况下,grain没有版本控制。您可以使用grain接口上的VersionAttribute,来对grain进行版本控制:

[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey {}

其中X是grain 接口的版本号,通常是单调递增的。

Grain版本兼容性和位置

当一个调用(此调用来自一个版本管理的grain)到达集群时:

  • 如果不存在激活体,则将创建兼容的激活体
  • 如果存在激活体:
    • 如果当前不兼容,它将被停用并将创建新的兼容(请参阅版本选择器策略
    • 如果当前兼容(请参阅兼容的谷物),调用将正常处理。

默认情况下:

  • 所有版本化的grain都应该是只向后兼容(参见向后兼容性指南)和可兼容的grain(Compatible-grains.md))。这意味着v1的grain可以调用v2的grain,但v2的grain不能调用v1。
  • 当集群中存在多个版本时,新激活体将随机放置在兼容的silo上。

您可以通过以下GrainVersioningOptions选项,更改此默认行为:

var silo = new SiloHostBuilder()
  [...]
  .Configure<GrainVersioningOptions>(options => 
  {
    options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
    options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
  })
  [...]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值