更换池中表现不佳的工人
Replacing bad performing workers in pool
我有一组有些无状态且执行类似任务的参与者。
这些工人中的每一个都不可靠并且可能表现不佳。在我的设计中——我可以很容易地产生更多的演员来代替懒惰的演员。
演员的演技是自己评价的。有没有办法让 supervisor/actor 池进行此评估,以帮助确定哪些 worker 的速度足以让我替换?或者我目前的策略 "the" 是正确的策略吗?
问题是 - 为什么您的某些员工表现不佳?它们之间有什么区别吗(我假设没有)。如果不是,那也许某些有效载荷只需要比其他有效载荷更多的工作 - 那么终止它们的意义何在?
一旦我们遇到类似的问题 - 并使用 SmallestMailboxRoutingLogic。它基本上尝试根据邮箱大小分配工作量。
无论如何,我宁愿尝试回答这个问题 - 为什么有些工人不稳定并且表现不佳 - 因为这看起来像是你正试图在其他地方解决的最大问题。
我自己是 akka 的新手,所以只是想提供帮助,但我的攻击将遵循以下原则:
按照以下几行编写您自己的路由逻辑https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/SmallestMailbox.scala请记住,为每个池创建一个新实例,因此每个实例都可以存储有关有多少消息的信息到目前为止已被每个演员处理。在这种情况下,一旦您发现某个 actor 表现不佳,请在单独的数据结构中将其标记为 'removable'(一旦它不再处理任何新消息)并停止发送更多消息。
编写您自己的路由器池:覆盖 createRouterActor https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/RouterConfig.scala:236 以提供您自己的 CustomRouterPoolActor
按照以下行编写您的 CustomRouterPoolActor:https://github.com/akka/akka/blob/8485cd2ebb46d2fba851c41c03e34436e498c005/akka-actor/src/main/scala/akka/routing/Resizer.scala(请参阅 ResizablePoolActor)。该参与者将有权访问您的策略实例。从此策略实例中删除已标记为删除的路由。查看 ResizablePoolCell 以了解如何删除 actor。
我有一组有些无状态且执行类似任务的参与者。 这些工人中的每一个都不可靠并且可能表现不佳。在我的设计中——我可以很容易地产生更多的演员来代替懒惰的演员。
演员的演技是自己评价的。有没有办法让 supervisor/actor 池进行此评估,以帮助确定哪些 worker 的速度足以让我替换?或者我目前的策略 "the" 是正确的策略吗?
问题是 - 为什么您的某些员工表现不佳?它们之间有什么区别吗(我假设没有)。如果不是,那也许某些有效载荷只需要比其他有效载荷更多的工作 - 那么终止它们的意义何在?
一旦我们遇到类似的问题 - 并使用 SmallestMailboxRoutingLogic。它基本上尝试根据邮箱大小分配工作量。
无论如何,我宁愿尝试回答这个问题 - 为什么有些工人不稳定并且表现不佳 - 因为这看起来像是你正试图在其他地方解决的最大问题。
我自己是 akka 的新手,所以只是想提供帮助,但我的攻击将遵循以下原则:
按照以下几行编写您自己的路由逻辑https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/SmallestMailbox.scala请记住,为每个池创建一个新实例,因此每个实例都可以存储有关有多少消息的信息到目前为止已被每个演员处理。在这种情况下,一旦您发现某个 actor 表现不佳,请在单独的数据结构中将其标记为 'removable'(一旦它不再处理任何新消息)并停止发送更多消息。
编写您自己的路由器池:覆盖 createRouterActor https://github.com/akka/akka/blob/v2.3.5/akka-actor/src/main/scala/akka/routing/RouterConfig.scala:236 以提供您自己的 CustomRouterPoolActor
按照以下行编写您的 CustomRouterPoolActor:https://github.com/akka/akka/blob/8485cd2ebb46d2fba851c41c03e34436e498c005/akka-actor/src/main/scala/akka/routing/Resizer.scala(请参阅 ResizablePoolActor)。该参与者将有权访问您的策略实例。从此策略实例中删除已标记为删除的路由。查看 ResizablePoolCell 以了解如何删除 actor。