【问题标题】:Is Azure Service Fabric Stateful Service State shared across partitions?Azure Service Fabric Stateful Service State 是否跨分区共享?
【发布时间】:2017-11-09 17:07:13
【问题描述】:

我正在开发一个有状态的服务,它为我们的客户管理大量产品的库存。每个客户都属于一个租户组,该租户组可能在他自己的分区中拥有此有状态服务的实例。因此 ID 为 10 的租户和 ID 为 11 的租户可能在同一个分区中(假设)。

每个租户都可以访问 Id = 100 的项目的库存(例如)。每次有人想购买此商品时,我都会检查此租户的 Inventory 是否存在,如果不存在,则通知调用应用程序(在本例中为 Reliable Actor)并让他知道。

但是,我注意到我正在存储一个可靠的字典,其中包含项目 ID 的键和库存计数。我注意到即使服务属于不同的分区,它们仍然访问同一个对象。即使这些服务位于不同的分区下,它们仍然具有相同的底层状态,这是真的吗?

如果是这样,直接在 Actor 级别存储此信息是否更有意义?我没有在 Actor 级别看到可靠的集合,因此我构建了一个由 Actor 调用的有状态服务,但在我之前的 Akka 实现中,我会将这个状态存储在 Actor 级别。

我很好奇是否有人实现了类似的东西并且可以阐明这一点。

提前感谢您的回复!

阿努普·马尔瓦迪

【问题讨论】:

    标签: azure-service-fabric


    【解决方案1】:

    不,不同分区之间不共享状态。那会破坏目的;通过划分来保持大型数据集的可管理性。

    考虑通过为每个租户创建一个应用程序实例来实现多租户。这样租户之间永远不会共享任何数据,并且您可以轻松地备份/上/下租户。

    This 文章很好的解释了服务分区。

    【讨论】:

    • 感谢您的回复。我也是这么想的,但是当我开始测试时,似乎有些不对劲。我需要检查我的代码以确认。我会及时通知你。
    • 您好,我终于意识到问题所在了。在我的本地部署中,分区计数设置为 1,即使第二个请求的分区键不同,它最终也会进入同一个分区。将分区数增加到 10 后,情况开始看起来好多了。谢谢。
    猜你喜欢
    • 2019-11-30
    • 2018-01-11
    • 2019-01-28
    • 2016-12-14
    • 2015-09-17
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多