2016-04-30 9 views
0

次の質問に既に回答している場合、またはまだ十分に具体的でない場合は申し訳ありませんが、私はクラスタ化されたアプリケーションのトピックを全く新しくしており、今すぐ出発点を探しています。アプリケーションをクラスタ化する方法

私の目標は、主にリモートサーバー上の他のソフトウェアを開始するさまざまなタスクを実行するソフトウェアを作成することです。このソフトウェアは、現在必要とされている他のソフトウェアのインスタンス数を計算する必要があるため、何らかの理由でリモートサーバーに新しいインスタンスを起動するよう指示する必要があります。

新しいインスタンスを要求しているソフトウェアを使用できない、またはクラッシュしてはいけません。そのため、複数のサーバーに分散し、これらのインスタンスを同時に動作させ、インスタンスがクラッシュした場合に引き継ぎます。システム全体が幾分弾力性があります。

アプリケーション自体は、REST API経由またはTCP接続経由でアクセス可能である必要がありますが、前者を選択する必要があります。あなたが私に助けてくれるフレームワークを知っていれば、私に知らせることができれば嬉しいです。

敬具

PS:私は、春には、分散システムのためのいくつかのサポートを提供しますが、それは本当に私の仕事で私を助けになるならば、私はわからないだということを見てきました。

+0

IMOこの質問はあまりにも広すぎます。これを行うには無数の方法があり、多くのライブラリ/フレームワークオプションなどがあります( "Cluster analysis"、btwは全く異なるものです)。実際のプログラミングに関する質問があるまで、トランスポートの仕組みは完全に無関係です。 –

答えて

0

あなたは、あなたのアプリケーションがいくつかのタスクに

  • あなたのアプリケーションを実行したい

    1. 私の部分にあなたの質問を分割してみましょうあなたは、あなたのためのメカニズムのいくつかの並べ替えをしたいの高可用性を目的と
    2. のために複数ありますメッセージを通信して渡すアプリケーション
    3. アプリケーションに到達可能(REST APIまたはTCP)にすることが望ましいREST

    最初の3つの質問に対する答えは、すべて自分で実装するのではなく、目的に応じて分散キャッシュを使用することです。分散キャッシュまたはインメモリー・データ・グリッドは本質的にクラスター化されており、実稼働環境に高可用性を提供します。 Scalabiiltyはあなたのためにプラスです。

    必要なアプリケーションをいくつでも展開し、Cache/IMDGを使用して高可用性とプラットフォーム/メディアを提供し、アクションを調整することができます。ライターロックのような機能は、2つのアプリケーションが同じタスクを実行していることを保証することはできません。

    最後に、アプリケーションに到達可能なREST APIを作成するには、アプリケーションをWebベースのアプリケーションとして展開し、その下に分散キャッシュを使用するだけです。

    開示:私はAlachisoftで働いています。インメモリー分散キャッシュ・プロバイダー。私たちには、Linux用とWindows用の2つの製品があります。両方の言語のサーバー.NETとJavaアプリケーションとオブジェクトは互換性があります。 TayzGridとNCacheの機能

  • 関連する問題