本文介绍了服务交换矩阵状态配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在设计一个将具有数亿个有状态执行元的系统,我如何控制状态的保存位置?
我要将群集配置为由已连接存储的VM组成,以适应将保存的大量参与者状态,然后将StateManager配置为使用该VM的附加磁盘。
感谢您抽出时间。
推荐答案
- 修改ARM模板,该模板为每个实例配置一个额外的托管磁盘:
"dataDisks": [
{
"diskSizeGB": 128,
"lun": 0,
"createOption": "Empty",
"caching": "ReadOnly",
"managedDisk": {
"storageAccountType": "Premium_LRS"
}
}
]
- 使用PowerShell初始化磁盘:
Get-Disk |
Where PartitionStyle -eq 'Raw' |
Select-Object -First 1 |
Initialize-Disk -PartitionStyle MBR -PassThru |
New-Partition -DriveLetter F -UseMaximumSize |
Format-Volume -FileSystem NTFS -NewFileSystemLabel "Data" -Confirm:$false
- 更新您的群集配置以将状态存储在其他位置。(请记住,这会更改每个服务的状态存储位置,而不仅仅是您的
ActorService
。):
"settings": {
...
"nodeTypeRef": "[parameters('vmNodeType0Name')]",
"dataPath": "F:\\SvcFab",
"durabilityLevel": "Silver",
...
},
This github repo似乎描述了您需要的内容。
- 要更改单个服务的状态管理器,您需要创建
IActorStateManager
和IActorStateProvider
的自定义实现,并在调用中传递它们以注册您的执行元类型:ActorRuntime.RegisterActorAsync
。
这篇关于服务交换矩阵状态配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!