Skip to content

分布式原理

分布式系统是多台计算机协同工作的系统,目标是提高性能、可用性、可扩展性。理解分布式系统的原理和挑战,是构建大规模系统的基础。

为什么需要分布式

单机系统的瓶颈:性能受限(单机 CPU、内存、磁盘有上限)、可用性差(单点故障)、可扩展性差(垂直扩展成本高)。

分布式系统的优势:性能提升(多台机器并行处理)、高可用性(部分节点故障不影响整体)、可扩展性(水平扩展成本低)。

分布式系统的代价:复杂性增加(网络通信、数据一致性、容错)、调试困难(分布式问题难以复现)、运维成本高(多台机器需要管理)。

分布式系统的挑战

网络问题:网络分区、网络延迟、丢包、乱序。网络分区是不可避免的,网络可能会延迟、丢包,甚至完全断开。

数据一致性:多副本的数据如何保持一致。强一致性的代价高,最终一致性需要应用层处理。

容错:节点可能崩溃、网络可能断开、消息可能丢失。系统需要能够容忍这些故障,继续提供服务。

时钟问题:分布式系统没有全局时钟,不同机器的时钟可能不同步。这会导致事件顺序难以确定。

分布式系统的核心理论

CAP 定理:分布式系统无法同时满足一致性、可用性、分区容错性,最多只能同时满足两个。

BASE 理论:基本可用、软状态、最终一致性。是对 AP 系统的指导,接受短暂不一致以换取高可用。

FLP 不可能原理:在异步网络中,即使只有一个节点故障,也不存在能够保证一致性和终止性的共识算法。

分布式系统的基础组件

共识算法:Paxos、Raft、ZAB。用于在多个节点间达成一致,是分布式协调的基础。

分布式锁:用于在分布式环境中实现互斥访问。

分布式事务:用于保证多个服务的原子性操作。

服务注册与发现:服务如何注册自己的地址,客户端如何发现服务地址。

配置中心:如何动态管理配置,所有实例能够及时获取最新配置。

分布式系统的设计模式

Leader 选举:从多个节点中选举一个 Leader,由 Leader 处理所有写请求。Raft、ZAB 都是 Leader 选举的实现。

心跳机制:节点定期发送心跳,表明自己存活。如果长时间没有收到心跳,则认为节点故障。

租约机制:授予一个节点在一定时间内的权限,租约到期后权限失效。租约可以用于实现锁和 Leader 选举。

幂等性:同一个操作执行多次,结果与执行一次相同。幂等性可以处理重复请求和重试。

限流与降级:当系统负载过高时,限流可以拒绝部分请求,降级可以关闭非核心功能。

分布式系统是复杂的,但也是构建大规模系统的基础。理解分布式系统的原理、挑战和设计模式,有助于设计合适的分布式架构。