コンテンツにスキップ

Rate Limiterコネクタ

Rate Limiterコネクタは、トークンバケットアルゴリズムを使用してパイプラインを通過するペイロードのレートを制限します。2つの戦略をサポートします:余分なペイロードをドロップする、または後で配信するためにキューイングする。

コネクタタイプ: MeddleRateLimiter

余分なペイロードは即座に破棄され、エラーチャネルで報告されます。

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 10,
"burstSize": 20,
"strategy": "drop"
}
}

最大10イベント/秒を許可し、最大20のバーストを許可します。バケットが空の場合、受信ペイロードはドロップされます。

余分なペイロードは境界付きキューにバッファされ、設定されたレートでドレインされます。

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 5,
"burstSize": 5,
"strategy": "queue",
"queueSize": 200
}
}

キューが満杯の場合、追加のペイロードはオーバーフローとしてエラーチャネルで報告されます。

  • maxRate(必須、> 0):イベント/秒の持続的スループット(float)
  • burstSize(必須、> 0):トークンバケットの最大バースト容量
  • strategy(必須):dropまたはqueue
  • queueSize: queue戦略のキュー容量(デフォルト 100

トークンバケットセマンティクス

Section titled “トークンバケットセマンティクス”
  • バケットは最大burstSizeトークンを保持し、maxRateトークン/秒で補充されます
  • 各ペイロードは1つのトークンを消費します
  • dropでは、トークンが利用可能な場合はペイロードが即座に転送され、そうでない場合は破棄されます
  • queueでは、ペイロードがキューに入れられ、次のトークンが付与されるとすぐに転送されます。キューが満杯の時にオーバーフローが発生します。
  1. 厳格なレート制限を持つダウンストリームAPI(例:サードパーティSaaSエンドポイント)の保護
  2. データベースに書き込む前のバースト入力の平滑化
  3. アラートストームを避けるための通知頻度の制限
  4. プロバイダのクォータを超えないようにする送信Webhookのスロットル

例: バースト性のあるMQTTストリームの平滑化

Section titled “例: バースト性のあるMQTTストリームの平滑化”
{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 50,
"burstSize": 100,
"strategy": "queue",
"queueSize": 1000
}
}

100イベントのバーストヘッドルームを持つ50イベント/秒を維持します。ピークトラフィック中はオーバーフロー前に最大1000イベントがキューに入る可能性があります。

{
"type": "MeddleRateLimiter",
"config": {
"maxRate": 1,
"burstSize": 1,
"strategy": "drop"
}
}

最大1ペイロード/秒のみが転送されます。それ以上のものは静かにドロップされます(エラーがログに記録されます)。

  • maxRateを最も遅いダウンストリームコンシューマの文書化された制限に合わせ、ヘッドルームを確保
  • 鮮度が完全性よりも重要な場合(例:ライブダッシュボード)はdropを使用
  • ペイロードを失えない場合はqueueを使用。予想されるバースト時間を吸収できるサイズのキューを使用
  • エラーチャネルを監視 — ドロップ/オーバーフローしたペイロードはそこで報告されます
  • 最初に重複を削除し、その後ユニークなイベントをレート制限するためにOn Changeと組み合わせる
  • On Change - 変更されていないペイロードをドロップ
  • Aggregation - ウィンドウベースの要約
  • Cron - 時間駆動の発行