CAP
CAP 定理は、Consistency, Availability, Partition-tolerance のどれか2つしか両立できないよ、という定理
証明概要
ノードが2つ (ノードA, ノードB) ある
C,A,P 全部成り立つとする (背理法)
ノード間が分断する
ノードAに write リクエストを送る
ノードBに read リクエストを送る
分断しているのでAはBに情報を伝えられない => 一貫性が成り立たない => 矛盾
じゃあ分断したら B は利用できないようにすれば一貫性は成り立つ => B 死んでるので可用性が成り立たない => 矛盾
じゃあ分断しないと考える => 分断耐性ない => 矛盾
とはいえ 『CAP Twelve Years Later: How the "Rules" Have Changed』 で語られているように現実は、
分断はめったに起きない
分断起きなければ C A は両立可能
全体ではなく小さい単位で C と A どっちを優先するかが変わる
sluicegate も、まあどっちだと言っていいのかよくわからん
別に他のノードが落ちていてもいいので A かと思いきや、consul とのやり取りとかトピック内のポリシは C じゃなければいけなかったり
C もレベルがある
Crash-Recover とかであれば、ノードが復帰したあとになったら一貫性保てるかも
日本語: http://www.infoq.com/jp/articles/cap-twelve-years-later-how-the-rules-have-changed