目的

设计多人同时在线编辑文档,如腾讯文档

场景

需求

协同编辑

编辑的主要功能

  1. new
  2. edit
  3. 保存

加入协同

  1. 协同
  2. 可以展示谁在编辑
  3. 内容锁定

:::color2
使用websocket可以进行主动和被动更新,支持双向通信

:::

url设计

使用短连接,而且连接不能包含文件路径信息

文件存放

参考gfs的设计方式,metadata存放到db,内容信息在文件系统

修改方式是以行来作为修改的,使用双向链表进行构建数据结构,然后来执行

具体的修改逻辑,客户端告诉服务端是在哪一个的方向进行操作,然后处理之后,同步传给其他客户端

编辑操作

为了避免多次进行调用,可以存放到redis,然后定时任务,这样可以一次性的写一批数据

显示多个人的图像

多个人的信息是实时变化的

正在编辑的,写入redis