Orleans.Clustering.CosmosDB 3.0.4
Microsoft.Orleans.Clustering.Cosmos
其他细节该项目已合并到 Orleans 主代码库。从 Orleans v7.2.0 版本开始,所有提供程序都随核心 Orleans 包一起发布到 NuGet。新的问题和贡献应导向 https://github.com/dotnet/orleans。
dotnet add package Orleans.Clustering.CosmosDB --version 3.0.4
NuGet\Install-Package Orleans.Clustering.CosmosDB -Version 3.0.4
<PackageReference Include="Orleans.Clustering.CosmosDB" Version="3.0.4" />
paket add Orleans.Clustering.CosmosDB --version 3.0.4
#r "nuget: Orleans.Clustering.CosmosDB, 3.0.4"
// Install Orleans.Clustering.CosmosDB as a Cake Addin #addin nuget:?package=Orleans.Clustering.CosmosDB&version=3.0.4 // Install Orleans.Clustering.CosmosDB as a Cake Tool #tool nuget:?package=Orleans.Clustering.CosmosDB&version=3.0.4
配置
不需要一次性使用所有提供程序。只需从示例中选择您感兴趣的一个即可,因为它们之间不互相依赖。
节点
示例
var silo = new SiloHostBuilder()
.UseCosmosDBMembership(opt =>
{
// Use CosmosDB as the cluster membership table.
// Configure CosmosDB settings in opt.
})
.AddCosmosDBGrainStorageAsDefault(opt =>
{
// Configure CosmosDB persistence provider.
// Configure CosmosDB settings in opt.
})
.UseCosmosDBReminderService(op =>
{
// Configure CosmosDB reminders provider.
// Configure CosmosDB settings in opt.
})
.Build();
await silo.StartAsync();
客户端
示例
var clientConfig = new ClientConfiguration();
var client = new ClientBuilder()
.UseCosmosDBGatewayListProvider(opt =>
{
// Use CosmosDB as the Gateway list provider.
// Configure CosmosDB settings in opt.
})
.Build();
await client.Connect();
太好了!现在您已经配置了 Orleans,使其使用 Azure CosmosDB 作为其提供程序的后端存储!
存储提供程序的自定义分区键
默认情况下,使用 grain 类型作为分区键,但这限制了单个 grain 类型的存储大小,因为单个逻辑分区有最大 10 GB 的存储上限。
可以通过实现自定义 IPartitionKeyProvider
来覆盖默认设置。可以通过 dependency injection 的常规方法注册 IPartitionKeyProvider
的自定义实现。
services.AddSingleton<IPartitionKeyProvider, MyCustomPKProvider>();
还有几种 AddCosmosDBGrainStorage
和 AddCosmosDBGrainStorageAsDefault
的重载,允许您传递 IPartitionKeyProvider
的实现。
如果没有使用 IPartitionKeyProvider
,将使用默认值,它使用 grain 类型的完整名称作为分区键。
示例
public class PrimaryKeyPartitionKeyProvider : IPartitionKeyProvider
{
public ValueTask<string> GetPartitionKey(string grainType, GrainReference grainReference)
{
return new ValueTask<string>(grainReference.GetPrimaryKey().ToString());
}
}
上面的示例使用主键作为分区键。
为了防止跨分区查询,分区键必须在读取数据时对客户端可用,因此代表输入仅限于 grain type 和 grain reference。Grain reference 包含 grain id,组合以及一个类型标识符。
有关 CosmosDB 分区详情的更多信息,请参阅 https://docs.microsoft.com/en-us/azure/cosmos-db/partitioning-overview。
向下兼容性
此更改不会影响现有系统。为现有系统配置自定义分区键生成器将引发 BadGrainStorageConfigException,表明不兼容。要开始使用自定义分区键生成器,必须使用与选项中指定的 Func
索引
当前的索引分支依赖于 CosmosDB 存储过程进行查找。因为存储过程必须针对特定分区执行,所以自定义分区键生成器与 Orleans 索引分支不兼容。
贡献
PR 和反馈都 非常 欢迎!
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET 标准化 | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET 框架 | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- Microsoft.Azure.Cosmos (>= 3.17.1)
- Microsoft.Orleans.OrleansRuntime (>= 3.4.2)
NuGet 包
此包不使用任何 NuGet 包。
GitHub 仓库
此包不使用任何流行的 GitHub 仓库。
版本 | 下载 | 最后更新 | |
---|---|---|---|
3.0.4 | 37,549 | 6/16/2021 | |
3.0.3 | 2,224 | 4/24/2020 | |
3.0.2 | 552 | 3/23/2020 | |
3.0.1 | 767 | 1/29/2020 | |
3.0.0 | 733 | 11/14/2019 | |
1.3.0 | 938 | 4/3/2019 | |
1.2.1 | 730 | 3/20/2019 | |
1.2.0 | 718 | 3/19/2019 | |
1.1.42 | 1,323 | 9/28/2018 | |
1.1.41 | 822 | 9/28/2018 | |
1.1.40 | 1,146 | 3/28/2018 | |
1.1.38 | 1,016 | 3/28/2018 | |
1.1.0-rc2-36 | 868 | 3/13/2018 | |
1.1.0-rc1-34 | 861 | 3/12/2018 | |
1.1.0-rc1-29 | 856 | 2/27/2018 | |
1.0.1-preview-27 | 861 | 2/10/2018 | |
1.0.1-preview-25 | 878 | 2/5/2018 | |
1.0.1-preview-21 | 825 | 2/1/2018 | |
1.0.1-preview-19 | 863 | 2/1/2018 | |
1.0.0-preview-9 | 914 | 2/1/2018 | |
1.0.0-preview-8 | 886 | 2/1/2018 | |
1.0.0-preview-7 | 923 | 2/1/2018 | |
1.0.0-preview-17 | 838 | 2/1/2018 | |
1.0.0-preview-16 | 877 | 2/1/2018 | |
1.0.0-preview-14 | 888 | 2/1/2018 | |
1.0.0-preview-1 | 976 | 2/1/2018 |