本文介绍了服务交换矩阵状态配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在设计一个将具有数亿个有状态执行元的系统,我如何控制状态的保存位置?

我要将群集配置为由已连接存储的VM组成,以适应将保存的大量参与者状态,然后将StateManager配置为使用该VM的附加磁盘。

感谢您抽出时间。

推荐答案

  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",
    ...
},

This github repo似乎描述了您需要的内容。

  1. 要更改单个服务的状态管理器,您需要创建IActorStateManagerIActorStateProvider的自定义实现,并在调用中传递它们以注册您的执行元类型:ActorRuntime.RegisterActorAsync

这篇关于服务交换矩阵状态配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 22:44