分布式:数据复制
可以把“数据复制”理解为同一份数据保存在多台服务器上一台坏了还能从其他服务器读取或恢复。但仅仅复制多份还不够系统还要解决写入顺序、何时算成功、节点故障后由谁接管以及不同副本如何重新同步。一、最简单的多副本结构假设有三个节点节点 Ax 0 节点 Bx 0 节点 Cx 0客户端希望执行SET x 100在 Raft 这类系统中节点分为ALeader BFollower CFollower所有写请求先交给 Leader客户端 | | SET x 100 v Leader A |---------------- Follower B | ---------------- Follower CLeader 负责规定操作顺序Follower 按照这个顺序复制和执行。这样客户端虽然面对多台服务器但逻辑上像在操作一台可靠的服务器。二、一次写入是如何复制的第一步写入 Leader 日志客户端发送SET x 100Leader 先把它记录到日志中A 的日志 Index Term Command 1 1 SET x 10 2 2 SET x 100此时日志 2 只是“Leader 收到了”还不能立即认为操作成功。第二步发送给其他节点Leader 通过AppendEntries把日志复制给 B、CA[1, 2] | ---- 日志 2 ---- B[1, 2] | ---- 日志 2 ---- C[1, 2]Follower 会先把日志持久化再返回确认。第三步等待多数节点确认假设 C 暂时断网A保存成功 B保存成功 C没有响应三节点集群的多数是两个因此 A 和 B 已经构成多数3 个节点多数 2 5 个节点多数 3 7 个节点多数 4Leader 此时可以把日志标记为Committed然后应用到状态机并通知客户端写入成功。共识系统只要多数节点仍可通信通常就能继续推进五节点集群可以容忍两个节点故障。Ax 100已提交 Bx 100已提交 C暂时还是旧数据三、为什么多数确认很重要假设一条数据只保存在 Leader 上就返回成功A有日志 2并向客户端返回成功 B没有日志 2 C没有日志 2如果 A 马上损坏日志 2 就彻底丢失了A故障 B[1] C[1]这意味着客户端明明收到“成功”数据却消失了。如果要求多数节点保存A[1, 2] B[1, 2] C[1]即使 A 故障B 仍然拥有日志 2可以参与选举并成为新 Leader。所以多数确认的意义是一条已经宣布成功的数据不能只存在于一台可能损坏的服务器上。四、复制如何提高可用性没有副本时客户端 - 节点 A A 故障 - 整个服务不可用有三个副本时客户端 - Leader A | -- B -- C如果 Follower C 故障A正常 B正常 C故障A 和 B 仍然构成多数系统可以继续处理请求。如果 Leader A 故障A故障 B正常 C正常B、C 会重新选举。其中拥有最新合格日志的节点成为新 LeaderB新 Leader CFollower客户端之后把请求发送给 B服务得以恢复。Raft 的选举限制要求候选者的日志至少与投票节点一样新防止缺少已提交记录的节点当选。五、复制如何提高容错性容错性表示系统的一部分发生故障时整体仍然能够正确运行。从节点故障ALeader正常 BFollower正常 CFollower故障系统还有多数节点继续工作。C 恢复后会向 Leader 补齐缺少的日志恢复前 A[1, 2, 3, 4] B[1, 2, 3, 4] C[1, 2] 同步后 C[1, 2, 3, 4]Leader 故障剩余节点重新选举新 Leader 接管请求。因为选举多数与提交多数必然存在重叠节点再加上日志新旧检查已经提交的日志会被后续 Leader 保留。数据盘故障只要其他副本仍然保存数据故障节点修复后就可以从正常节点重新同步。六、网络分区时会发生什么假设五个节点被分成两组多数一侧A、B、C 网络中断 少数一侧D、E多数一侧有三个节点可以选举 Leader、复制日志并继续提交。少数一侧只有两个节点D E 多数 3因此它们不能提交写入。即使旧 Leader 位于少数一侧也不能在没有多数确认的情况下向客户端返回成功。这会牺牲少数一侧的可用性但能防止两边同时确认冲突数据多数一侧x 100 少数一侧x 200网络恢复后少数一侧会接受新 Leader并删除或覆盖未提交的冲突日志。因此 Raft 的取舍总体属于 CAP 中的CP发生网络分区时优先保证一致性。七、为什么不等待所有节点假设系统规定必须三台全部写入成功A 成功 B 成功 C 成功 - 返回成功只要 C 故障所有写请求都会失败。数据一致性很好但可用性很差。如果只等待一台A 成功 - 立即返回速度快、暂时更可用但 A 故障时可能丢失刚写的数据。多数派是一种折中三台中写入两台 - 成功 五台中写入三台 - 成功它允许少量节点故障同时又能保护已提交的数据。八、强一致和最终一致是两条不同路线Raft强一致路线写入 Leader - 复制到多数 - 标记提交 - 返回成功如果无法联系多数节点就停止提交避免返回错误结果。Dynamo 类系统高可用路线另一类系统允许多个可用节点继续接收写入节点 A 接收x 100 节点 B 接收x 200网络恢复后再通过版本号、时间戳或业务规则解决冲突。这种复制方式能够获得更高的分区可用性但可能只能提供最终一致性。Amazon 的 Dynamo 设计通过多副本、类 quorum 技术和版本冲突处理选择在部分故障场景中牺牲强一致性来提高可用性。九、最重要的区分复制成功 数据已经保存到某个副本 提交成功 数据已经满足系统的确认规则可以对外宣布成功 执行成功 已提交日志已经应用到数据库或状态机在 Raft 中完整过程可以记成客户端写入 ↓ Leader 记录日志 ↓ 复制到 Followers ↓ 多数节点确认 ↓ 日志提交 ↓ 各节点按顺序执行 ↓ Leader 返回成功因此真正保证可用性和容错性的不是“复制”这一个动作而是多副本保存 多数确认 Leader 选举 日志补齐 冲突日志修复。另外多副本不等于备份。误删除或错误命令也可能被迅速复制到所有节点所以实际系统通常还需要独立备份。

相关新闻

C++异常隔离设计:构建健壮接口与资源安全防护

C++异常隔离设计:构建健壮接口与资源安全防护

1. 项目概述:为什么我们需要“异常隔离”?在C的世界里摸爬滚打了十几年,我见过太多因为异常处理不当而导致的“血案”。一个看似功能完善的库,接口设计得花里胡哨,性能指标也相当亮眼,但只要调用方抛出一个…

2026/10/17 2:51:12 阅读更多 →
软件安全建议方案

软件安全建议方案

安全无底线,一票否决1. 遵循安全标准:确保应用软件开发符合《XXXXXXXXX移动APP安全开发标准及安全防护规范(试行)》和《应用系统安全设计与开发管理规范(试行)》的规定。2. 资产管理:所有IT系统…

2026/10/17 2:51:12 阅读更多 →
GitHub热搜API多语言实现与鉴权实践

GitHub热搜API多语言实现与鉴权实践

1. 项目概述最近在开发一个需要实时获取GitHub热门项目数据的应用时,发现云策API提供的GitHub热搜接口非常实用。这个接口不仅数据更新及时,而且提供了完善的鉴权机制和清晰的返回结构。本文将分享我从零开始使用这个API的完整过程,涵盖8种主…

2026/10/17 2:54:00 阅读更多 →

最新新闻

MATLAB实现Elman神经网络电力负荷预测:时序建模与工程实践

MATLAB实现Elman神经网络电力负荷预测:时序建模与工程实践

1. 项目概述与核心需求解析电力负荷预测这个题目,在电力系统里是老生常谈,但真正把它做好的人不多。我接触过不少相关项目,也见过很多人拿历史负荷数据直接塞进神经网络里就跑,结果训练集误差看着挺漂亮,一到验证集就原…

2026/10/17 12:54:09 阅读更多 →
帧同步原理与实现:从输入同步到确定性保障

帧同步原理与实现:从输入同步到确定性保障

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 12:54:09 阅读更多 →
算法OJ作业Lecture(4):四重能力压力测试与破题心法

算法OJ作业Lecture(4):四重能力压力测试与破题心法

1. 这不是一节普通课,而是一次算法能力的“压力测试”“程序设计与算法 | (8) Lecture(4) OJ作业”——看到这个标题,很多刚接触算法训练的同学第一反应是:又到在线判题系统(OJ)交作业的时间了。但如果你真这么想&…

2026/10/17 12:54:09 阅读更多 →
North-Micro-Vision-Instruct-bf16 图像输入完全攻略:从本地图片到 URL 的多模态实战

North-Micro-Vision-Instruct-bf16 图像输入完全攻略:从本地图片到 URL 的多模态实战

【免费下载链接】North-Micro-Vision-Instruct-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/North-Micro-Vision-Instruct-bf16 点击查看 免费下载 North-Micro-Vision-Instruct-bf16 是一款面向 Apple Silicon 的多模态视觉语言模型&#xf…

2026/10/17 12:54:09 阅读更多 →
为什么你的小模型推理变慢了?SmolLM-Instruct_rai_1.8.0_medusa_1.0_npu 性能调优 10 个技巧

为什么你的小模型推理变慢了?SmolLM-Instruct_rai_1.8.0_medusa_1.0_npu 性能调优 10 个技巧

大模型基础模型 【免费下载链接】SmolLM-Instruct_rai_1.8.0_medusa_1.0_npu 项目地址: https://ai.gitcode.com/hf_mirrors/amd/SmolLM-Instruct_rai_1.8.0_medusa_1.0_npu 点击查看 免费下载 小模型推理明明应该飞快,为什么跑起来却越来越慢&#xff…

2026/10/17 12:54:09 阅读更多 →
Docker Harbor 安装配置全解析:从部署到运维的镜像治理实践

Docker Harbor 安装配置全解析:从部署到运维的镜像治理实践

做容器化落地的人迟早会碰到一个问题:镜像越来越多,靠 Docker 自带的 Registry 管不住权限,也管不住审计和复制。Docker Harbor安装配置就成了绕不开的一环——把 Harbor 部署起来,给团队一个靠谱的镜像中心。尤其是当团队规模超过…

2026/10/17 12:53:09 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →