Rate Limiterコネクタ
Rate Limiterコネクタは、トークンバケットアルゴリズムを使用してパイプラインを通過するペイロードのレートを制限します。2つの戦略をサポートします:余分なペイロードをドロップする、または後で配信するためにキューイングする。
コネクタタイプ: MeddleRateLimiter
ドロップ戦略
Section titled “ドロップ戦略”余分なペイロードは即座に破棄され、エラーチャネルで報告されます。
{ "type": "MeddleRateLimiter", "config": { "maxRate": 10, "burstSize": 20, "strategy": "drop" }}最大10イベント/秒を許可し、最大20のバーストを許可します。バケットが空の場合、受信ペイロードはドロップされます。
余分なペイロードは境界付きキューにバッファされ、設定されたレートでドレインされます。
{ "type": "MeddleRateLimiter", "config": { "maxRate": 5, "burstSize": 5, "strategy": "queue", "queueSize": 200 }}キューが満杯の場合、追加のペイロードはオーバーフローとしてエラーチャネルで報告されます。
設定パラメータ
Section titled “設定パラメータ”- maxRate(必須、> 0):イベント/秒の持続的スループット(float)
- burstSize(必須、> 0):トークンバケットの最大バースト容量
- strategy(必須):
dropまたはqueue - queueSize:
queue戦略のキュー容量(デフォルト100)
トークンバケットセマンティクス
Section titled “トークンバケットセマンティクス”- バケットは最大
burstSizeトークンを保持し、maxRateトークン/秒で補充されます - 各ペイロードは1つのトークンを消費します
dropでは、トークンが利用可能な場合はペイロードが即座に転送され、そうでない場合は破棄されますqueueでは、ペイロードがキューに入れられ、次のトークンが付与されるとすぐに転送されます。キューが満杯の時にオーバーフローが発生します。
ユースケース
Section titled “ユースケース”- 厳格なレート制限を持つダウンストリームAPI(例:サードパーティSaaSエンドポイント)の保護
- データベースに書き込む前のバースト入力の平滑化
- アラートストームを避けるための通知頻度の制限
- プロバイダのクォータを超えないようにする送信Webhookのスロットル
例: バースト性のあるMQTTストリームの平滑化
Section titled “例: バースト性のあるMQTTストリームの平滑化”{ "type": "MeddleRateLimiter", "config": { "maxRate": 50, "burstSize": 100, "strategy": "queue", "queueSize": 1000 }}100イベントのバーストヘッドルームを持つ50イベント/秒を維持します。ピークトラフィック中はオーバーフロー前に最大1000イベントがキューに入る可能性があります。
例: 過剰なアラートのドロップ
Section titled “例: 過剰なアラートのドロップ”{ "type": "MeddleRateLimiter", "config": { "maxRate": 1, "burstSize": 1, "strategy": "drop" }}最大1ペイロード/秒のみが転送されます。それ以上のものは静かにドロップされます(エラーがログに記録されます)。
ベストプラクティス
Section titled “ベストプラクティス”maxRateを最も遅いダウンストリームコンシューマの文書化された制限に合わせ、ヘッドルームを確保- 鮮度が完全性よりも重要な場合(例:ライブダッシュボード)は
dropを使用 - ペイロードを失えない場合は
queueを使用。予想されるバースト時間を吸収できるサイズのキューを使用 - エラーチャネルを監視 — ドロップ/オーバーフローしたペイロードはそこで報告されます
- 最初に重複を削除し、その後ユニークなイベントをレート制限するためにOn Changeと組み合わせる
関連コネクタ
Section titled “関連コネクタ”- On Change - 変更されていないペイロードをドロップ
- Aggregation - ウィンドウベースの要約
- Cron - 時間駆動の発行