POINT — 光速は「設計の第一制約」
世界規模の設計は、機能ではなく地理とRTTの表から始まる。強い一貫性を求めるほど大陸間往復の回数が増え、遅延は倍々に効く。だから最前線のシステムは「どのデータをどの地域に置き、どこまでの一貫性で我慢するか」をデータごとに選ぶ。6章の一貫性モデル、8章のCAPの選択が、ここで地球サイズの現実になる。
2. 合意なしで収束する — CRDT(G-Counter)
大陸間で毎回合意(9章のRaftのような多数決)を取れば一貫性は保てますが、書き込みのたびに約100msを支払うことになります。逆転の発想が CRDT(Conflict-free Replicated Data Type)。「マージ操作が可換・結合的・冪等」になるようデータ構造そのものを設計し、各ノードがローカルで即座に更新→あとで交換すれば必ず同じ状態に収束することを数学的に保証します。
最小の例が G-Counter(増加専用カウンタ)。各ノードは「自分の分」だけを増やし、値は全ノード分の和。マージは成分ごとの max なので、どの順で何回混ぜても結果は同じです。
G-Counter — 並行に増やしても、混ぜれば必ず同じ値になる
同期せずに両ノードで +1 を重ねると値は一時的にズレますが、「同期」で互いの状態を交換し成分ごとの max を取ると、どちらも必ず同じ合計値になります。自動デモをONにするとランダムな更新と同期を繰り返します。
value = Σi ci / merge(x, y)i = max(xi, yi)
ノード i は自分の成分 ci だけを増やす。max は可換・結合的・冪等 → 交換の順序や重複によらず同じ状態へ収束する
POINT — 強い結果整合性(Strong Eventual Consistency)
CRDTの保証は「同じ更新の集合を受け取った複製は、受け取った順序や回数によらず同じ状態になる」こと。6章の結果整合性が「いつかは揃う(揃い方は実装次第)」だったのに対し、CRDTは揃うことが構造から証明されている。合意も調整も待たずにローカル更新できるのが最大の武器。