1秒、2秒、4秒と間隔を広げながら、安全なメソッドだけ再試行する
5xxのステータスやタイムアウトで失敗したリクエストは、もう一度送れば成功するかもしれません。原因が、リクエスト自体の問題ではなく、サーバーやネットワークの一時的な不調かもしれないからです。
指数バックオフは、再試行の間隔を、1秒、2秒、4秒と、倍にして広げていく方法です。すぐに再試行すると、失敗の原因になった負荷に、さらに負荷を重ねてしまいます。そのため、クライアントは、時間を置いてから再試行します。
再試行してよいかどうかは、そのメソッドの冪等性で決まります。GET・PUT・DELETEは、繰り返しても結果が変わらないので、再試行できます。POSTは、冪等性キーがないと、この方法で再試行できません。クライアントが単純に再試行すると、サーバーが2つ目のリソースを作ってしまう危険があるからです。
この課の目標
指数バックオフがどう再試行の間隔を広げるかを説明できる。冪等性キー無しで安全に再試行できるHTTPメソッドはどれか説明できる。
GETリクエストがタイムアウトした。特別な仕組みなしに再試行するのは安全?