我应该扩大AKKA中的演员或演员系统吗?

时间:2015-05-18 15:53:31

标签: akka scaling

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

我的问题是围绕同一个演员来为其他演员服务。

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

或者我应该考虑更多 ActorSystem ,其中只包含一个 EmailValidatorActor

1 个答案:

答案 0 :(得分:4)

  • 每个Actor必须在系统中具有唯一的名称(地址)。您可以使用字符串插值或串联来命名后缀。示例:context.actorOf(YourActor.props(yourParams), "review-" + index)
  • 不同的ActorSystems是不同的系统(用于隔离范围并分发不同的系统),因此为了能够进行通信,您必须在ActorSystem之外发送消息。我不认为这对你来说是最好的解决方案。
  • 我会创建一个Routing system
    • Router是您的EmailValidatorActors的协调员。它的作用是接收来自其他参与者的请求并将它们转发给有效执行作业的EmailValidatorActor(routees),并最终响应发件人。
    • 向路由发送消息有各种策略(循环,随机路由等)。