分布式系统设计核心原则
分布式系统由多个独立计算机组成,对外表现为一个统一的整体。
CAP 定理
分布式系统无法同时满足以下三个特性:
- Consistency(一致性):所有节点看到相同的数据
- Availability(可用性):每个请求都能得到响应
- Partition Tolerance(分区容错性):网络分区时系统仍能运行
实际系统中通常选择 CP 或 AP。
常见设计模式
负载均衡
Client -> Load Balancer -> [Server1, Server2, Server3]
数据分片
def get_shard(key, num_shards):
return hash(key) % num_shards
# 用户数据按 user_id 分片
shard_id = get_shard(user_id, 10)
最终一致性
class EventualConsistentStore:
def __init__(self):
self.local_cache = {}
self.version_vector = {}
def read(self, key):
if key in self.local_cache:
return self.local_cache[key]
return self.fetch_from_primary(key)
def write(self, key, value):
self.queue_write(key, value)
self.local_cache[key] = value # 乐观更新
故障处理
- 超时重试:设置合理的超时时间和重试策略
- 熔断器:防止级联故障
- 降级策略:核心功能优先保证
分布式系统设计需要权衡各种因素,没有银弹解决方案。
