Azure service fabric 确定服务结构中有状态副本的角色

Azure service fabric 确定服务结构中有状态副本的角色,azure-service-fabric,Azure Service Fabric,我在具有多个分区和副本的服务结构中有一个有状态的服务。我已经对其进行了配置,以便主副本和ActiveSecondary副本都公开其端点。目的是使我能够利用辅助副本进行读取操作 我遇到的问题是,在服务内部,我希望能够判断它是主副本还是活动副本,因为一些共享默认代码不需要为辅助副本运行。(因为在ReliableStateManager中插入默认值会引发二级缓存。) 我可以在运行时确定副本角色吗?您可以覆盖OnChangeRoleAsync并检查ReplicaRole参数。请注意: 在服务的生命周期

我在具有多个分区和副本的服务结构中有一个有状态的服务。我已经对其进行了配置,以便主副本和ActiveSecondary副本都公开其端点。目的是使我能够利用辅助副本进行读取操作

我遇到的问题是,在服务内部,我希望能够判断它是主副本还是活动副本,因为一些共享默认代码不需要为辅助副本运行。(因为在ReliableStateManager中插入默认值会引发二级缓存。)


我可以在运行时确定副本角色吗?

您可以覆盖
OnChangeRoleAsync
并检查
ReplicaRole
参数。请注意:

  • 在服务的生命周期内,角色可能会发生变化(例如,辅助角色升级为主角色)
  • RunAsync
    仅在主副本上执行(如果角色更改,将被取消)因此您可以安全地将初始化代码放置在主副本上
  • 对于更高级的场景,您还可以检查
    分区
    ReadStatus
    WriteStatus

看起来您可以通过查看高键和低键来获得分区号。您还可以确定自己是主副本还是副本,但您是否知道自己是4个副本中的第2个(例如)。我想知道
OnChangeRoleAsync
中当前的
ReplicaRole
?它采用的参数是
newRole
,但我想知道当前角色。