分散アーキテクチャ

複数ノードで構成されるシステムの基礎

分散システムの構造

👥
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)を返す

分散システムの主な課題

部分障害

一部のノードだけが障害。検知と対応が複雑。

ネットワーク遅延

通信に時間がかかる。タイムアウト設計が重要。

時刻同期

グローバルな時間順序の確立が困難。

データ整合性

複数ノード間でのデータ同期と競合解決。

詳細トピック