Web アプリケーションの背景:
java/spring-mvc/tomcat を使用して Web サービスを提供し、安静な API をモバイル クライアントに公開しています。私は今、Web サーフェイスのすべてに満足しています。問題は、私のアプリケーションのコアに非常に重い計算プロセスがあり、別の Java プログラムを呼び出して画像を処理し、計算されたデータを Web サービスに返すことです。EC2 インスタンスのメモリを大量に消費したり、Tomcat7 サーバーをシャットダウンする例外を引き起こしたりすることがあります。
質問:
現在、すべてが同じ tomcat7 コンテナーの下で実行されています。これら 2 つを分離して別のサーバーにインストールできるようにするソリューションを探しています。おそらく、プログラムだけを計算するための高メモリ サーバーを見つけます。
それらを分離し、スケーラビリティと安定性を向上させるオプションは何ですか?
アップデート:
プログラムまたはコマンド ラインからコンピューティング エンジンを呼び出すことができます。
アップデート2:
私は答えに基づいていくつかの研究を行いました。Apache Camel とは正確には何ですか?に関する別の投稿を読んだとき 、おそらく EIP パターンについてもう少し学ぶべきだと思います。うまくいけば、それはやり過ぎではありません。
提案に基づくソリューション
EIP の概念、camel の動作、activemq を読んだ後、最終的に解決策を思いつきました。エレガントではないかもしれませんが、機能しています。提案やコメントをいただければ幸いです。apache-camel に基づいてキュー ルーターを作成し、activemq ブローカーに接続し、1 つのサーバーでスタンドアロン プログラムとして実行しました。スタンドアロン コンテナーで実行されているコンピューティング エンジンとルーターは、web サーバーで私の spring コンテナーからの jms リクエスターを処理する責任があります。後でさらに集中的なコンピューティングが必要な場合は、camel からコンピューティング エンジンの負荷分散を構成する必要があります。