2013-05-16 6 views
77

私は新しいプロジェクト(Javaベース)を開始する途中です。私はそれをモジュラーで分散した弾力のあるアーキテクチャとして構築する必要があります。AkkaまたはReactor

私は、相互に通信できるビジネスプロセスを持ち、相互運用可能で、しかも独立していたいと思います。私は、年齢でその差以外にも2つのフレームワークで、今探しています

、2つの異なる見解表明:

何I上記のフレームワークのいずれかを選択する際に考慮する必要がありますか?

私が今まで理解している限り、Akkaはまだ何らかの形で結合されています(私はメッセージを送信したい俳優を「選択」しなければならない)が、非常に弾力性があります。 Reactorは緩やかですが(イベント投稿に基づいています)。

誰かが正しい判断を下す方法を理解する助けになることができますか?

UPDATE

良くアッカのEvent Busを確認した後、私はfeatures expressed by Reactorがすでにアッカに含まれているいくつかの方法を信じています。従って、両者の間に大きな違いがあることを今私には思える

final ActorSystem system = ActorSystem.create("system"); 
final ActorRef actor = system.actorOf(new Props(
    new UntypedActorFactory() { 

     @Override 
     public Actor create() throws Exception { 

      return new UntypedActor() { 
       final LoggingAdapter log = Logging.getLogger(
         getContext().system(), this); 

       @Override 
       public void onReceive(Object message) 
         throws Exception { 
        if (message instanceof String) 
         log.info("Received String message: {}", 
           message); 
        else 
         unhandled(message); 
       } 
      }; 
     } 
    }), "actor"); 

system.eventStream().subscribe(actor, String.class); 
system.eventStream().publish("testing 1 2 3"); 

を::

は、例えばhttps://github.com/reactor/reactor#events-selectors-and-consumersに文書化され、サブスクリプションおよびイベント発行は、以下のようアッカで表現することができる

  • アッカ、より成熟した、春にバインドされ、
  • 炉、早期に型保証するためにバインドされ

私の解釈は正しいですか?しかし、AkkaのActorとReactorのConsumerの違いは何ですか?

+8

アッカは、スカラで使用するためにバインドされていない:)数ヶ月でより多くの比較ポイントを持っています実際には、大多数は、Javaからそれを使用しています。 –

+0

こんにちはViktor、はい、私はAkkaをJavaでも使っています。私が意味することは、AkkaはTypesafeエコシステムの一部であり、Reactor to Springは一部であるということです。 Scalaで開発する場合、Akkaがおそらく最も適切な選択肢になるでしょう。 –

+0

Viktor、AkkaがReactorパターン(イベントバス、ディスパッチャ、メールボックス)を実装しているとは言えるでしょうか? –

答えて

30

これは素晴らしい質問です。答えは今後数週間にわたって変化します。私たちは、ノード間通信が早すぎるという理由だけで今のように見えることを約束することはできません。 Reactorでクラスタリングを実証する前に、いくつかの要素をまとめておく必要があります。

Reactorがノード間通信を行わないからといって、OOTBはそれを意味するわけではありません。できません。 :)ある人は、RedisやAMQPのようなものを使ってReactors間を調整するためにかなり薄いネットワークレイヤーしか必要としません。

私たちは、Reactorの分散シナリオについて話していることは間違いありません。どのように動作するのか正確に言うのは時期尚早です。

現在クラスタリングしているものが必要な場合は、Akkaを安全に選択してください。

+0

ありがとうジョン、私は非常に有望なリアクターを見つける。しかし、ReactorとAkkaの間に概念的な違いがあるかどうかを理解する必要がありますが、Reactorが欠けている(もちろん、初期段階にあります)機能はありません。要約すると、Akkaの俳優とReactorの消費者の概念の違いは何ですか?私はAkkaのサンプルイベントで自分の質問を更新しましたが、Reactor GitHubページのイベント購読/ディスパッチに似ていると思います。ありがとう。 –

+0

ジョン、私はあなたの回答をここで読んでいた:http://blog.springsource.org/2013/05/13/reactor-a-foundation-for-asynchronous-applications-on-the-jvm/#comment-345867 - so長期的にはAkkaとReactorはReactorパターンとActorモデルをサポートする類似のフレームワークになると仮定しているかもしれません。 –

+0

上記のコメントは、以下の理由により正しくありません。http://stackoverflow.com/questions/16595393/akka-or-reactor/16674388#comment23991745_16663953およびhttp://stackoverflow.com/a/16674388/565110 –

41

Reactorはまだスケッチであり、私(Akka tech lead)はそれがどこへ行くのかについての洞察を持っていないので、この時点では分かりません。 ReactorがAkkaのライバルになるかどうかは興味深いところです。楽しみにしています。

あなたの要件リストからReactorには反発力(すなわち、Akkaであなたに与えられる監督)と場所の透過性が欠けています(つまりローカルまたはリモートメッセージングで抽象化できるようにアクティブエンティティを参照します。あなたが「分散」を意味するものです)。 「モジュラー」については、特に、アクティブなコンポーネントを見つけて管理する方法については十分に分かっていません。

今実際のプロジェクトを開始し、最初の文を満たすものが必要な場合、私はこの時点でAkkaを推奨することは議論の余地がないと思います。 SOまたはakka-user mailing listに関するより具体的な質問をお気軽に。

+0

Rolandありがとう、私は両方のプロジェクトからの人々が答えに貢献していることを知りたいです。私は現在Akkaを試しています。ご想像のとおり、Reactorがまだ初期段階にあり、それでは比較には適していないことを除いて、最終的な回答を提供するのは時期尚早です。だから、物事がどのように進化するのを待ってみましょう:-) Thanks、David –

+7

あなたの答え、Rolandありがとう。 ReactorがAkkaのライバルではないことを明確にしたかっただけです。非同期アプリケーションに関する重複する領域があるため、類似点があります。しかし、Reactorは、他のシステムを構築するための基盤となるフレームワークであることを意図しています。これらの他のシステムは、Reactor自身よりもAkkaとさらに重複する可能性があります。しかし、近い将来、Reactorは他のシステムを可能にするフレームワークのままであり、それ自体が完全なスタックフレームワークではない。あなたはReactor/Akkaの銃撃戦の満足を遅らせる必要があります。 ;) –

+0

心配する必要はありません、私はあなたがうまくいくと思います。そして、より多くの図書館がこの分野に参入するにつれて、相互受粉が見られることは間違いありません。 –

35

ReactorはSpringにはバインドされていませんが、オプションのモジュールです。私たちはReactorをポータブルにしたいと考えています。

私たちも、マイルストーン(1.0.0.SNAPSHOT)ではないとして、私は生産にプッシュする自信はありません、その点では、私がIMO幻想非同期フレームワークですアッカの深い顔をしているでしょう。 Vert.xFinagleプラットフォーム(旧式)または複合型先物(後者)のいずれかを検索する場合には、適合している可能性があります。幅広い非同期パターンを見てみると、おそらくGParsがより完全なソリューションを提供します。あなたは簡単にRxJavaからのビットを見つけることができます

最後に、我々は確かに、実際に我々は混合アプローチに向かって重複傾いていたかもしれない(分散柔軟な構成可能な、イベンティング、および任意の派遣戦略にバインドされていません)、 Vert.xアッカは、など私たちがしても、私たちは強くGroovyのにコミットしている場合でも、言語の選択によって独断されていない、人々はすでにのClojureとKotlinポートを開始しました。いくつかの要件がSpring XDGrailsによって駆動されるという事実をこのミックスに加えてください。あなたの目撃興味のため

多くのおかげで、うまくいけば、あなたは、

+0

ステファンありがとう、私はあなたの答え(とジョンのコメント、http://stackoverflow.com/questions/16595393/akka-or-reactor/16674388#comment23991745_16663953)ははるかに明確な視点を与えると思います。私はあなたが言ったように、質問に答える前にまだ把握しています、近い将来に何が出てくるのか見てみましょう。再度、私は本当に両方のプロジェクトに携わる人々が時間を費やして有用な洞察を提供することに感謝します。 –

+0

私はVert.xに同意します。私はVert.xをプロダクション環境でいくつかのプロジェクトで使用してコンポーネント間の通信を行いました。シームレスに動作します。 – Wins

関連する問題