LoginSignup
1
0

更新系APIの状態不整合の解決策 リトライ 文書番号A02

Last updated at Posted at 2024-03-25

はじめに このページを読んでわかること

更新系APIのタイムアウトで発生する課題でサーバ間の状態不整合の解決策として、サーバAから更新リクエストを再送する(リトライ)する設計において考慮すべきことをメモしておく。

やってはいけない設計

念のためやってはいけない設計をメモしておく。

更新リクエストに一意なパラメータがない

サーバAは、更新リクエスト1回目のレスポンスが受信できなかったためリトライとして、更新リクエストを送信する。しかしサーバBでは、2回の更新リクエストを別のトランザクションとして処理するためデータが2件発生し、サーバ間において件数不整合(サーバA1件、サーバB2件)となる。

更新リクエストの必須パラメータ(RequestID)

サーバAが設定する一意なパラメータが必須となる(ここではRequestIDと定義する)。
サーバBは同一のRequestIDを受信した場合、あらたなデータを生成しない。

複数のタイムアウト

複数回リトライしてもレスポンスが受領できない場合、リトライだけでは状態不整合が解決しないため、リトライ以外の方法で解決する必要がある。
リトライの上限回数に達してもリトライが成功しないことをリトライアウトという。

結論

リトライにより状態不整合をできるケースもあるが、以下が課題として残る。

  • 更新リクエストのリトライアウト
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0