3

私が現在 Akka を使用して開発しているデータ マイニング アルゴリズムについて、Akka が送信されるメッセージのパフォーマンスの最適化を実装しているかどうか疑問に思っていました。

たとえば、同じ他のアクターに非常に多くのメッセージを送信するアクターがある場合、一連のメッセージを別の大きなメッセージにカプセル化するのは適切ですか? それとも、Akka 自体に何らかのバッファがあり、1 つのメッセージではなく、多数のメッセージが一度にネットワーク経由で転送されるのでしょうか?

この質問をしている理由は、アルゴリズムが転送パフォーマンスが重要なクラスターでリモートで実行されることになっているためです。現在、自分でベンチマークを実行するオプションはありません。

4

1 に答える 1

2

同じマシン上の Akka で渡されるメッセージの場合、小さなメッセージを使用するか、メッセージの集合を単一のメッセージとして使用するかはあまり重要ではないと思います。集約の処理中にループする必要がある場合と比較して、多くの呼び出しの追加のオーバーヘッドは最小限に抑えられると思います。システムをシンプルに保つため、小さなメッセージを使用することをお勧めします。

ただし、ネットワーク経由でメッセージを送信する場合、Akka は HTTP を使用しているため、接続の設定などに追加の HTTP オーバーヘッド コストがかかります。したがって、ここでいくつかのメッセージを 1 つのメッセージに集約することを選択できます。ただし、これもユースケースによって異なります。バッファリングとは、十分な数になるまで (またはタイムアウトが発生するまで) 待機することを意味します。迅速な応答が必要な場合など、待てない場合でも、各メッセージを個別に送信する必要があります。

メッセージの集約を行う標準の Akka アクターはないと思います。おそらく、バッファリングを行う特別な種類のルーティングを適用できます。

または、Akka Streams をご覧になることもできます。それはメッセージのバッファリングをサポートします。

于 2015-04-17T12:14:21.160 に答える