3

我最近观看了Riccardo Terrell 关于 Akka.NET 和 F# 的精彩视频但我要问的问题通常与 Akka 有关。我对他讨论错误的主管和监督策略的部分感到困惑。在他的示例中,客户端向主管发送消息,主管通过调用 worker.Tell(msg,mailbox.Sender()) 将消息转发给工作角色。我想知道这种做法有多普遍。在我们的系统中,有几个地方客户首先要求主管获取工作人员实例,然后直接对工作人员进行 Tell 调用。我对使用 Ask 并不满意,但在我们的例子中,我们需要 worker 关联性,即来自同一个客户端的消息可能需要路由到同一个 worker,因此给客户端一个 worker 实例可以简化这一点。但同样,Ask 很糟糕。因此,对于受监督的参与者,他们应该通过主管接收消息(以避免询问)还是“视情况而定”?

4

1 回答 1

0

一种解决方案可能是在使用简单的哈希函数时使用哈希池,这样您就可以消除将引用发送回询问者。

new ConsistentHashingPool(5).WithHashMapping(o =>
{
   if (o is IHasCustomKey)
       return ((IHasCustomKey)o).Key;

   return null;
});

欢迎任何意见!

于 2016-05-09T11:28:20.410 回答