CAP定理
分散システムにおける情報複製に関する定理
分散処理ではPは捨てられないので、CかAかどちらかを選択するかの問題になる
ノード間のデータ複製において次の3つを同時に保証することはできない
一貫性(Consistency)→常に最新のデータが読める
ノード間でデータのズレが起きない
可用性(Availability)→単一障害点がない、いつでも利用できる
特定ノードで障害が起きても機能が失われない
分断耐性(Partion-torerance)→複数サーバに複製があるのでネットワークが分断されても大丈夫、スケールアウト
通信障害が起きてもシステムとして正しく動作し続ける
https://gyazo.com/859cb25456ac4a11611101f5c17e3814
マルチノードのRDSの場合
あるノードでデータが更新された場合には他のノードもブロックしてトランザクションを完了する必要がある。
その場合、ブロックしている間は可用性が失われる事になる
単一ノードのRDSではCAを満たしているがマルチノードになるとAを満たせなくなる。
分断が起きるとSpannerはCを選択し、Aを犠牲にします。つまり技術的に見ると、SpannerはCPシステムなのです。
hiroki.iconつまり滅多に落ちないから実質的にAの可用性もあるよっていうこと?そんなのってありww
分散システムは難しいので冗長化しているから大丈夫とか、ネットワーク分断されても大丈夫とかいうのは疑ってかかってみる
CA
RDBMS
CP
単一障害点がある分散処理システム
Redis
AP
緩やかにデータ同期していくもの
DNS
IAM
S3(以前は)