Azure 服务结构,有状态服务只能有一个主服务吗?

Azure service fabric, can a stateful service only ever have a single primary?

我想创建一个使用 Azure Service Fabric 托管的服务,ASP.NET 核心作为前端。

如果我没有正确阅读文档,那么这里似乎只有两个实际选项可用于处理我的会话数据...

1 - 创建一个无状态服务,该服务使用外部数据库(例如 Azure SQL)来存储会话信息。然后,我可以通过简单地增加实例数来扩展,并在节点上获得更多服务 运行。只要 Azure SQL 数据库能够应对负载,那么一切都很好。这很有吸引力,因为它易于理解和实施。但是它有外部数据库的额外成本。

2 - 创建使用可靠集合(字典)存储会话信息的有状态服务。我不想将我的会话分成多个分区,因为这会带来额外的复杂性。但是对于单个分区,我只能使用一个主服务器实例。这降低了拥有外部数据库的成本。但不会扩展到两个或更多服务器实例。

我对文档的阅读意味着您只能有一个主服务器用于有状态服务分区。我做对了吗?如果我可以有更多的初选,那么有 100 个初选可以吗?

不,你不能有 100 个初选。在有状态服务中,分区是您扩展的方式。您只能对主副本执行写入,主副本负责将该状态复制到辅助副本。

我不太确定您所说的多个分区的额外复杂性是什么意思。这与多次初选有何不同。您仍然需要知道 save/retrieve 数据 to/from 的主要数据,这与分区没有什么不同。