web-dev-qa-db-ja.com

AkkaとVert.xのメッセージ受け渡しモデルの違い

Am a Scalaプログラマーであり、開発者の観点からAkkaを理解しています。Akkaライブラリのコードを調べたことがありません。ベース-しかし、Akkaを大規模に実行したことがないAkkaを本番用に構成した経験がありません。

  1. AkkaとVert.xのメッセージ受け渡しモデルは非常に異なりますか?どうやって?
  2. メッセージをバッファリングするためのAkkaのアクターとVert.xのバーティクルの背後にあるデータ構造はまったく異なりますか?
44
Bharadwaj

表面的な見方では、それらは本当に似ていますが、私は個人的にはAkkaよりもMQシステムに似たvert.xのアイデアを考えています... vert.xトポロジはよりフラットです:verticleは他のverticleとメッセージを共有し、受信します応答...代わりにakkaはツリーのようなもので、複数のアクターがいますが、他のアクターを使用してアクターを監督できます。単純なプロジェクトの場合はそれほど大したことではないかもしれませんが、大きなプロジェクトの場合はより多くの「階層システム」...

一方、vert.xは、非常に人気のある言語間の相互運用性を向上させます*。私にとってそれは大きなポイントであり、アクターをMQシステムと混合し、より複雑に対処する必要がある場合、vert.xはそれをシンプルでエレガントにします。システムはscala上でのみ構築されるため、akkaが最良の方法になる可能性があります... javascript、Ruby、python、Javaなどとの通信が必要で、複雑な階層が必要ない場合は、vert.xが最適です行く方法..

*(jsonを使用し、これはに比べて利点または欠点になる可能性があります)

また、vert.xは完全なソリューション、tcp、httpサーバー、ルーティング、さらにはwebsocketであることも考慮する必要があります!!!彼らは完全なスタックを提供し、APIは非常にきれいであるため、それはかなり驚くべきことです... akkaを選択した場合、play、xitrumまたはsprayなどのフレームワークを使用する必要があります。個人的には私はそれらが好きではありません.

また、vertxは意見の表明されていないプラットフォームであることを忘れないでください。たとえば、ほとんどオーバーヘッドなしでakkaまたはkafkaを使用することができます。それはとても簡単です...

Vert.xは驚くべき視点を持つ大きなプロジェクトですが、本当に新しいソリューションが必要な場合、それはより良い選択肢ではないかもしれません。幸い、同じプロジェクトで両方を学び、両方を使用することができます...

56
clagccs

少しのグーグル検索を行った後、私はAkkaとVert.xの詳細な比較でまだ行われていないことを理解しました(少なくとも私はそれを見つけられません)。

計算モデル:

  • Vert.xは、イベントドリブンモデルに基づいています。
  • Akkaは同時実行のアクターモデルに基づいています。

リアクティブストリーム:

  • Vert.xにはリアクティブストリームが組み込まれています
  • Akkaは、Akka Streamingを介したリアクティブストリームをサポートしています。 Akkaには、非常に簡潔でクリーンなストリーム演算子(Scala DSLを介して)があります。

HTTPサポート

  • Vert.xには、ネットワークサービス(HTTP、TCPなど)の作成の組み込みサポートがあります。
  • AkkaにはそのためのAkka HTTPがあります

Scalaサポート

  • Vert.xはJavaで書かれています
  • AkkaはScalaで書かれており、作業するのが楽しい

リモートサービス

  • Vert.xはサービスをサポートしているため、サービスを明示的に作成する必要があります
  • Akkaには、クラスタリング、複製、負荷分散、監視などをサポートするネットワーク上の任意の場所に展開できるアクターがあります。

参照:

37
tuxdna