私はアプリを持っています...
このアプリは、金融商品の市場比較を行います。特定の見積もり要求に対して、他のいくつかのサイトに連絡して見積もりを求めます。次に、ユーザーに結果 (詳細のいくつかの引用符) を提供します。
これらのリクエストを管理するために、リクエストは MySQL に保存され、アプリが起動して保留中の見積もりを取得し、これらをスレッド (すべて同じ Linux ボックス) にファームして、各サイト ルックアップを処理します。
スレッド/データベース関連の問題があったため、JRuby を使用しています。Java スレッドプールを使用してスレッド数を制御します。現在のハードウェア/VPS では、約 200 スレッドを処理できます。多くの制限は、各スレッドが独自の MySQL 接続を取得することに関連しているようです - 見積もりの詳細を取得し、結果を保存します。より多くの同時スレッドを処理したいので、スケールアップする方法を探しています。
どっちにしようか迷う…
- より大きなハードウェア...
- より多くのマシンと、ある種のキューイング メカニズム (優先順位付き) を使用して、マシン間で負荷を共有するため、スレッドはデータベースに触れず、すべての詳細/応答はキューを介して送信されるため、DB ヒットは少なくなりますが、おそらく私は問題をキューに入れているだけです。キューにMongoDBのようなものを使用することを考えていますが、提案は受け付けています-Rubyで簡単に使用できるもの:)
- ある種のリモート/RPC メカニズム、たとえば dRb - 理論的にはこれは良いオプションのように見えますが、これがどれほど複雑になるかを知るためにまだ何もしていません。
- 他に何か…?
このリンクからスケールアップしない理由と-アウト? - この問題は、より多くのマシンを実行して解決するのに適しているようです。
では、どの道に進むべきかについての考えは...
乾杯、クリス