Azure 服务结构可靠的服务状态?

Azure service fabric reliable services state?

我是 azure service fabric 的新手,我想了解有状态服务的工作原理以及状态的管理方式。

假设一个具有这些副本的有状态服务:

有状态服务具有开放的通信端点,可从多个无状态服务调用。当主要副本更改状态时,更改将复制到两个活动的辅助副本。我说的对吗?

是否可以从无状态服务之一调用次要副本,或者只有主要副本可以接受请求?

如果可以调用次要副本,是否可以在主要副本更改状态时收到通知?我厌倦了 StateManagerChanged 和 DictionaryChanged 但只在主副本上调用?

我还想请求在主要副本和活动的次要副本之间划分吗?除了专门标记为次要副本的副本外,所有副本都转到主要副本吗?

Microsoft 站点上有大量关于此的文档。

然而,基本情况似乎是:

  • 状态在多个副本中被复制。
  • 交易用于复制状态
  • 主要负责写入并将更新发送到副本
  • Service Fabric 执行批处理以提高效率
  • 当主服务器因故障、负载平衡或升级而关闭时,其中一个活动的辅助服务器会在主服务器完成后立即接管。我的经验表明,一旦主节点即将关闭,您将无法保存任何状态。
  • 有多种方法可以从活动的辅助节点读取数据,但我自己还没有这样做

据我所知,底线是设计服务以假设它们会失败并且一切都会正常运行。当一个主节点出现故障时,其中一个辅助节点几乎会立即接管。