#azure-service-fabric
#azure-service-fabric
Вопрос:
Я разрабатываю систему, в которой будут сотни миллионов участников с отслеживанием состояния, как мне контролировать, где сохраняется состояние?
Я хочу настроить кластер, состоящий из виртуальных машин, к которым подключено хранилище, для размещения большого количества состояний участников, которые будут сохранены, а затем настроить StateManager для использования подключенного диска виртуальной машины.
Спасибо за ваше время.
Ответ №1:
- Измените шаблон 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",
...
},
Это репозиторий github, похоже, описывает то, что вам нужно.
- Чтобы изменить диспетчер состояний для одной службы, вам необходимо создать пользовательские реализации
IActorStateManager
иIActorStateProvider
и передать их в вызове для регистрации вашего типа субъекта :ActorRuntime.RegisterActorAsync
.
Комментарии:
1. Спасибо! кажется, это идеально подходит