确定有状态副本在服务结构中的角色
Determine role of stateful replica in service fabric
我在 Service Fabric 中有一个具有多个分区和副本的有状态服务。我对其进行了配置,以便 Primary 和 ActiveSecondary 副本都公开其端点。目的是让我可以利用辅助副本进行读取操作。
我遇到的问题是,在服务内部,我希望能够分辨出它是主服务还是 ActiveSecondary,因为对于次要副本,某些共享默认代码不需要 运行。 (因为将默认值插入到 ReliableStateManager 会抛出辅助对象。)
我可以在 运行 时确定副本角色吗?
您可以覆盖 OnChangeRoleAsync
并检查 ReplicaRole
参数。注意:
- 角色可以在服务的生命周期内发生变化(例如从次要提升为主要)
RunAsync
仅在主副本上执行(如果角色更改将被取消)- 因此您可以安全地将初始化代码放在那里
- 对于更高级的场景,您还可以查看
Partition
的ReadStatus
和WriteStatus
我在 Service Fabric 中有一个具有多个分区和副本的有状态服务。我对其进行了配置,以便 Primary 和 ActiveSecondary 副本都公开其端点。目的是让我可以利用辅助副本进行读取操作。
我遇到的问题是,在服务内部,我希望能够分辨出它是主服务还是 ActiveSecondary,因为对于次要副本,某些共享默认代码不需要 运行。 (因为将默认值插入到 ReliableStateManager 会抛出辅助对象。)
我可以在 运行 时确定副本角色吗?
您可以覆盖 OnChangeRoleAsync
并检查 ReplicaRole
参数。注意:
- 角色可以在服务的生命周期内发生变化(例如从次要提升为主要)
RunAsync
仅在主副本上执行(如果角色更改将被取消)- 因此您可以安全地将初始化代码放在那里- 对于更高级的场景,您还可以查看
Partition
的ReadStatus
和WriteStatus