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

Where is the state stored in Actor model (Akka.net)?

我是 Actor 模型的新手。我正计划为我的一个项目实施 Actor 模型,所以我开始阅读有关 Akka.Net 的文章。从文档中可以看出,Actor 的状态似乎在 Actor 的整个生命周期中都存在。

1.Where状态是否存储?在公羊上?如果是这样,我们 运行 会不会没有 ram space?

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

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

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