今、私はPlay Frameworkを見ていて、とても気に入っています。Playで提供される機能の中で宣伝されている部分の1つは、Akkaです。
Akkaとその適切な使用方法をよりよく理解するために、他の言語または製品の代替手段を教えてください。
RabbitMQはそれとどのように比較されますか?重複は多いですか?それらを一緒に使用することは実用的ですか?どのようなユースケースで?
今、私はPlay Frameworkを見ていて、とても気に入っています。Playで提供される機能の中で宣伝されている部分の1つは、Akkaです。
Akkaとその適切な使用方法をよりよく理解するために、他の言語または製品の代替手段を教えてください。
RabbitMQはそれとどのように比較されますか?重複は多いですか?それらを一緒に使用することは実用的ですか?どのようなユースケースで?
RabbitMQ + Spring AMQP + GuavaのEventBusを使用して、受信したメッセージのパターンマッチングにGuavaのEventBusを使用して、アクターのようなメッセンジャーを自動的に登録します。
SpringAMQPとAkkaとの類似性はすごいです。SpringAMQPのSimpleMessageListenerContainer+MessageListenerは、アクターとほとんど同じです。
ただし、すべての目的と目的において、RabbitMQは、さまざまな言語で多くのクライアント実装があり、永続性(永続キュー)、トポロジルーティング、およびプラグ可能なQoSアルゴリズムを提供するという点で、Akkaよりも強力です。
とはいえ、Akkaの方がはるかに便利で、理論的にはAkkaは上記のすべてを実行でき、拡張機能を作成している人もいますが、ほとんどの場合、Akkaを使用してから、AkkaにRabbitMQを介してメッセージを配信させます。また、Spring AMQP SimpleMessageListenerコンテナーは一種の重いものであり、数百万個作成した場合に何が起こるかは不明です。
後から考えると、将来のプロジェクトでは、SpringAMQPの代わりにAkkatoRabbbitMQを使用することを検討します。
開始するのに最適な場所は、すばらしいAkkaの公式ドキュメントです。Akkaに最も近い製品/フレームワークはerlang言語だと思います。(私はPlayフレームワークを使用していません)AkkaはCometやその他の非同期処理を実装するためにそこで使用されていると思います。
アイデア(メッセージを送信するためのインフラストラクチャ)はrabbitmqと多少似ていますが、RabbitMQはerlangで記述されていることもありますが、ユースケースが少し異なります。RabbitMQはメッセージの受け渡しに重点を置いていますが、Akkaはアクター(メッセージの受信者と送信者)に重点を置いています。
Play 2.0がTypesafeに参加し、Akkaをさらに使い始めたときにも同じ思考プロセスを経たので、私が提供できる最善のアドバイスは、「アクターモデル」を検索することです。
ウィキペディアは素晴らしいリソースです-http://en.wikipedia.org/wiki/Actor_model。アクターモデルをサポートできるプログラミング言語のリストと、アクターモデルに基づくフレームワーク(Akkaを含む)のリストがあります。
簡単に言えば、アクターモデルは、並行計算モデルのアクターの概念に基づいています。アクターは必ずしもメッセージの受け渡しを意味するわけではありませんが、ほとんどの一般的なユースケースでは、アクターがメッセージを渡します(これはrabbitMQとの類似点が出てくるところです)。
Akkaは、並行システムと分散システムを構築するためのツールキットおよびランタイムです。これを実現するために、Akkaはアクターモデルを使用します。Akkaの代替手段を探している場合、Akkaのような完全なソリューションを見つけることはできないと思います。これは、Akkaには、堅牢な並行および分散システムの開発を可能にするいくつかの機能があるためです。
しかし、 Erlang/OTPとQuasarを見てみることをお勧めします。
また、ReactiveプラットフォームでもあるVertxの使用を検討することもできますhttp://vertx.io/
そこで、アクターのパラダイムに似たVerticle(http://vertx.io/docs/vertx-core/java/#_verticles )を検討できます。そして、AkkaのDatabusと同様のEventBus(http://vertx.io/docs/vertx-core/java/#event_bus)
http://scalecube.ioは、低レイテンシのマイクロサービスライブラリです。堅牢な並行および分散システムの開発を可能にする完全なソリューション。
アッカのように:-それはゴシップと水泳のプロトコルに基づいています。-そのメッセージはprotobuf(全二重)に基づいて駆動されます。--JVM用です。-待ち時間が短く、約6倍高速です。-akkaストリームよりも高速であることが証明されているRxJavaを使用します。
Akkaとは異なり:-あまり意見がありません-フレームワークではありません。-全体的なパターンとしてアクターパターンを強制しません。