在系统架构设计中,从集中式到分布式的变迁是应对业务规模增长的重要方向。本文将梳理两种架构的核心特点、分布式环境的挑战,以及事务一致性理论的演进,为学习分布式技术提供清晰脉络。
一、从集中式到分布式:架构模式的转变
1.1 集中式系统:简单高效的 “单点核心”
集中式系统以中心节点为核心,由一台或多台主计算机组成,数据集中存储于中心节点,所有业务单元也集中部署于此 —— 终端仅负责数据录入与输出,数据存储、控制处理全由主机完成。
其最大优势是部署结构简单:基于高性能大型主机搭建,无需考虑多节点部署与分布式协作问题,适合业务规模较小、需求稳定的场景。
1.2 分布式系统:分散协作的 “集群模式”
分布式系统的定义是:硬件或软件组件分布在不同网络计算机上,仅通过消息传递实现通信与协调的系统。标准分布式系统(无特定业务约束)具备以下 5 个核心特征:
- 分布性:多台计算机在空间上随机分布,且分布情况可动态变动;
- 对等性:无主从节点之分,所有节点地位平等。为保障高可用,会通过 “副本” 实现冗余 —— 数据副本(多节点存储同一份数据,避免数据丢失)、服务副本(多节点提供相同服务,分担请求压力);
- 并发性:多节点可能并发操作共享资源(如数据库、分布式存储),如何高效协调并发操作是分布式架构的核心挑战;
- 缺乏全局时钟:节点通过消息通信,难以定义两个事件的先后顺序;
- 故障易发性:组成系统的任意计算机都可能出现故障。
1.3 分布式环境的核心问题
相比集中式,分布式系统因节点分散、依赖网络,会面临更多不可控问题:
- 通信异常:节点间依赖网络通信,存在网络不可用风险;且通信延时远高于单机操作,消息丢失、延迟成为常态;
- 网络分区(“脑裂”) :网络异常导致部分节点无法正常通信,形成独立小集群。小集群可能擅自处理需全系统协同的事务(如数据更新),严重影响数据一致性;
- 请求三态:每次请求与响应存在 “成功、失败、超时” 三种状态。超时分两类:请求未送达接收方(消息丢失)、请求已处理但响应丢失;
- 节点故障:服务器节点可能出现宕机或 “僵死”,导致服务不可用。
二、事务一致性:从 ACID 到 CAP/BASE 的权衡
了解完架构特点与分布式挑战后,我们聚焦 “事务处理”—— 这是保障数据可靠性的关键,也是分布式与集中式差异显著的领域。
2.1 ACID:单机事务的 “黄金准则”
事务(狭义指数据库事务)是:对数据进行访问与更新的操作序列,是程序执行的逻辑单元。它的核心作用有二:隔离并发应用的操作、保障故障后数据一致性。
事务的 4 个核心特征(ACID)如下:
| 特征 | 定义 |
|---|---|
| 原子性(Atomicity) | 操作序列 “要么全成功,要么全失败”,无中间状态 |
| 一致性(Consistency) | 事务执行前后,数据库始终处于一致状态(如转账后总金额不变) |
| 隔离性(Isolation) | 并发事务相互不干扰。SQL 规范定义 4 个隔离级别,不同级别对 “脏读、不可重复读、幻读” 的限制不同(见下表) |
| 持久性(Durability) | 事务提交后,数据变更永久生效,不受故障影响 |
SQL 事务隔离级别与问题对应关系:
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交(Read Uncommitted) | 允许 | 允许 | 允许 |
| 读已提交(Read Committed) | 不允许 | 允许 | 允许 |
| 可重复读(Repeatable Read) | 不允许 | 不允许 | 允许 |
| 串行化(Serializable) | 不允许 | 不允许 | 不允许 |
2.2 分布式事务:跨节点的 “一致性难题”
单机环境中,ACID 易实现;但分布式环境下,数据分散在不同节点,事务需跨数据源 / 业务系统(如跨行转账:本地银行取款 + 目标银行存款),这类事务称为 “分布式事务”,其中的单个操作(取款、存款)称为 “子事务”。
由于子事务分布式执行,要保障全流程 ACID 特性,需解决跨节点通信、故障恢复等问题,难度远高于单机事务。
2.3 CAP 与 BASE:分布式事务的 “权衡理论”
(1)CAP 理论:三选二的 “不可能三角”
CAP 理论指出:分布式系统无法同时满足一致性(C)、可用性(A)、分区容错性(P) ,最多满足两项。三者定义如下:
- 一致性(C):数据更新后,所有用户能实时读取到最新值(强一致性);
- 可用性(A):服务始终可用,请求在指定时间内返回结果;
- 分区容错性(P):网络分区时,系统仍能提供满足 C 或 A 的服务(除非全网络故障)。
在分布式场景中,“分区容错性(P)” 是必选项(节点分散部署,网络故障不可避免),因此实际需在 C 与 A 间权衡,常见策略如下:
| 放弃项 | 说明 |
|---|---|
| 放弃 P | 所有数据存于单个节点,避免网络分区,但失去可扩展性(非分布式架构) |
| 放弃 A | 网络分区时,受影响服务暂停,等待故障恢复(保障数据一致,但牺牲可用性) |
| 放弃 C | 放弃强一致性,保留 “最终一致性”:数据不会实时一致,但经过一段时间同步后,最终会达到一致状态(平衡可用性与分区容错性) |
(2)BASE 理论:最终一致性的 “落地指南”
BASE 是对 CAP 中 “放弃强一致性” 的补充,核心思想是:通过 “基本可用、弱状态、最终一致性”,实现分布式系统的可用性与一致性平衡。三者定义如下:
- 基本可用:故障时允许部分可用性损失(非完全不可用),如:响应时间延长(1 秒→2 秒)、功能降级(电商高峰时部分用户跳转降级页面);
- 弱状态(软状态) :允许数据存在中间状态(如同步延时),且不影响整体可用性;
- 最终一致性:所有数据副本经过一段时间同步后,最终达到一致状态(无需实时一致)。