Service Fabric 状态配置

Posted

技术标签:

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

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

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

感谢您的宝贵时间。

【问题讨论】:

【参考方案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",
    ...
,

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

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

【讨论】:

谢谢!这似乎完全符合要求

以上是关于Service Fabric 状态配置的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric - 如何修复失败的有状态应用程序

如何在 Azure Service Fabric 中的自托管 Web API 上配置 SSL

Service Fabric 群集卡在状态 = 正在部署

如何在 Service Fabric 部署期间保留有状态服务的状态?

Azure Service Fabric - 外部状态管理器

单个节点上的 Service Fabric 无状态服务部署