Actor 模型(Akka.net)中的状态存储在哪里?

use*_*180 4 c# actor akka akka.net

我是演员模型的新手。我正计划为我的一个项目实现 Actor 模型,因此我开始阅读有关 Akka.Net 的内容。从文档中可以看出,Actor 的状态在 Actor 的整个生命周期中都保持不变。

1.状态存储在哪里?在公羊上?如果是这样的话,我们的内存空间会不会用完?

2.当我有数百万条记录时,如何实现Actor模型?假设我想为拥有一百万条记录的客户表实现一个 Actor。我将如何加载客户?

Bar*_*ski 5

默认情况下,所有参与者状态都直接在内存中表示。您可以选择持久化它(对于使用事件源的场景,有一个 Akka.Persistence 库),但这是选择决定。

  1. Akka actor 相当轻量。中等的硬件可以轻松拥有数百万活跃参与者。当然,内存不足也是有可能的。在这种情况下,您可以处置当前未使用的 Actor,如果这仍然不够,请决定采用分布式并在多台机器上启动 Akka 集群。
  2. 通常将每个表记录投影为参与者是没有意义的。这里更有用的方法是应用 DDD(领域驱动设计)原则:参与者很好地映射了从该方法中已知的聚合根概念。在演员加载策略的情况下,通常人们不会预先加载所有它们,而是在需要时懒惰地创建它们,并且通常在一段时间不活动后处置它们(所以当你知道时,目标演员将'在接下来的几分钟或几小时内不能使用)。