1

Heroku の dyno およびワーカー プロセス モデルは、シングル プロセスであるがマルチスレッドの Java ベースのサーバーに関連しているため、よくわかりません。

例: (単一の dyno の場合) バックグラウンド スレッドで使用できるプロセッサの数を知るにはどうすればよいですか? RabbitMQ のようなものを使用して、バックグラウンド処理タスクごとに個別のプロセス (アプリ) を作成し、サーバーとこれらの間で通信する必要がありますか? Thread Cached Executor を使用する一部のスケジュールされたタスクでは、少しやり過ぎのようです。すべての Future をプロセス間 Future に変更する必要がありますか?

この疑問に尽きると思います。スレッド アクティビティに対応するために、マルチスレッド サーバーを作成し、サーバー プロセスで使用できるプロセッサをスケーリングすることはできなくなりましたか? それとも、同時実行のために別のプロセスを使用するようにアーキテクチャをリファクタリングする必要がありますか? 前者の場合、ワーカーまたは複数の dyno が必要ですか?

ありがとう。

4

1 に答える 1

1

Heroku は複数の同時実行モデルをサポートしているため、アプリケーションをどのように設計するかは自由です。完全な Java スタックにアクセスできるため、Web プロセスで複数のスレッドとして実行する方が理にかなっている場合は、間違いなくそれを行うことができます。また、RabbitMQ や Redis などのジョブを常にキューに入れ、個別に処理することもできます。ワーカー dyno。マルチスレッドは Web dyno に合わせてスケーリングされるため、作業量が軽く、Web リクエストに比例する場合は、より単純で理にかなっています。ただし、作業が大きく、比例していない、および/または個別にスケーリングする必要がある場合は、別のプロセスに分割することをお勧めします。

Heroku はもともと単なる Ruby プラットフォームであり、Java と同じスレッド機能を備えていないため、Ruby では個別のワーカー dyno を使用することがより重要であり、これはいくつかのドキュメントやサンプルに反映されており、これが原因である可能性があります。あなたの混乱。幸いなことに、Java を使用すると、より多くのオプションを利用でき、目の前の仕事に最適なものを使用できます。

于 2013-04-18T05:27:28.323 に答える