Akka设计:如何动态地从群集感知路由器添加/删除routee

时间:2017-09-03 16:08:12

标签: akka akka-cluster

我有以下用例,我不确定akka工具包是否提供了开箱即用的功能:

  • 我有许多节点(实例/机器)可以在后台运行有限数量的长时间运行任务,并且在最大容量时无法接受更多工作。
  • 每个实例只能处理50个任务。
  • 所有实例都在负载均衡器后面。
  • 每个任务都可以响应来自发起任务的客户端的消息,因为客户端通过负载均衡器发送消息,实例需要将消息路由到处理任务的正确实例。

我最初尝试过群集分片,但似乎没有办法限制每个节点(= #tasks)的分片区域/参与者的最大数量。

然后我尝试使用群集感知路由器,它充当接受或拒绝工作的保护。这似乎工作得很合理,一个问题是,一旦达到容量,我需要将其作为一个白痴删除,并在它再次具有容量后再添加它。

是否有开箱即用的东西支持此用例,或者我应该继续使用路由选项,如果是这样,我该如何实现?

如果您有其他问题或某些内容不明确,我会更新说明。

1 个答案:

答案 0 :(得分:0)

您的情景听起来非常适合拉动模式。这种模式的要点是:

  • 主演员协调多个工人演员的工作单位。
  • 工人向主人注册,这意味着可以动态添加或删除工人。
  • 当主人收到要完成的工作时,主人通知工人工作可用。工人在准备就绪时拉出工作单位,做各自工作单位需要做的工作,然后在工作完成后让师傅做更多的工作。

要了解有关此模式的更多信息,请阅读以下内容(前两个链接列在Akka documentation中):