第三篇 协同核心:操作与冲突
接入层解决「画得动、连得上、断了能救」,本篇解决更硬的「画得对、画得并」:多人几乎同时画时,笔怎么建模、怎么实时广播、冲突怎么并、历史怎么退。这是白板产品的灵魂,也是技术密度最高的一篇。前面五篇是骨架与语言,本篇是把一群人的操作「正确地」合到一块板上。
本篇脉络
| 节 | 主题 | 要解决的问题 |
|---|---|---|
| 3.1 | 笔触模型 | 坐标、样式、时间戳怎么定 |
| 3.2 | 实时广播 | 服务端怎么中继扇出 |
| 3.3 | 冲突解决 | OT 与 CRDT 怎么取舍 |
| 3.4 | 历史回放 | 日志怎么记、撤销怎么退 |
为什么冲突是核心
单用户画图没有冲突,多人同时画才有。两个人在相邻位置各画一笔,到达顺序随机,合并规则不统一就会出现「同一区域两个人画的线互相覆盖、画面闪烁、甚至越合越乱」。协同白板的正确性,全押在「怎么合并并发操作」上,本篇围绕它展开。
协同的两类操作
| 类型 | 例子 | 冲突强度 |
|---|---|---|
| 追加型 | 各画各的笔 | 低(各占各区域) |
| 修改型 | 同时改同一条 | 高(要合并语义) |
白板「各画各的」多属追加型,冲突天然弱——这是白板比「协同文档」好做的地方;但「擦除」「移动整组」会跨到修改型,需要合并语义。本篇把两类都覆盖。
本篇的验收线
| 验收 | 含义 |
|---|---|
| 笔不丢 | 各人操作最终都上板 |
| 不闪烁 | 合并稳定,画面收敛 |
| 可撤销 | 个人笔、整板都能退 |
三章讲完,多人白板就从「能动」升级到「正确」。
