【问题标题】:Where is the state stored in Actor model (Akka.net)?Actor 模型(Akka.net)中存储的状态在哪里?
【发布时间】:2025-12-04 17:25:01
【问题描述】:

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

1.状态存储在哪里?在公羊上?如果是这样,我们不会耗尽内存空间吗?

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

【问题讨论】:

    标签: c# akka actor akka.net


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的详细解答!