レート制限は、リソース利用を制御し、サービス品質を維持するための重要なメカニズムです。Goは、ゴルーチン、チャネル、およびタイマーを使用してレート制限をエレガントにサポートします。 |
|
![]() ![]()
|
|
|
|
|
|
最初に、基本的なレート制限を見ていきます。着信リクエストの処理を制限したいとします。これらのリクエストは、同名のチャネルから処理します。 |
|
この |
|
各リクエストを処理する前に |
|
レート制限スキームで、全体的なレート制限を維持しながら、短時間のバーストリクエストを許可できます。リミッターチャネルをバッファリングするとこれが可能です。この |
|
許可されたバーストを表すようにチャネルをいっぱいまで満たします。 |
|
200ミリ秒ごとに、3という制限まで、 |
|
さらに5つの着信リクエストをシミュレートします。これらの最初の3つは、 |
|
プログラムを実行すると、最初のバッチのリクエストは目的どおり約200ミリ秒ごとに1回処理されます。 |
|
2番目のバッチのリクエストでは、バースト可能なレート制限により最初の3つをすぐに処理してから、残りの2つをそれぞれ約200ミリ秒遅らせて処理します。 |
|
次の例: アトミックカウンター.