news 2026/8/10 2:06:43

【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡

大家好,我是Tony Bai。

欢迎来到《分布式系统:原理、哲学与实战》微专栏的第三讲。

在上一讲中,我们为所处的现实世界绘制了一张精准的地图。我们知道了节点会崩溃,通信会延迟,时间会撒谎。面对这样一个充满不确定性的环境,一个孤立的节点就像一叶扁舟,随时可能在风暴中倾覆。

那么,为了让我们的系统能抵御风暴,活下去,我们能使用的第一件,也是最符合直觉的武器是什么?

答案是:不要把所有鸡蛋放在一个篮子里。

这句古老的谚语,在分布式系统中被翻译成一个核心的技术术语:复制 (Replication)。

复制的核心思想极其简单:将相同的数据,在多个独立的节点上,保存多个副本。它的动机主要有两个:

  1. 高可用性 (High Availability):当持有数据的某个节点宕机时,其他持有副本的节点可以顶上,服务不中断。这是我们对抗节点故障的主要手段。

  2. 性能扩展 (Performance Scaling):尤其是读性能。多个副本可以同时处理读请求,从而分摊负载,降低延迟。

今天,我们将深入探讨实现复制的最经典、最广泛的架构模式——主从复制 (Leader-Follower Replication)。但我们不会孤立地看待它。我们将引入一把衡量所有复制系统正确性的“黄金标尺”——一致性模型 (Consistency Models),并以此为准绳,去度量主从架构在追求秩序的过程中,所能达到的高度,以及必须付出的代价。

理论的标尺:什么是一致性模型?

在只有一个数据副本的单体世界里,“一致性”这个词几乎无需被提及。你写入一个值,下一次读取,必然能读到这个新值。这似乎是天经地义的。

但一旦引入复制,这个“天经地义”就被打破了。当一个写请求在 Leader 上完成,但还未同步到某个 Follower 时,客户端从这个 Follower 读取,就会读到“旧”的数据。这就是不一致

一致性模型,就是系统向客户端做出的一个关于“读写顺序和数据可见性”的“契约”或“保证”。它精确地定义了,当多个客户端并发读写时,他们可能看到怎样的数据,以及不可能看到怎样的数据。

理解一致性模型至关重要,因为它直接决定了系统的性能、可用性以及开发者编程的难易度。

理解操作的表示法

不过,在深入探讨各个模型之前,我们首先需要一种标准的方式来描述和可视化并发操作。我们将借鉴学术界(如 Herlihy & Wing, 1990)的经典表示法。

  • 操作的可视化:每个操作(如读或写)都有一个开始时间 (Invocation)和一个结束时间 (Response)。我们将它表示为一个在时间轴上延伸的水平条。


  • 顺序操作 (Sequential Operations):如果操作A的结束时间早于操作B的开始时间(如下图),我们就说 A先于 (precedes)B,记为A -> B。它们之间没有时间重叠,顺序是明确的。


  • 并发操作 (Concurrent Operations):如果操作A在操作B结束前开始,并且操作B在操作A结束前开始,我们就说A和B是并发的,再直白地说两个操作在时间上是有重叠的,它们的“真实”顺序是不确定的。如下图,A操作和B操作是并发的,其真实顺序可能是A -> B,亦可能是B -> A


注:上述几个示意图来自“Linearizability: A Correctness Condition for Concurrent Objects”(

http://www.calebgossler.com/notes/Papers/linearizability.html)。

我们的核心示例场景:

我们将使用一个贯穿始终的场景来对比各个模型。假设一个简单的分布式键值存储,其中有两个键xy,初始值均为0。有两个客户端 P1 和 P2 进行写操作,另外两个客户端 P3 和 P4 作为观察者进行读操作。

顺序一致性 (Sequential Consistency)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/8 3:57:11

没大数据怎么做AI检测?公开数据集+预训练模型套餐

没大数据怎么做AI检测?公开数据集预训练模型套餐 1. 为什么县城医院需要AI医疗纠纷监控? 医疗纠纷是基层医院面临的普遍难题。传统人工监控存在三大痛点:一是医护人员工作繁忙,难以及时发现潜在纠纷;二是纠纷早期征兆…

作者头像 李华
网站建设 2026/7/28 19:44:58

15分钟开发一个GitHub Hosts检查工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速开发一个GitHub Hosts检查工具,要求:1.实时检测当前Hosts配置 2.测试到GitHub各服务的连接速度 3.标记失效IP 4.提供替换建议 5.输出简洁的检查报告。使…

作者头像 李华
网站建设 2026/8/3 4:58:01

Qwen3-VL图像描述生成:5分钟上手教程,没显卡也能玩转AI

Qwen3-VL图像描述生成:5分钟上手教程,没显卡也能玩转AI 1. 什么是Qwen3-VL?为什么摄影爱好者需要它 Qwen3-VL是阿里云推出的多模态大模型,专门擅长理解图片内容并生成文字描述。简单来说,它就像个"看图说话&quo…

作者头像 李华
网站建设 2026/8/4 1:46:53

零基础教程:10分钟搞定WSL安装与配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个新手友好的WSL安装助手,功能包括:1. 图文并茂的安装向导 2. 一键式安装脚本 3. 基础命令速查表 4. 简单Linux操作教程 5. 常见错误解决方案。要求界…

作者头像 李华
网站建设 2026/8/9 19:59:41

餐饮AI智能体应用:菜单优化+剩菜预测,小店也能大数据

餐饮AI智能体应用:菜单优化剩菜预测,小店也能大数据 引言:小餐馆的大数据烦恼 开过餐馆的朋友都知道,每天最头疼的两件事:一是不知道哪些菜该多备料,哪些该少准备;二是打烊时看着一堆没卖完的…

作者头像 李华
网站建设 2026/8/2 9:40:39

AI自动生成ASCII艺术字:解放开发者双手

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Python工具,能够根据用户输入的文本自动生成对应的ASCII艺术字。要求支持多种字体风格选择(如斜体、粗体等),输出结果可直接…

作者头像 李华