我应该在 AKKA 中扩展演员还是演员系统?

Should I scale actors or actorsystems in AKKA?

我有一个 EmailValidatorActor,它向发件人发送关于电子邮件有效性的回复。我有一个 ActorSystem,其中包含许多使用此 EmailValidatorActor.

的演员

我的问题是关于缩放同一个演员以服务其他演员。

如果我必须扩展 EmailValidatorActor 以服务于同一 ActorySystem 中的更多其他参与者,我是否应该创建另一个 EmailValidatorActor 之前的 EmailValidatorActor 使用了相同的地址?我可以为 EmailValidatorActor 指定相同的名称以表示它们具有相同的地址吗?

或者我应该考虑在更多 ActorSystem 行中只包含一个 EmailValidatorActor?

  • 每个Actor在系统中必须有一个唯一的名字(地址)。您可以使用字符串插值或连接来使用后缀命名它。示例:context.actorOf(YourActor.props(yourParams), "review-" + index)
  • 不同的 ActorSystems 是不同的系统(用于隔离作用域和分布不同的系统),所以为了能够通信,你必须在你的 ActorSystem 之外发送消息。我认为这不是适合您的情况的最佳解决方案。
  • 我会创建一个 Routing system
    • Router 是您的 EmailValidatorActor 的协调 Actor。它的作用是接收来自其他参与者的请求并将它们转发给 EmailValidatorActor (routees),后者将有效地完成工作并最终响应发件人。
    • 有多种向路由发送消息的策略(循环、随机路由等)。