【问题标题】:Service Fabric State configurationService Fabric 状态配置
【发布时间】:2021-02-01 19:01:16
【问题描述】:

我正在设计一个拥有数亿有状态 Actor 的系统,我如何控制状态的保存位置?

我想将集群配置为由具有附加存储的 VM 组成,以容纳将要保存的大量参与者状态,然后将 StateManager 配置为使用 VM 的附加磁盘。

感谢您的宝贵时间。

【问题讨论】:

    标签: azure-service-fabric


    【解决方案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",
        ...
    },
    

    This github repo 似乎描述了您的需求。

    1. 要更改单个服务的状态管理器,您需要自定义实现 IActorStateManagerIActorStateProvider 并将它们传递给注册您的 Actor 类型的调用:ActorRuntime.RegisterActorAsync

    【讨论】:

    • 谢谢!这似乎完全符合要求
    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2017-08-05
    • 2016-08-17
    • 2016-11-16
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多