为 FMS 管理的每个新进程创建 actor 实例是否正确

Is it right to ceate actor instance for each new process managed by FMS

我正在尝试设计将管理多状态进程的应用程序。诸如从一个帐户到另一个帐户的汇款过程。我决定使用 Akka.Net FMS。但是当我发现每个新进程(新 Transfer)都需要新的 actor 实例时,我陷入了困境,因为 FMS 状态存储在 "running" actor 中。对我来说,这意味着如果我同时有 1000 个传输请求,那么我应该创建 1000 个实例。请记住,根据文档,每个参与者都在自己的线程中工作,这种方法有多现实?还是我理解有误?

Actor 不工作 "in their own threads",他们一次在一个线程上工作,这是另一回事 - 你可以让数百万个 actor 在 2 OS 个线程上完美工作,但在任何给定的时间相同的演员将始终只执行其中之一(除非您明确地逃避该障碍,例如通过演员内部的运行任务)。单个 actor 本身占用不到 1kB 或内存,并且对操作系统资源(如线程)没有任何固有要求。

一般来说,让一名演员担任转会协调员是可以的,这在 Akka.NET 中很常见。