grains接口版本控制
[!警告]本页介绍如何使用Grain接口版本控制。Grain状态的版本控制超出范围。
概述
在给定的集群上,silos可以支持不同版本的Grains类型。在本例中,客户端和silos{1,2,3}是用grain接口编译的
A
版本1。silos4是用A
版本2。
限制:
- 无状态工作进程
- 流接口没有版本控制
启用版本控制
默认情况下,不会对grains进行版本控制。您可以使用grain接口上的VersionAttribute来设置grain版本:
[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey {}
在哪里?十
是grains接口的版本号,通常单调递增。
grains版本兼容性和存储
当来自版本控制的grain的调用到达集群时:
默认情况下:
- 所有版本化的grains只能向后兼容(参见向后兼容准则和相容grains). 这意味着v1grains可以调用v2grains,但v2grains不能调用v1。
- 当集群中存在多个版本时,新的激活将随机存储在兼容的silos上。
您可以通过选项更改此默认行为GrainVersioning选项
:
var silo = new SiloHostBuilder()
[...]
.Configure<GrainVersioningOptions>(options =>
{
options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
})
[...]