Administrator
发布于 2025-11-03 / 5 阅读
0
0

浅谈分布式系统

分布式系统的定义

分布式系统是由多个通过网络互联的独立计算机(节点)组成的集合,这些节点通过协调和通信共同完成一项或一组任,在用户看来就像一个统一的系统。

分布式系统模型

  • 同步模型:假设网络延迟、进程执行时间都有一个已知的上限。这简化了算法设计,但现实系统很少能够满足

  • 异步模型:不对时间做任何假设。消息延迟可能无限长,进程执行可能无限慢。这是最苛刻的模型,在此模型下能实现的算法最具鲁棒性

  • 部分同步模型:现实中最常见的模型。系统大部分时间是同步的,但是偶尔会变得异步。大多数实际算法(例如:Paxos,Raft)都基于此模型

核心理论与定理

  1. CAP定理

分布式系统领域最著名的,由Eric Brewer提出。

  • C-一致性:所有节点在同一时刻看到的数据都是相同的。

  • A-可用性:每个请求都能收到一个(非错误)响应,但不保证数据是最新的。

  • P-分区容错性:系统在遭遇网络分区时仍能继续运行。

CAP定理指出:存在网络分区的情况下,一个系统无法同时保证一致性和可用性。这意味着你必须在C和A之间做出权衡:

  • CP系统:当发生网络分区时,为了保证数据一致性,系统会拒绝部分请求,从而牺牲可用性。

  • AP系统:当发生网络分区时,为了保证可用性,系统会返回可能过期的数据,从而系统一致性。

  • CA系统:通常指单点数据库或通过特殊硬件/网络避免分区的系统,在分布式场景中很难实现。

综上:“三选二”是CAP的简化。在现实中,P总是存在的,所以你的选择其实是在P发生时的策略(保C还是保A)。

  1. BASE理论

BASE是对CAP定理中AP方案的实践补充,它描述了大多数现代互联网系统所追求的状态。

BA-基本可用:系统出现故障时,允许损失部分功能或相应时间变长,但核心功能仍然可用。

S-软状态:允许系统中的数据存在中间状态,并且这个状态不会立即可用于其他节点,即允许数据存在短暂的不一致。

E-最终一致性:经过一段时间(通常很短)的无更新操作后,系统最终所有副本的数据会达成一致。

BASE与ACID形成鲜明对比,是NoSQL运行的重要理论基础。

  1. FLP不可能原理

这是一个更深奥但根本性的结论。

  • 结论:在异步模型的分布式系统中,即使只有一个进程可能崩溃,也没有任何确定性算法能够总是达成共识。

  • 含义:这是一个“不可能”的结果。它告诉我们,在最坏情况下,我们无法设计出一个总能达成共识的完美算法。

  • 现实意义:实际的共识算法(如:Paxos,Raft)通过增加一些假设(如领导者选举、随机超时)来绕开FLP,从而在现实中“几乎总是”能达成共识。

  1. 共识算法

这是解决分布式系统核心“协调”问题的关键技术。

  • Paxos

  • Raft

  • ZAB

关键技术与概念

  1. 复制:将数据拷贝到多个节点,以提高可用性和可靠性。分为主从复制、多主复制、无主复制

  2. 分区/分片:将大数据拆分成小块,分不到不同节点上,以解决单机存储瓶颈问题

  3. 一致性模型:

  • 强一致性:线性一致性、顺序一致性

  • 弱一致性:不保证立即可见

  • 最终一致性:弱一致性的特例,保证在没有新更新时最终一致。

  1. 容错与故障检测:如何发现节点故障并快速恢复

  2. 租约与锁:分布式环境中实现互斥访问的机制

  3. 分布式事务:如何保证跨多个节点的操作具有ACID特性。常用方案有2PC、3PC、TCC、Saga等。


评论