服务结构可靠的集合性能

时间:2017-07-04 11:25:09

标签: azure-service-fabric service-fabric-stateful

我需要在Service Fabric上的Reliable Dictionaries中存储大量数据。我们正在将一个事件存储实现为一些可靠的字典,因此域中发出的每个事件都会在商店中结束。我想知道以下两种情况下的性能差异:

  • 使用一个(非常大的)可靠字典存储某个聚合类型的所有事件:这会产生少量字典,每个字典包含数百万个事件
  • 使用一个小的可靠字典来存储单个聚合实例的事件:这会产生很多小字典(想想数百万),每个都包含一些事件

鉴于状态的复制,以及读写性能,最有效的方法是什么?

1 个答案:

答案 0 :(得分:3)

听起来你应该使用有状态演员,你可以拥有数百万持有数据的演员。

如果您需要阅读所有演员的大量摘要(汇总)信息,请参阅https://github.com/Azure-Samples/service-fabric-dotnet-data-aggregation/blob/master/README.md

如果您想使用有状态服务,我的想法如下: 对于第一个场景,您将不得不使用分区,对于第二个场景,您应该构建多个数据服务,以便您的数据在节点之间分配。

第二种方案的优点是可以更快地访问其数据,但需要额外的目录服务来保存事件聚合的名称,以便您可以查找正确的目标字典。

在两种情况下,复制不应该有所不同。