想实现多人协作的“在线Excel”?真没那么简单
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Excel是我们办公中常用的工具 ,它几乎能为我们处理大部分数据,友好的交互
- 跨部门、地区沟通协作的不便
- 过度依赖文件、文件夹共享的形式,不能确保文档的安全性
- 没法纪录和体现职工对文本文档的意见和评价
- 文档记录发生变更时,无法及时通知到相关部门和员工
- 文档无法在线协同编辑,缺失必要的流程管控
- 多人共同编辑一个文档,无法留存修改记录和历史版本
多人协作的形式:历史与发展
多人协作的初期:静态协作
- 递增式协作
- 独占式协作
- 合并式协作
- SVN
- Git
- diff,patch,merge指令
多人协作的发展期:从静态到动态
多人协作的蓬勃期:动态
- 动态协作的比喻
- 动态协作的特点
- 动态协作的优点
- 典型产品
- Office Online
- 石墨
- OnlyOffice
多人协作的基础:原理与架构
- 操作化
- 可传输
- 可还原
操作化
- 分割与组合
- 如何保证:信息的所有变化都可以分解为操作的集合?反之,操作如何覆盖出信息的所有变化?
- 分割的颗粒度如何决定?
- 绝对操作与相对操作
可传输
- 传输内容
- 网络协议
- QoS(Quality of Service,服务质量)
可还原
- 绝对操作的还原
相对操作的还原
本地操作的还原
- 过滤收到的操作集合
- 从源头细化操作颗粒
- 本地保存本地执行
无入侵的还原
多人协作的难点:乱序与冲突
乱序
1. 用性能换取顺序正确——基于协议
2. 用性能换取顺序正确——基于回执
两种方法的优缺点
- 基于协议
- 优点
- 缺点
- 优点
- 缺点
- 需要自己投入开发
- 应用层逻辑控制使得网络复杂度向外蔓延
- 复杂度带来维护成本
- 基于回执
基于乱序处理方法的总结
冲突
如何避免错误的蔓延?
- 严格一致性:独占
- 最终一致性:检查与修复
- 非技术手段:设计与提示
严格的一致性
- 范围
- 整个表格,类似VSS
- 工作表
- 单元格范围
- 排他性
- 独占冲突时,必有一方被弹开
- 直到占有者解开,不然无法占用
- 占用前无法操作
- 原理和锁基本一致
- 优点
- 可以确保严格一致性,不会产生多版本的错误累积
- 比起修复恢复这类弥补手段,一开始就不出错的成本最低
- 逻辑清楚简单,开发维护成本低
- 缺点
- 静态协作的味道
- 独占动作严重影响体验
- 大幅降低协作效率
- 需对表格实现的 功能
- 锁定工作表
- 锁定单元格
最终一致性
- 唯一正确
- 服务器到达顺序
- 协作边界分流
- P2P+选举算法
- 察觉错误
- 服务器回执id
- 服务器回执操作,MS
- 撤销错误
- 撤销到错误发生前的一步操作的结果
- 保存副本实现撤销功能
- 利用操作版本快照
- 重新执行
- 操作队列需保存
- 区分好无感知执行与显式执行
针对多人协作难点的总结
- Server – Clients 中心系统,类似数值敏感的小型网游
- 任何这类系统都是在体验和正确性中寻求平衡
- 表格的数值敏感性高于网游,数据操作和存储的挑战更大
- 表格的计算复杂度更高,尤其涉及复杂公式嵌套与全量统计筛选
- Web存在天花板,所以复杂的页游并不多见,端游较多
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。