Learn VisualLearn API

1秒、2秒、4秒と間隔を広げながら、安全なメソッドだけ再試行する

5xxのステータスやタイムアウトで失敗したリクエストは、もう一度送れば成功するかもしれません。原因が、リクエスト自体の問題ではなく、サーバーやネットワークの一時的な不調かもしれないからです。

指数バックオフは、再試行の間隔を、1秒、2秒、4秒と、倍にして広げていく方法です。すぐに再試行すると、失敗の原因になった負荷に、さらに負荷を重ねてしまいます。そのため、クライアントは、時間を置いてから再試行します。

再試行してよいかどうかは、そのメソッドの冪等性で決まります。GET・PUT・DELETEは、繰り返しても結果が変わらないので、再試行できます。POSTは、冪等性キーがないと、この方法で再試行できません。クライアントが単純に再試行すると、サーバーが2つ目のリソースを作ってしまう危険があるからです。

この課の目標

指数バックオフがどう再試行の間隔を広げるかを説明できる。冪等性キー無しで安全に再試行できるHTTPメソッドはどれか説明できる。

GETリクエストがタイムアウトした。特別な仕組みなしに再試行するのは安全?