ユーザーリクエストを受け取り、それらをMYSQLデータベースに入れるWebアプリケーションがあります。これで、一般的なユーザー要求は、完了までにかなりの時間がかかるワークフローに従って処理する必要があります。これに対処するために、私は、MySQLのテーブルを聞いている非同期プロセッサを持っています。Javaでの非同期プロセスのトリガー
無限ループでMYSQLテーブルをポーリングすると、アプリケーションが配備されているボックスのCPU使用率が高くなるため、そのボックスが使用できなくなることがよくあります。
私は、MYSQLデータベースにアクティブなリクエストがないときはいつでも、 'some' timeのために非同期プロセスをスリープさせることがオプションであることを知っていますが、私は最後の手段としてそれを保持したいと思います。
単一の要求の処理に伴うワークフローの時間がかかるため、またバックエンドの進化を可能にするために処理をフロントエンドから切り離す必要があるため、このプロセスを同期させることはオプションではありません。
非同期プロセスをトリガするスマートな方法があるかどうかを知りたいので、CPU使用率が急上昇するのを避け、非同期プロセッサから最適な応答時間を得ることができます。
アドバイスをいただければ幸いです。
おかげ p1ng
この質問には、2つの別々のアプリケーションがあることが示唆されています。データベースに挿入されたばかりのデータを非同期に処理するマルチスレッドWebアプリケーションを使用できない理由はありますか? – Carth
現実的には、フロントエンドとバックエンドは異なるアプリケーションと見なすことができます。なぜなら、私はマルチスレッド化できない理由は、各リクエストの処理に伴うワークフローが、単数でスレッド化されていないリソースを利用しており、リクエストごとにそのリソースをブロックしたくないからです。また、非同期プロセッサーはまだ進化しており、デカップリングの必要性もあります。これは、将来、外部APIコール用にこれを開く予定であるためです。 – ping
CPU使用率が急上昇している理由を詳しく説明できますか?バックエンドをマルチスレッド化することを別にすれば、なぜ最初に問題があるのか理解せずに何ができるのか分かりません。 –