web-dev-qa-db-ja.com

Akkaに代わる言語と製品は何ですか?

現在、私は Play Framework を見ていて、とても気に入っています。 Playで提供される機能の中で宣伝されている重い部分の1つは Akka です。

Akkaとそれを適切に使用する方法をよりよく理解するために、他の言語または製品の代替手段を教えていただけますか?

RabbitMQ と比較してどうですか?オーバーラップはたくさんありますか?それらを一緒に使用することは実用的ですか?どんなユースケースで?

21
Mike Z

開始するのに最適な場所は 素晴らしいAkkaの公式ドキュメント です。 Akkaに最も近い製品/フレームワークは erlang 言語だと思います。私推測(私はPlayフレームワークを使用していません)Akkaは、Cometおよびその他の非同期処理を実装するために使用されています。

rabbitmq はアイディア(メッセージを送信するためのインフラストラクチャー)にいくらか似ていますが、RabbitMQは erlang で書かれていることもありますが、ユースケースは少し異なります。 RabbitMQはメッセージパッシングに重点を置いていますが、Akkaはアクター(メッセージの受信者と送信者)に重点を置いています。

14

私は RabbitMQ + Spring AMQP + GuavaのEventBusを使用して、アクターのようなメッセンジャーを Guavaのパターンマッチング用のEventBus 受信メッセージを使用して自動的に登録します。

Spring AMQPおよびAkkaとの類似性はすごいです。 Spring AMQPの SimpleMessageListenerContainer + MessageListener は、Actorとほとんど同じです。

ただし、すべての意図と目的で、RabbitMQは多くのクライアント実装を持っているという点で、Akkaよりも強力です。異なる言語、は永続性を提供します(永続キュー)、トポロジールーティングおよびプラグ可能なQoSアルゴリズム

そうは言っても、Akkaの方がはるかに便利であり、理論的にはAkkaは上記のすべてを実行でき、一部の人々は拡張機能を作成しましたが、ほとんどの場合Akkaを使用してから、AkkaにRabbitMQ経由でメッセージを配信させます。また、Spring AMQP SimpleMessageListenerコンテナは重く、数百万を作成した場合に何が起こるかは不明です。

今後のプロジェクトでは、Spring AMQPの代わりにAkkaをRabbbitMQに使用することを検討します

19
Adam Gent

Play 2.0がTypesafeに参加し、さらにAkkaを使い始めたときと同じ思考プロセスを経たとき、私が提供できる最高のアドバイスは、「俳優モデル」を検索することです。

ウィキペディアはすばらしいリソースです http://en.wikipedia.org/wiki/Actor_model 。これには、アクターモデルをサポートできるプログラミング言語のリストと、アクターモデルに基づくフレームワーク(Akkaを含む)のリストがあります。

簡単に言えば、アクターモデルは同時計算モデルのアクターの概念に基づいています。アクターは必ずしもメッセージを渡すことを意味するわけではありませんが、ほとんどの一般的なユースケースでは、アクターがメッセージを渡すことになります(この場合、rabbitMQとの類似点が出てきます)。

9
Codemwnci

また、リアクティブプラットフォームであるVertxの使用を検討することもできます http://vertx.io/

そこでは、Actorパラダイムと同様にVerticle( http://vertx.io/docs/vertx-core/Java/#_verticles )を検討できます。そして、AkkaのDatabusと同様のEventBus( http://vertx.io/docs/vertx-core/Java/#event_bus

2
paul

Akkaは、concurrentdistributedシステムを構築するためのツールキットおよびランタイムです。これを実現するために、AkkaはActorモデルを使用します。 Akkaの代替手段を探している場合、Akkaには堅牢なconcurrentdistributedシステム:

  • アッカ俳優
  • アクターのルーティング、監督、モニタリング
  • 非同期および非ブロッキングメッセージング
  • Akkaクラスター(クラスター管理用)
  • Akkaパーシスタンス(イベントソーシング、パーシスタンスアクター、At-Least-Once Deliveryメッセージングの実装用)
  • Akka I/O(TCP&UDP通信用)
  • Akka HTTP(クライアントまたはサーバーとしてのHTTP通信用)
  • Akkaストリーム(ストリーム処理用)
  • ...

しかし、私は Erlang/OTP および Quasar を確認することをお勧めします。

2
Saeed Zarinfam

http://scalecube.io は低レイテンシのマイクロサービスlibです。堅牢な並行および分散システムの開発を可能にする完全なソリューション。

アッカのように:-ゴシップとスイムプロトコルに基づいています。 -メッセージはprotobuf(全二重)に基づいて駆動されます。 -そのJVM用。 -低レイテンシで約6倍高速。 -akkaストリームよりも高速であることが証明されているRxJavaを使用します。

Akkaとは異なり:-それほど説得力がない-フレームワークではありません。 -Actorパターンを全体的なパターンとして強制しない。

1
ronen