2.6. 質問と回答
- データベース同期レプリケーションを使用するのはなぜですか?
- データベースを同期的にレプリケートすると、サイトに障害が発生しても、一方のサイトに書き込まれたデータをもう一方のサイトで使用でき、データを失うことはありません。また、どのサイトにデータが提供されるかにかかわらず、次のリクエストで古いデータが返されることもありません。
- Data Grid 同期レプリケーションを使用するのはなぜですか?
- Data Grid を同期的にレプリケートすると、サイト障害が発生しても、一方のサイトでキャッシュされたデータをもう一方のサイトで使用できるため、データを失うことはありません。また、どのサイトにデータが提供されるかにかかわらず、次のリクエストで古いデータが返されることもありません。
- サイト間に低遅延ネットワークが必要なのはなぜですか?
- 同期レプリケーションでは、もう一方のサイトでデータが受信されるまで、呼び出し元へのレスポンスを延期します。データベース同期レプリケーションと Data Grid 同期レプリケーションでは、データの更新時に各リクエストでサイト間のやり取りが複数回発生し、遅延が増大する可能性があるため、低遅延が必要です。
- 同期クラスターは非同期クラスターよりも安定性に劣りますか?
非同期セットアップでは、サイト間のネットワーク障害が正常に処理されます。一方、同期セットアップでは、非同期セットアップなら別のサイトの Data Grid またはデータベースへの書き込みが延期されるような状況でも、リクエストが遅延し、呼び出し元に対してエラーが出力されます。ただし、2 つのサイトが完全に最新の状態になることはないため、このセットアップでは障害発生時にデータが失われる可能性があります。データ損失には次のものが含まれます。
- 非同期データベースを使用した場合、データベースの変更が障害発生時にもう一方のサイトにレプリケートされないため、変更が失われ、ユーザーが古いパスワードでログインできます。
- Data Grid 非同期レプリケーションを使用した場合、無効化されたキャッシュは障害発生時にもう一方のサイトに伝播されないため、無効なキャッシュが原因でユーザーが古いパスワードでログインできます。
したがって、高可用性と整合性の間にはトレードオフが存在します。このトピックの焦点は、Red Hat build of Keycloak の可用性よりも整合性を優先することです。