CAP の「可用性」(A) と「パーティション許容度」(P) を理解しようとしましたが、さまざまな記事の説明を理解するのが難しいと感じました。
A と P は一緒に使用できるような気がします (そうではないことはわかっていますが、それが理解できない理由です)。
簡単に説明すると、A と P とは何ですか。また、それらの違いは何ですか。
ベストアンサー1
一貫性とは、クラスター全体でデータが同じであることを意味します。そのため、どのノードからでも読み取りまたは書き込みを行って、同じデータを取得できます。
可用性とは、クラスター内のノードがダウンした場合でもクラスターにアクセスできることを意味します。
パーティション耐性とは、2 つのノード間に「パーティション」(通信の中断)が発生した場合でも(両方のノードが稼働しているが通信できない)、クラスターが機能し続けることを意味します。
可用性とパーティション耐性の両方を実現するには、一貫性をあきらめる必要があります。マスター マスター セットアップに X と Y という 2 つのノードがあるとします。ここで、X と Y 間のネットワーク通信が途切れているため、更新を同期できません。この時点で、次のいずれかを実行できます。
A) ノードが同期しなくなることを許可する(一貫性を放棄する)、または
B) クラスターが「ダウン」している(可用性を放棄している)と見なす
利用可能なすべての組み合わせは次のとおりです。
- CA - すべてのノードがオンラインである限り、データはすべてのノード間で一貫しており、どのノードからでも読み取り/書き込みが可能で、データが同じであることを確認できますが、ノード間でパーティションを作成すると、データは同期されなくなります (パーティションが解決されても再同期されません)。
- CP - データはすべてのノード間で一貫しており、ノードがダウンすると使用できなくなるため、パーティション耐性が維持されます (データの同期が解除されるのを防ぎます)。
- AP - ノードは相互に通信できない場合でもオンラインのままであり、パーティションが解決されるとデータを再同期しますが、すべてのノードが同じデータを持つことは保証されません (パーティション中またはパーティション後)
注目すべきはCAシステムは実質的に存在しない(一部のシステムではそう主張している場合でも)。