3

最近、Riccardo Terrell による Akka.NET と F# に関する素晴らしいビデオを見ました。しかし、私が尋ねようとしている質問は、一般的に Akka に関連しています。彼がスーパーバイザーとエラーに対する監督戦略について話している部分に戸惑いました。彼の例では、クライアントはメッセージをスーパーバイザーに送信し、スーパーバイザーは worker.Tell(msg, mailbox.Sender()) を呼び出してワーカー アクターに転送します。私はそのような慣習がどれほど一般的であるか疑問に思います。私たちのシステムでは、クライアントが最初にスーパバイザにワーカー インスタンスを取得するように依頼し、次にワーカーに直接 Tell 呼び出しを行う場所がいくつかあります。Ask の使用には満足していませんが、私たちのケースではワーカー アフィニティが必要です。つまり、同じクライアントからのメッセージを同じワーカーにルーティングする必要がある場合があるため、クライアントにワーカー インスタンスを与えることでこれが簡単になります。しかし、繰り返しますが、尋ねるのは悪いことです。監視対象のアクターの場合、(Ask を回避するために) スーパーバイザー経由でメッセージを受信することになっているのでしょうか、それとも「場合による」のでしょうか?

4

1 に答える 1

0

解決策の 1 つは、単純なハッシュ関数を使用するときにハッシュ プールを使用することです。そうすれば、asker への参照の返送をなくすことができます。

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

   return null;
});

どんなコメントでも大歓迎です!

于 2016-05-09T11:28:20.410 に答える