【リトライバジェット】
リトライバジェット とは?
最終更新:
💡 再試行にも上限を設け、負荷の増幅を抑える
再試行による追加の負荷を抑えるために、再試行の回数・割合・同時実行数などに上限を設ける考え方。管理する範囲や計測方法、上限値は実装と運用によって異なる。
📌 このページのポイント
- 再試行が増えると、障害中のサービスへ追加の負荷がかかる
- リクエストごとの回数制限に加え、一定範囲の再試行量を抑える
- 10%は設定例で、全サービス共通の基準ではない
- バックオフ・期限・再試行しないエラーの判定も合わせて設計する
失敗したら何度もやり直せばいいの?
再試行で成功することもあるけれど、障害中のサービスへ追加の負荷をかけるよ。再試行が重なって復旧を妨げる場合もある。そこで一定範囲の再試行量に上限を設けるのが、リトライバジェットの考え方なんだ。
1回の要求で3回まで、とは違うの?
それは要求ごとの回数制限だね。多くの要求が同時に失敗すると、それぞれが少ない回数でも再試行全体は多くなる。予算では、クライアントやプロセスなど、管理する範囲全体の再試行量も抑えるんだ。
上限は必ず10%なの?
バックオフやサーキットブレーカーとは違うの?
バックオフは次の再試行までの待ち時間を増やす方法で、予算は再試行の量を抑えるよ。Envoyではサーキットブレーカーの設定にretry_budgetが含まれるなど、仕組みは重なる場合もある。名称だけで完全に別の機能と決めず、実装を確認しよう。
エラーバジェットと同じ予算なの?
上限以内なら、どんな失敗も再試行していい?
入力の不備など、繰り返しても直らないエラーは再試行しない判断が必要だよ。複数の層がそれぞれ再試行すると、取得先への要求が何倍にも増える場合もある。回数と予算だけでなく、待ち時間・処理期限・どの層が再試行するかも合わせて設計しよう。
まとめ:ざっくりこれだけ覚えればOK!
「リトライバジェット」って出てきたら「再試行の追加負荷を抑えるための上限」と思えばだいたいOK!
📖 おまけ:英語の意味
「Retry Budget」 = リトライ予算
💬 Retryは再試行、Budgetは予算という意味。再試行で負荷を増やしすぎないように、管理する範囲と量の上限を決める考え方だよ。