文档核心概念版本向量 (Version Vector)

版本向量(Version Vector)

版本向量是分布式系统中的核心概念,通过记录每个 peer 提交的操作数量,完整追踪所有节点的状态。

什么是版本向量?

版本向量是一个从 peer ID 到操作计数的映射,它显式列出每个 peer 及其对应的操作数量,从而完整描述某个版本包含的操作。

示例{ "peer-A": 5, "peer-B": 3 } 表示该版本包含 peer A 的 0-4 号操作,以及 peer B 的 0-2 号操作。

主要特性

  • 信息完整:显式列出全部 peer 及其操作计数
  • 随 peer 数量增长:加入节点越多,结构越大
  • 无需访问历史:仅凭版本向量即可判断包含哪些操作
  • 便于比较版本:可以直接判断一个版本是否包含另一个版本

基本用法

import {  } from "loro-crdt";
 
const  = new ();
.("1");
const  = .("content");
.(0, "Hello");
 
// 获取版本向量
const  = .();
.(.()); // Map { "1" => 1 }

何时使用版本向量

版本向量适用于:

  1. 同步协议——用于判断需要与其他节点交换哪些更新
  2. 网络通信——提供自包含的版本信息
  3. 分布式系统——跨多节点追踪状态

与 Frontiers 的对比

维度版本向量Frontiers
大小O(peer 数量)通常 O(1-2)
信息量完整的 peer 状态仅包含边界操作
适用场景同步检查点
是否依赖历史是(需历史信息)

与 Frontiers 互转

import {  } from "loro-crdt";
 
const  = new ();
const  = .();
const  = .();       // 转为 Frontiers
const  = .(); // 再转回版本向量

相关文档