分散アーキテクチャ
複数ノードで構成されるシステムの基礎
分散システムの構造
👥
Clients
↓
Load Balancer
↓
📦
Node 1
📦
Node 2
📦
Node 3
↓
Primary
Write
Replica
Read
Replica
Read
CAP定理
分散システムは以下の3つの特性のうち、同時に2つまでしか保証できない
C
Consistency
一貫性
A
Availability
可用性
P
Partition
分断耐性
CP(一貫性 + 分断耐性)
分断時に可用性を犠牲にして一貫性を保証
例: ZooKeeper, etcd, HBase
AP(可用性 + 分断耐性)
分断時も応答するが、データが古い可能性
例: Cassandra, DynamoDB
一貫性モデル
強い一貫性(Strong Consistency)
Write X=5
Read X
= 5 ✓
結果整合性(Eventual Consistency)
Write X=5
Read X
= 3 (古い)
Read X
= 5 ✓
ネットワーク分断(Partition)
Node A
Data: X=5
✕
Network
Partition
Node B
Data: X=3
CP選択時:
Node Bへのリクエストを拒否(503)
AP選択時:
古い値(X=3)を返す
分散システムの主な課題
部分障害
一部のノードだけが障害。検知と対応が複雑。
ネットワーク遅延
通信に時間がかかる。タイムアウト設計が重要。
時刻同期
グローバルな時間順序の確立が困難。
データ整合性
複数ノード間でのデータ同期と競合解決。