2016-10-21 12 views
0

Vert.xを使用する場合は、スレッド管理に注意する必要があります。私はVert.xのために全く新しいOrbitクライアントを実装したくありません。 Vert.xクラスタとOrbitクラスタを通信する適切な方法は何ですか? クラスタのVert.x tcpイベントバスブリッジを使用することは良い考えですか?Vert.xクラスタとOrbitクラスタを通信する適切な方法は何ですか?

+0

ユースケースは何ですか? Vertxと統合したい既存のOrbitコードベースをお持ちですか? –

+0

既存の軌道コードベースはありません。多くのデバイスがvert.xに接続し、各デバイスは独自の頂点(および状態)を持ちます。これらのデバイスは、常に実行されているわけではないバックグラウンドサービスをサブスクライブします。だから私は、仮想アクターのパターンが、ライフサイクルとアクターの配分を管理するのではなく、自分のシナリオに適していると思います。オービットバーチャルアクターサブスクリプションは、私が適切な方法で達成する必要があるものです。 verticleでOrbitクライアントを使用すると、vert.xスレッドがブロックされることが考えられます。私はこれらのテクノロジースタックの専門家ではありませんが、私は非常に学習に興味があります。助けてくれてありがとう。 –

+0

しかし、それにはVertx Hazelcastクラスタを使うことができます。 EventBusを介して作業者の頂点にメッセージを送信します(呼び出すとバック​​グラウンドサービス)。 –

答えて

1

ここでは最善の答えはありません。両方のオプションに長所と短所があります。

tcp eventbusブリッジを使用すると、さまざまなシステム間の統合を迅速に行うことができますが、単一障害点が導入されるという欠点があります。ブリッジを実行しているノードがクラッシュするか、ネットワークが切断されて隔離されているとします。

また(もう少し複雑な)軌道に基づいてクラスタマネージャを実装することもできます。 1つは、インタフェースClusterManagerを見て開始し、そこから軌道の実装を提供する必要があります。実行時(クラストップ側)のクラスタマネージャ全体がSPIであるため、実装jarを置き換えるだけで、コードを変更する必要はありません。詳細は、hereを参照してください。欠点は、達成するのがより複雑になることですが、より良い統合が可能になります。

関連する問題