You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求讲解分布式系统中Quorum、Consensus与Vector Clock的区别及示例

分布式系统核心概念:Quorum、Consensus、Vector Clock 详解(附示例)

1. Quorum(法定人数)

Quorum是分布式系统里平衡数据一致性和可用性的核心机制,本质是靠“足够多的节点达成一致”来完成读写操作,避免少数节点故障拖垮整个系统。

示例:
假设有5个节点的分布式存储集群,我们设定读取Quorum值R=3,写入Quorum值W=3:

  • 写入操作:必须有至少3个节点成功保存数据,才会给客户端返回“写入成功”。就算之后1-2个节点挂了,剩下的节点里至少还有3个存着正确数据,不会丢数据。
  • 读取操作:要从至少3个节点拿数据,然后取多数一致的结果。比如3个节点里2个返回版本A、1个返回版本B,就取版本A,避免读到过期或错误的数据。
    这里的关键规则是R + W > N(N是总节点数),这样读写操作一定会有重叠的节点,从根源上避免“写了但读不到”或者“读到旧数据”的问题。

2. Consensus(共识)

Consensus是让分布式系统里的多个节点对某个状态达成统一认知的过程,是解决分布式一致性问题的核心。常见的共识算法有Raft、Paxos。

示例:
比如一个分布式锁服务,多个客户端同时抢锁,集群里3个节点得统一“谁拿到锁”的结论:

  1. 客户端A给所有节点发锁请求;
  2. 节点1、2收到请求后回复同意,节点3暂时没收到;
  3. A收集到2个同意(3个节点的话,超过半数就是2),就确定自己拿到锁,然后通知所有节点更新“锁被A持有”的状态;
  4. 节点3收到通知后同步状态,最终所有存活节点都一致认为锁属于A。
    这个过程就是共识——不管节点之间有延迟或暂时故障,最终所有正常节点都会对同一状态达成统一。

3. Vector Clock(向量时钟)

Vector Clock是用来追踪分布式数据版本、识别并发冲突的工具,每个节点维护一个包含所有节点版本号的向量,每次写入时更新自己的版本号。

示例:
假设集群有两个节点:Node X和Node Y:

  1. 初始状态,两个节点的向量时钟都是[X:0, Y:0];
  2. Node X写入数据V1,把自己的版本号加1,向量时钟变成[X:1, Y:0];
  3. Node Y同步了V1后,基于V1修改出V2并写入,把自己的版本号加1,向量时钟变成[X:1, Y:1];
  4. 这时Node X没同步V2,直接基于V1又写出V3,向量时钟变成[X:2, Y:0];
  5. 当两个节点再次同步时,对比两个向量时钟:[X:2, Y:0]和[X:1, Y:1],两者互相不包含(X的版本更高但Y的版本更低,反过来也一样),这就说明出现了并发修改冲突,需要客户端或者系统来合并V2和V3的内容。
    如果是[X:2, Y:1]和[X:1, Y:1],前者所有版本号都大于等于后者,说明前者是后者的后续版本,直接用前者覆盖后者就行,没冲突。

内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:27:32