当前位置: 首页 > news >正文

系统设计练习 - 全球实时协同文档平台

背景

设计一个支持多人实时协作编辑的文档系统,不仅支持文本,还支持:

- 表格

- 富文本 + 嵌入组件(图片,代码块,图表)

- 简单的设计组件(类似Figma的block-based layout)

- 支持API和自动化(类似Notion integration)

系统需求和范围定义

功能需求:

- 多人实时写作编辑(<100ms perceived latency)

- 支持离线编辑+自动同步

- 支持评论,@mention,版本历史

- 支持权限模型(文档级,block级)

- 支持嵌入式结构(block tree/graph)

- 支持API/webhook/integration

非功能需求:

- 全球低延迟

- 高可用(99.99%)

- 海量文档 (10B docs,1B DAU)

- 多租户隔离

- 安全(ACL,审计,加密)

API设计

系统架构设计

整体系统分为三个layer:client,实时同步(orchestrator),snapshot+offline。

整体架构图如下所示:

详细说明:

1. client拥有local DB和ops log。对于文档的每一个操作,生成ops,存入ops log,同时将修改应用到本地文档上。并且将ops发送到service端的stream。

2. orchestrator service接收所有client发送的ops,做OT。关于OT的详细讨论,后面会讲到。将转换过的ops发送到redis pub/sub。每个document在pub/sub创建自己的topic。client通过websocket和pub/sub建立订阅关系,这个client可以快速获得一个document的所有ops,然后应用到本地的版本上。

3. 关于存储。orchestrator service将ops存入到ops DB。相当于service端的ops log。在后端启动一个cron job,定期合并ops到document上,建立document的snapshot。并通过sync service同步到全球主要的CDN上。这样一个client需要从零同步一个document时,可以同步snapshot,再从service端读取为应用到snapshot的ops,来建立最新的document。

4. 对于跨region的情况,每个client和自己所在的region的service进行通信,但是我们设立一个primary region,所有的update都发送到primary region进行处理。这样全球只有一个region处理document更改,解决一致性的问题。

5. 权限管理。我们基于document ACL进行权限管理。对于更细粒度的block权限,建立block tree。遵循子节点的权限设定覆盖父节点的权限设定。最终可以fallback到document ACL上。

6. comment管理。comment和document分开存储。comment使用lazy load加载策略。也就是在user load到某部分document,再从service query该部分的comments进行加载。这样减少一次性load的负载,降低latency。

讨论

1. OT和CRDT。 OT和CRDT是两种协作operation的方法。具体来说,OT基于一个中心进行ops的转换来解决ops之间的相互影响。例如对于文档的内容”12345“进行两个ops:1)在2后插入6;2)将5改为7.两个ops可以分别为: 1) insert "6" at (2); 2)change (4) to "7". 经过OT,两个ops变为:1) insert "6" at (2); 2) change (5) to "7". CRDT基于分布式的粒度更细的ops方式。比如,对于每一个字符进行标记。这样上面的对于不同字符的操作就可以互相独立,互不影响了。

2. 系统性能的瓶颈最可能出现在orchestrator service。当有多个client同时更新一个文档时,orchestrator会有大量的ops进行处理和fanout。我们的策略是每个document处于一个shard。在有多个document需要频繁更新时,它们可以做horizontal scale。如果一个document的更新仍然可能成为瓶颈的话,我们可以考虑进一步让一个document里的每一个chunk使用一个shard。

3. 整个系统的source of truth为ops DB。如果系统其他部分break,比如blob DB,或者redis pub/sub,我们可以replay ops DB里的ops对系统其他部分的信息进行恢复。

4. client和service之间的websocket连接期望通过connection gateway(或者proxy)进行。在connection gateway可以对client进行traffic control,恢复broken connection。这样可以简化后端service的设计也可以更好地维护client connection。

http://www.jsqmd.com/news/803694/

相关文章:

  • 2026年重庆二手PCB设备买卖与整厂搬迁方案深度横评 - 优质企业观察收录
  • 如何为 Hermes Agent 配置 Taotoken 作为 OpenAI 兼容的模型供应商
  • 2026年广东二手PCB设备回收处置与产能扩充完全指南 - 优质企业观察收录
  • 当AI学会“挖洞”:从Mythos到360漏洞挖掘智能体
  • 用AI 10分钟搭建一个监控系统:Prometheus + Grafana 实战
  • 2026年安阳直流电弧炉与节能冶金设备选购指南:短流程炼钢的绿色转型方案 - 企业名录优选推荐
  • 2026年国内口碑评价较高的GEO优化服务商三家专业选型参考 - 产业观察网
  • 2026年安阳直流电弧炉与节能冶炼设备选购指南:五大品牌深度横评 - 企业名录优选推荐
  • 抖音无水印下载神器:3分钟实现高效批量下载的完整指南
  • 山东滨亿机械设备:济宁发电机设备租赁公司推荐 - LYL仔仔
  • n8n-LLM工作流开发:低代码自动化与AI智能体集成实战
  • 2026年安阳直流电弧炉节能冶炼设备选购指南:5大品牌深度横评 - 企业名录优选推荐
  • 【新手避坑】Keil5从零到一:手把手搭建你的第一个STM32工程
  • 2026年国内GEO优化公司推荐top5 企业AI营销布局选型参考指南 - 产业观察网
  • 如何在Photoshop中解锁下一代图像格式AVIF的强大能力?
  • 2026广州靠谱小程序开发公司盘点:从定制到SaaS平台的全场景选型指南 - 维双云小凡
  • 2026年华北地区专业AI生成式引擎优化(GEO)服务公司推荐3家 - 产业观察网
  • 2026年西南地区靠谱GEO优化服务商3家专业分析与选型推荐 - 产业观察网
  • #2026湖南护理TOP5!衡阳等地学校口碑出众广受好评 - 十大品牌榜
  • 2026年安阳直流电弧炉与节能冶炼设备深度选购指南 - 企业名录优选推荐
  • 2026年安阳直流电弧炉厂家选型指南:短流程炼钢与固废资源化设备深度横评 - 企业名录优选推荐
  • 从现代视角审视统一内存架构(UMA)—— (1) PC 架构的崛起
  • 为AI智能体打造安全锁:ClawBands在OpenClaw中的零信任实践
  • 厚街自助餐哪家好:秒杀自助餐回头客 - 19120507004
  • #2026湖南计算机应用TOP5!衡阳等地学校就业升学有保障 - 十大品牌榜
  • 国内主流双缸剪品牌盘点 聚焦核心性能与服务 - 真知灼见33
  • PDF批注与NotebookLM笔记不同步?双向实时同步协议v2.1(2024Q3最新,仅限前500名开发者获取)
  • IT9201+IT66021:便携 KVM 一站式方案,音视控三合一免驱即插即用
  • 【Gemini Workspace整合黄金法则】:20年架构师亲授5大避坑指南与3步落地法
  • 口碑最好的隔离防晒霜排行榜,上榜就无限复购的5款隔离防晒霜 - 全网最美