确定有状态副本在服务结构中的角色

时间:2016-06-04 23:33:43

标签: azure-service-fabric

我在Service Fabric中有一个具有多个分区和副本的有状态服务。我已对其进行了配置,以便Primary和ActiveSecondary副本都公开其端点。目的是让我可以利用辅助副本进行读取操作。

我遇到的问题是我希望能够告诉它的服务内部是Primary或​​ActiveSecondary,因为某些共享的默认代码不需要为辅助副本运行。 (因为在ReliableStateManager中插入默认值会抛出辅助节点。)

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

1 个答案:

答案 0 :(得分:3)

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

  • 角色可以在服务的生命周期内发生变化(例如,二级晋升为主要)
  • RunAsync仅在主要副本上执行(如果角色更改,将取消) - 以便您可以安全地将初始化代码放在那里
  • 对于更高级的方案,您还可以查看Partition ReadStatusWriteStatus