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

时间:2017-05-13 04:54:54

标签: c# akka actor akka.net

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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