4

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

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

鉴于状态的复制和读写性能,最有效的前进方式是什么?

4

1 回答 1

3

听起来您应该使用有状态的 Actor,您可以拥有数百万个持有数据的 Actor。

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

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

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

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

于 2017-09-20T07:06:09.043 回答