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

时间:2017-06-21 06:05:42

标签: c# .net azure-service-fabric service-fabric-stateful service-fabric-stateless

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

如果我已正确阅读文档,那么此处似乎只有两个真正的选项来处理我的会话数据......

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

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

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

1 个答案:

答案 0 :(得分:1)

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

我不确定多个分区的额外复杂性是什么意思。与多原色有什么不同?您仍然需要知道保存/检索数据的主要数据,这与分区没有什么不同。