Amazon RDSとread replicasを使用してデータベースをスケールアップすることを検討しています。非同期データベースのレプリケーションを正しく処理する方法は?
私たちのWebアプリケーションのコントローラの中には、読み書き可能なものもあり、読み込み専用のものもあります。私は既に、どのコントローラが読み取り専用であるかを識別する自動化された方法を持っています。そのため、私の最初のアプローチは、読み取り/書き込みコントローラを要求するときにマスタへの接続を開き、読み取り専用コントローラを要求するとき、コントローラのみ。
理論的には、それは良いと思います。しかし、その後、私はレプリケーションラグコンセプトを開きました。これは基本的に、レプリカがマスターの数秒後になることを示しています。トランザクションがコミットされ、アカウントが作成されるので、マスター
/create-account
に
- ブラウザの投稿を、そしてブラウザが取得します。
のは、次のユースケースを想像してみましょう
/member-area
- ブラウザは、読み取り専用の
/member-area
を開き、レプリカに接続します。レプリカがマスターのわずかに後ろにある場合でも、ユーザーアカウントはまだレプリカ上に存在しない可能性があります。その結果、エラーが発生します。
これらの潜在的な問題を回避するには、アプリケーションで読み取りレプリカをどのように実際に使用しますか?