想实现多人协作的“在线Excel”?真没那么简单

前端开发 作者: 2024-08-22 01:20:01
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Excel是我们办公中常用的工具 ,它几乎能为我们处理大部分数据,友好的交互
  1. 跨部门、地区沟通协作的不便
  2. 过度依赖文件、文件夹共享的形式,不能确保文档的安全性
  3. 没法纪录和体现职工对文本文档的意见和评价
  4. 文档记录发生变更时,无法及时通知到相关部门和员工
  5. 文档无法在线协同编辑,缺失必要的流程管控
  6. 多人共同编辑一个文档,无法留存修改记录和历史版本

多人协作的形式:历史与发展

多人协作的初期:静态协作

  • 递增式协作
    • 邮件:你来我往
    • 论坛:跟帖回复
  • 独占式协作
    • 文档传递
    • 微软VSS
  • 合并式协作
    • SVN
    • Git
    • diff,patch,merge指令

多人协作的发展期:从静态到动态

  • 静态协作的比喻
    • 拼接画
    • 积木
  • 静态协作的特点
    • 多版本
    • 块操作
    • 有协作动作
  • 静态协作的缺点
    • 版本碎片化
    • 缺乏时效性
    • 协作动作成本高

多人协作的蓬勃期:动态

  • 动态协作的比喻
    • 一起画黑板
  • 动态协作的特点
    • 唯一版本
    • 原子操作
    • 无协作动作
  • 动态协作的优点
    • 版本可控
    • 实时
    • 无协作成本
  • 典型产品
    • Office Online
    • 石墨
    • OnlyOffice

多人协作的基础:原理与架构

  1. 操作化
  2. 可传输
  3. 可还原

操作化

  • 分割与组合
    • 如何保证:信息的所有变化都可以分解为操作的集合?反之,操作如何覆盖出信息的所有变化?
    • 分割的颗粒度如何决定?
      • 粗一点?
      • 细一点?
      • 如何兼顾解释性与扩展性?
  • 绝对操作与相对操作
    • 绝对操作
      • 针孔打印机的完美世界
      • 打印机时代的编辑噩梦
    • 相对操作
      • 4K电视不是梦
      • 为什么数字电视稳定性不如模拟电视
    • 绝对操作与相对操作比喻:时间与空间的互换

    可传输

    • 传输内容
      • 原始文本
        • 清晰
        • 冗余
      • 压缩技术
        • 逻辑压缩
        • 协议压缩
        • 手动压缩
    • 网络协议
      • Socket
        • TCP
        • UDP
      • HTTP
      • WebSocket
    • QoS(Quality of Service,服务质量)
      • 自动恢复

    可还原

    1. 绝对操作的还原
    • 控制体积
    • 合理的提示
  1. 相对操作的还原
    • 严格的顺序性
    • 从源头保障顺序性
    • 顺序性的补救
  2. 本地操作的还原
    • 过滤收到的操作集合
    • 从源头细化操作颗粒
    • 本地保存本地执行
  3. 无入侵的还原
    • 定义入侵
    • 排除入侵
    • 千人千面

    多人协作的难点:乱序与冲突

    乱序

    1. 用性能换取顺序正确——基于协议
    2. 用性能换取顺序正确——基于回执
    两种方法的优缺点
    1. 基于协议
    • 优点
      • 可靠,历经考验
      • 简单,无需开发
    • 缺点
      • 资源开销高
      • 必须整套使用
    • 优点
      • 自主可控,按需开发
      • 资源开销可控
    • 缺点
      • 需要自己投入开发
      • 应用层逻辑控制使得网络复杂度向外蔓延
      • 复杂度带来维护成本
    1. 基于回执
    基于乱序处理方法的总结

    冲突

    如何避免错误的蔓延?

    1. 严格一致性:独占
    2. 最终一致性:检查与修复
    3. 非技术手段:设计与提示
    严格的一致性
    1. 范围
      1. 整个表格,类似VSS
      2. 工作表
      3. 单元格范围
    2. 排他性
      1. 独占冲突时,必有一方被弹开
      2. 直到占有者解开,不然无法占用
      3. 占用前无法操作
      4. 原理和锁基本一致
    3. 优点
      1. 可以确保严格一致性,不会产生多版本的错误累积
      2. 比起修复恢复这类弥补手段,一开始就不出错的成本最低
      3. 逻辑清楚简单,开发维护成本低
    4. 缺点
      1. 静态协作的味道
      2. 独占动作严重影响体验
      3. 大幅降低协作效率
    5. 需对表格实现的 功能
      1. 锁定工作表
      2. 锁定单元格
    最终一致性
    1. 唯一正确
      1. 服务器到达顺序
      2. 协作边界分流
      3. P2P+选举算法
    2. 察觉错误
      1. 服务器回执id
      2. 服务器回执操作,MS
    3. 撤销错误
      1. 撤销到错误发生前的一步操作的结果
      2. 保存副本实现撤销功能
      3. 利用操作版本快照
    4. 重新执行
      1. 操作队列需保存
      2. 区分好无感知执行与显式执行

     

    针对多人协作难点的总结

    •  Server – Clients 中心系统,类似数值敏感的小型网游
    • 任何这类系统都是在体验和正确性中寻求平衡
    • 表格的数值敏感性高于网游,数据操作和存储的挑战更大
    • 表格的计算复杂度更高,尤其涉及复杂公式嵌套与全量统计筛选
    • Web存在天花板,所以复杂的页游并不多见,端游较多
    原创声明
    本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    本文链接:http://www.jiecseo.com/news/show_66398.html