🌐 分布式系统

掌握分布式系统的核心理论与架构实践

CAP
定理
BASE
理论
Raft
共识算法
微服务
架构

🔴 考试重点

CAP定理、BASE理论、分布式一致性、微服务架构是考试的核心内容!

分布式系统概述

分布式系统定义

分布式系统是由多个独立的计算机组成,通过网络连接,协同工作以完成共同任务的系统。对用户而言,整个系统就像一台计算机一样。

核心特征

  • 分布性:组件分布在网络中的不同节点
  • 并发性:多个组件同时执行
  • 缺乏全局时钟:难以确定事件的全局顺序
  • 故障独立性:部分组件故障不影响整体

分布式系统挑战

网络分区

网络故障导致节点间无法通信

部分故障

部分组件故障,难以检测和处理

异步通信

消息传递延迟不确定

并发控制

多个节点同时访问共享资源

CAP定理

CAP定理核心内容

在分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得,最多只能同时满足其中两个。

一致性 (C)

所有节点在同一时间看到相同的数据

  • • 强一致性
  • • 弱一致性
  • • 最终一致性

可用性 (A)

系统在任何时候都能响应用户请求

  • • 服务可访问
  • • 响应时间合理
  • • 不出现系统错误

分区容错性 (P)

系统能够容忍网络分区故障

  • • 网络故障容忍
  • • 节点间通信中断
  • • 系统继续运行

CA系统

选择一致性和可用性,放弃分区容错性

典型系统

  • • 传统关系数据库
  • • 单机系统
  • • 集群数据库

CP系统

选择一致性和分区容错性,放弃可用性

典型系统

  • • MongoDB
  • • HBase
  • • Redis Cluster

AP系统

选择可用性和分区容错性,放弃一致性

典型系统

  • • Cassandra
  • • DynamoDB
  • • CouchDB

BASE理论

BASE理论核心

BASE理论是对CAP定理的延伸,提供了一种在分布式系统中实现高可用性的方法

基本可用 (BA)

Basically Available

  • • 系统基本可用
  • • 允许损失部分可用性
  • • 响应时间可能增加
  • • 功能可能降级

软状态 (S)

Soft State

  • • 允许系统中的数据存在中间状态
  • • 中间状态不影响系统可用性
  • • 允许不同节点数据副本同步存在延时

最终一致性 (E)

Eventually Consistent

  • • 系统中所有数据副本
  • • 在一段时间后
  • • 最终能够达到一致的状态

一致性模型

强一致性 (Strong Consistency)

特征

  • • 任何时刻,所有节点看到的数据都是一致的
  • • 写操作完成后,后续读操作必须能读到该写操作的结果
  • • 系统中的所有节点在同一时间具有同样的数据

实现方式

  • • 同步复制
  • • 分布式锁
  • • 两阶段提交
  • • Paxos算法
  • • Raft算法
  • • 共识算法

弱一致性 (Weak Consistency)

特征

  • • 系统不保证何时所有节点的数据一致
  • • 尽力而为的一致性保证
  • • 应用程序需要处理不一致的情况

应用场景

  • • 实时系统(如VoIP、在线游戏)
  • • 对一致性要求不高的应用
  • • 需要高性能的场景

最终一致性 (Eventual Consistency)

核心思想

系统保证在没有新的更新操作的情况下,经过一段时间后,所有节点的数据将最终达到一致状态。

变体

因果一致性:有因果关系的操作顺序一致
读己之所写:进程能读到自己的写操作
会话一致性:同一会话内保持一致性
单调读一致性:读操作单调递增

因果一致性 (Causal Consistency)

定义

如果操作A在逻辑上先于操作B(存在因果关系),那么在所有进程中,操作A都应该在操作B之前被观察到。

实现机制

  • • 向量时钟 (Vector Clock)
  • • Lamport时间戳
  • • 因果关系跟踪
  • • 依赖关系管理

共识算法

Raft算法

核心概念

Leader:处理所有客户端请求
Follower:被动接收Leader的日志
Candidate:竞选Leader的节点

算法步骤

  1. Leader选举
  2. 日志复制
  3. 安全性保证

Paxos算法

角色定义

Proposer:提出提案
Acceptor:接受提案
Learner:学习已选定的值

两阶段协议

阶段1:Prepare阶段

阶段2:Accept阶段