LinuCレベル4 システムアーキテクト ネットワークとストレージの選定 問16
ネットワークとストレージの選定/集中型および分散型ストレージ複数の拠点にレプリカを置く分散データストアを、拠点間のネットワーク分断が起こり得る前提で設計する。整合性と可用性のトレードオフに関する説明として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「ネットワークとストレージの選定」に対応。実際の試験問題ではありません)
- A結果整合性を採用すれば、書き込み直後にどのレプリカから読んでも最新の値が返るため、在庫の引き当てのような厳密な処理にもそのまま使える
- B分断中も両側で書き込みを受け付ける設計にすると、分断が解消した後に、食い違った更新を併合したり優先する側を決めたりする仕組みが必要になる
- C口座の残高のように食い違いを許せないデータでは、分断時に少数派の側で読み書きを止めてでも、整合性を優先する設計を選ぶ
- D読み込み時に複数のレプリカの値を比べ、古い値を返したレプリカを最新の値で修復するRead Repairは、レプリカ間の食い違いを徐々に解消する
正解:A
解説
ネットワーク分断が起こり得る分散システムでは、分断中に強い整合性と可用性を同時には満たせず、どちらを優先するかを選ぶ必要があります(CAP定理)。結果整合性は、更新が止まればいずれ全レプリカが同じ値に収束することだけを保証するもので、書き込み直後の読み込みで古い値が返ることがあります。そのため在庫の引き当てや残高のように食い違いを許せない処理には、多数派の合意を必要とする強い整合性の方式を選びます。可用性を優先して分断中も書き込みを受け付ける場合は、競合の解決やRead Repairのような食い違いの修復の仕組みを組み合わせます。
選択肢ごとの解説
- A正しい(誤っている記述)。結果整合性では書き込み直後に古い値が読まれることがあるため、厳密な引き当てにそのまま使うと二重の引き当てなどが起こり得ます。
- B誤り(正しい記述)。両側で受け付けた更新は分断の解消後に衝突し得るため、併合や勝者の決定などの競合解決が必要です。
- C誤り(正しい記述)。整合性を優先する設計では、過半数に届かない側の処理を止めて、食い違った更新が生まれるのを防ぎます。
- D誤り(正しい記述)。Read Repairは読み込みの機会を使って古いレプリカを修復し、結果整合性のもとで収束を早める手法です。