Конфигурация состояния Service Fabric

#azure-service-fabric

#azure-service-fabric

Вопрос:

Я разрабатываю систему, в которой будут сотни миллионов участников с отслеживанием состояния, как мне контролировать, где сохраняется состояние?

Я хочу настроить кластер, состоящий из виртуальных машин, к которым подключено хранилище, для размещения большого количества состояний участников, которые будут сохранены, а затем настроить StateManager для использования подключенного диска виртуальной машины.

Спасибо за ваше время.

Ответ №1:

  1. Измените шаблон ARM, который предоставляет вашим узлам кластера дополнительный управляемый диск для каждого экземпляра:
 "dataDisks": [
    {
        "diskSizeGB": 128,
        "lun": 0,
        "createOption": "Empty",
        "caching": "ReadOnly",
        "managedDisk": {
            "storageAccountType": "Premium_LRS"
        }
    }
]
  
  1. Используйте 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
  
  1. Обновите конфигурацию кластера, чтобы сохранить состояние в другом месте. (Имейте в виду, что это изменяет местоположение хранилища состояния каждой службы, а не только вашей ActorService .):
 "settings": {
    ...
    "nodeTypeRef": "[parameters('vmNodeType0Name')]",
    "dataPath": "F:\\SvcFab",
    "durabilityLevel": "Silver",
    ...
},
  

Это репозиторий github, похоже, описывает то, что вам нужно.

  1. Чтобы изменить диспетчер состояний для одной службы, вам необходимо создать пользовательские реализации IActorStateManager и IActorStateProvider и передать их в вызове для регистрации вашего типа субъекта : ActorRuntime.RegisterActorAsync .

Комментарии:

1. Спасибо! кажется, это идеально подходит