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 似乎描述了您的需求。
-
要更改单个服务的状态管理器,您需要自定义实现
IActorStateManager
和 IActorStateProvider
并将它们传递给注册您的 Actor 类型的调用:ActorRuntime.RegisterActorAsync
。
【讨论】:
谢谢!这似乎完全符合要求以上是关于Service Fabric 状态配置的主要内容,如果未能解决你的问题,请参考以下文章
Service Fabric - 如何修复失败的有状态应用程序
如何在 Azure Service Fabric 中的自托管 Web API 上配置 SSL
如何在 Service Fabric 部署期间保留有状态服务的状态?