2016-02-05 8 views
9

これは非常に不正確な質問であり、積み重ねるのには不適切と思われるかもしれません。残念ながら、(俳優の数の点で)より小さいアプリケーションと「チュートリアルのようなもの」は、メッセージディスパッチのオーバーヘッドと、「スカラオブジェクト」と「コーバオブジェクト」の間の粒度の迅速な瞬間についての直感を開発するのに役立ちません。akkaの俳優はどれくらい重いですか?

ほぼ確実例えば、クライアントとの会話の状態を維持したままでは、ほとんどの実際のユースケースでは、多くのクラスによってモデル化条件/パラレル/代替の相互作用を伴うだろう、役者に値します。これは、正式に廃止されたEJBに類似した、かなり複雑なサービスへのファサードとしてのファサードとしての扱いと、小さなトークオブジェクトに似た、通信が非同期的に実装される可能性がある場合には、

ライフサイクル管理に伴うオーバーヘッドがありますが、ルート内の例外やその他のエラーのため、アクターのサブツリー全体のチェーン・リスタートによる潜在的な問題に注意しています。

この質問のために、私たちはコミュニケーションの大半は、単一のマシン内で発生し、ネットワークの交差が軽微であると仮定してもよいです。

答えて

8

私は、あなたが「自分自身のメッセージパッシングのオーバーヘッド」によって何を意味するかわかりません。 ネットワーク/シリアル化が含まれていない場合、オーバーヘッドは無視できます。一方の側はメッセージをキューにプッシュし、もう一方はキューからメッセージをプッシュします。

アッカは、それが単一のマシン上で毎秒早く50万メッセージを行くことができると主張しています。これは、複雑なサブシステムのファサードのようにアクターを使用しないことを意味します。あなたはむしろ、それらを小さな "作業単位"としてモデル化するでしょう。便利なときに、小さなトークオブジェクトに比べて複雑にすることができます。たとえば、KafkaConsumerActorは内部的にConnection、Configurationなどの他の「通常の」クラスを利用することができますが、これらはアクターである必要はありません。しかし、単純な作業(メッセージを消費し、どこかに送信する)を行う単純な作業単位になるにはまだ十分です。
50百万秒は本当にたくさんあります。

メモリフットプリントも非常に小さくなります。 Akka自身は、ちょうど1GBのヒープで約2.5百万人の俳優を抱えることができると主張しています。典型的なシステムとは対照的に、実際には何もありません。私は本当にそれが重要なことであることを期待していないので、役者を作成ライフサイクルについては

は、クラスのインスタンスとメールボックスを作成するよりもはるかに重いではありません。
通常、システムには1つのメッセージを処理して死ぬアクターがたくさんありません。通常、はるかに長く生きる俳優を育てる。同様に、あなたが提供するパラメータに基づいて住宅ローンの返済額を計算する俳優は、まったく死ぬ理由もありません。
また、Akkaでは、俳優プール(さまざまな種類のもの)を使用するのが非常に簡単です。
ここでのパフォーマンスは非常に微妙です。

最後のポイントは、あなたがコンテキストでアッカのオーバーヘッドを比較するべきであるということです。たとえば、システムがデータベースクエリを実行したり、HTTPリクエストを処理したり実行したり、何らかの大規模IOを実行したりしている場合、これらのアクティビティのオーバーヘッドはAkkaのオーバーヘッドをあまりにも小さくするので、それについて考えることさえありません。 50ミリ秒のDBへのラウンドトリップのように、2.5百万回のakkaメッセージからのオーバーヘッドに相当します。それは問題ですか?

あなたはAkkaがパフォーマンスペナルティを支払うことになるエッジケースのシナリオを見つけることができますか?多分。 Akkaは黄金のハンマーではない(何もない)。
しかし、上記のことをすべて念頭に置いて、特定の状況でパフォーマンスのボトルネックになっているのがAkkaなら、マイクロ最適化に時間を浪費していると考えるべきです。

+1

一部のハード番号ありがとうございます。私は個々のUDP/IPパケットを扱うコンテキストで考えていました。一つのアクターがそれぞれのノートに注意を払う必要があり、会話を認識した後でそれが責任あるアクターに委任されたその場で作られた。競合の単一のポイントを取り除くことは可能ですが、非常に単純なソフトウェアだけを実行できる多数の、しかし小さな低レベルのデバイスであるクライアントには、複雑さが大幅に増加し、クライアントに完全に移行することはありません。 – Turin

関連する問題