恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

system-design-notes:Vector Clock版本时钟详解,多副本写冲突的3种解决策略

  • 首页
  • 资讯中心
  • /
  • system-design-notes:Vector Clock版本时钟详解,多副本写冲突的3种解决策略

相关资讯

lm-evaluation-harness 中的 OpenBookQA 任务:配置解析、评估原理与多语言变体实践 2026/9/15 14:25:54
SAP MM 寄售消耗261K,V价和S价! 2026/9/15 14:25:54
基于CORDIC的8点FFT蝶形运算FPGA实现与验证 2026/9/15 14:25:54

最新资讯

一号店HTML代码解析:从页面骨架到电商响应式布局实践
轻量级PHP论坛系统:自适应社区闭环实现
Vue3+Vite学生心理预警系统前端源码全解析
TOA定位中的最小二乘解法:从线性化到加权与递归实现
GenOffice实测:AI驱动的办公套件如何重塑文档、PPT与表格处理体验
txtai Embeddings 方法全解析:从索引构建到语义搜索的完整 API 指南

今日推荐

GDPR下大数据架构重构与隐私保护实践
多组学数据平台架构设计与优化实践
企业主数据管理系统架构设计与实施全解析

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

system-design-notes:Vector Clock版本时钟详解,多副本写冲突的3种解决策略

发布时间:2026/9/15 14:30:54
system-design-notes:Vector Clock版本时钟详解,多副本写冲突的3种解决策略 system-design-notesVector Clock版本时钟详解多副本写冲突的3种解决策略【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notessystem-design-notes 是分布式系统设计经典著作《System Design Interview》的中文笔记项目。本章以Key-Value Store键值存储为例详解Vector Clock向量时钟如何通过[服务器, 版本]对追踪数据版本并给出多副本并发写冲突的3种解决策略帮你彻底搞懂分布式一致性中最难的一关。为什么多副本写冲突是必然的为了保证高可用分布式键值存储会把同一份数据复制到 N 个节点通常放在不同机房![键值存储多副本数据复制架构](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/data-replication.png?utm_sourcegitcode_repo_files)正常情况下各副本通过同步保持一致。比如两个客户端分别向 server 1 和 server 2 请求get(name)返回的都是john![多副本键值存储一致性读取示例](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/consistent-server.png?utm_sourcegitcode_repo_files)但问题出在并发写当两个客户端同时执行put一个把name改成johnSanFrancisco另一个改成johnNewYork两个节点上就出现了两个互相冲突的版本![多副本并发写导致数据冲突示例](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/inconsistent-server.png?utm_sourcegitcode_repo_files)如果此时网络分区情况更糟——节点间无法同步读到的数据可能各不相同![网络分区场景下节点宕机与数据不一致](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/server-down.png?utm_sourcegitcode_repo_files)冲突不可避免那就给它记版本。这就是版本时钟登场的原因。什么是 Vector Clock 向量时钟向量时钟是为每个数据项关联的一组[服务器, 版本号]对例如D([S1, v1], [S2, v2], …, [Sn, vn])。它可以判断某个版本是先于、后于、还是与其他版本冲突。书中用一个 5 步演进示例讲得非常清楚 ![向量时钟版本演进与冲突调和过程详解](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/vector-clock.png?utm_sourcegitcode_repo_files)演进步骤Sx 处理第一次写入 →D1([Sx, 1])Sx 再次写入 →D2([Sx, 2])Sy 基于 D2 写入 →D3([Sx, 2], [Sy, 1])Sz 也基于 D2 写入 →D4([Sx, 2], [Sz, 1])D3 与 D4 在 Sx 上**调和reconcile**后合并 →D5([Sx, 3], [Sy, 1], [Sz, 1])更新规则很简单服务器已在时钟里 → 对应计数器 1服务器不在时钟里 → 新增一条记录冲突检测祖先版本 vs 兄弟版本向量时钟最厉害的地方在于自动判断先后关系关系判定规则含义无冲突祖先X 的所有计数器 ≤ Y 的对应计数器X 是 Y 的祖先直接取 Y冲突兄弟至少有一个计数器在两边互有大小两个版本并发产生需要调和以上图为例D3 和 D4 互为兄弟版本——D3 有[Sy,1]而 D4 没有D4 有[Sz,1]而 D3 没有。这正是需要调和的冲突点。⚠️挑战更新越多向量时钟会越长。实际系统需要用裁剪trimming策略限制其体积客户端处理复杂度也会增加。多副本写冲突的3种解决策略检测到兄弟版本后常见有 3 种处理方式从简单到严格策略1最后写入胜出LWW Timestamp给每次写入打全局时间戳合并时保留时间戳最大的值丢弃其他版本。✅ 实现简单、无脑高效适合丢了也不心疼的数据❌ 可能静默丢失并发更新比如两个用户同时改地址一个直接没了策略2基于向量时钟自动合并应用层 Merge保留所有冲突版本由应用定义合并函数自动调和集合类型取并集字段级数据逐字段合并如示例中 Sx 把 D3、D4 合并成 D5计数器类型直接求和✅ 不丢数据❌ 需要为每种数据类型写合并逻辑。策略3客户端人工仲裁Client Intervention把所有冲突版本原样返回给客户端由用户选择或修改后重新提交。✅ 最安全绝不丢数据❌ 打扰用户适合高价值数据如账户信息、订单。书中指出冲突调和最终就依赖这种应用特定逻辑或客户端介入。选型口诀数据可丢 → LWW数据可合并 → Merge数据很重要 → 客户端仲裁。降低冲突概率Quorum 共识与整体架构解决冲突是事后手段减少冲突才是事前功夫。系统通过 Quorum 共识控制读写N 个副本中写入需 W 个确认、读取需 R 个响应当W R N典型配置 N3, WR2时保证强一致![Quorum共识机制读写多数派原理](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/quorum-consensus.png?utm_sourcegitcode_repo_files)最终版本时钟与 Quorum 共同嵌入完整的去中心化架构客户端通过get/put简单 API 访问节点按一致性哈希组环、多副本容错、无单点故障![键值存储最终架构与Quorum版本控制整合](https://raw.gitcode.com/GitHub_Trending/sy/system-design-notes/raw/9d8388721e7231442763ad37398b8d82224aa68f/06. Key-Value Store/images/final-architecture.png?utm_sourcegitcode_repo_files)本章小结多副本 并发写 冲突必然发生向量时钟是追踪版本演进的时间线账本冲突判定靠计数器比较全小于等于 祖先互有大小 兄弟冲突3种解决策略LWW、自动合并、客户端仲裁按数据价值选型配合W R N的 Quorum 配置从源头压低冲突概率 完整推导与更多架构图见 06. Key-Value Store/Readme.md全 28 章系统设计笔记索引见 Readme.md。【免费下载链接】system-design-notesNotes of the book System Desgin Interview - An Insiders Guide项目地址: https://gitcode.com/GitHub_Trending/sy/system-design-notes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号