各スレッドがdbにデータを書き込むJavaでマルチスレッドアプリケーションを設計するためのアルゴリズムを探しています。1秒あたりにdbに書き込まれるレコードの数を制御したいと思います。
アプリケーションはRPS(records per second)パラメーターを取得し、それらの多くの負荷をほぼ生成します。
各スレッドがdbにデータを書き込むJavaでマルチスレッドアプリケーションを設計するためのアルゴリズムを探しています。1秒あたりにdbに書き込まれるレコードの数を制御したいと思います。
アプリケーションはRPS(records per second)パラメーターを取得し、それらの多くの負荷をほぼ生成します。
外部ライブラリを使用できる場合、guavaにはRateLimiterクラスがあり、おそらくあなたが求めていることを実行します。
レートリミッターは、一部の物理リソースまたは論理リソースにアクセスするレートを制限するためによく使用されます。これは、レートではなく同時アクセスの数を制限するセマフォとは対照的です。
許可オブジェクトの を作成し、BlockingQueue
追加の許可の RPS 数を 1 秒に 1 回キューに追加する追加のヘルパー スレッドを持つことができます。スレッドの書き込みはキューでブロックされ、許可をキューの先頭から正常にポップするまで書き込みを行いません。