为了解决乱序问题,可以尝试以下方法:
1. 用性能换取顺序正确——基于协议
2. 用性能换取顺序正确——基于回执
两种方法的优缺点
基于协议
优点
可靠,历经考验
简单,无需开发
缺点
资源开销高
必须整套使用
优点
自主可控,按需开发
资源开销可控
缺点
需要自己投入开发
应用层逻辑控制使得网络复杂度向外蔓延
复杂度带来维护成本
基于回执
基于乱序处理方法的总结
网络不是绝对可靠的,为了实现相对可靠,需要付出一定的代价,企业需要考虑的是:如何衡量所付出的代价与产出成正比。
冲突比乱序更高级的一种表现形式,存在多向、多维度等问题。
如何避免错误的蔓延?
原则:任何一次不一致,都会导致后续的操作基于错误的信息进行,从而不断扩大错误,造成无法收拾的结果。因此,不一致是不能被容忍的。
解决办法:
严格一致性:独占
最终一致性:检查与修复
非技术手段:设计与提示
严格的一致性独占就是同一时间同一范围只能由一人操作。
范围
整个表格,类似VSS
工作表
单元格范围
排他性
独占冲突时,必有一方被弹开
直到占有者解开,不然无法占用
占用前无法操作
原理和锁基本一致
优点
可以确保严格一致性,不会产生多版本的错误累积
比起修复恢复这类弥补手段,一开始就不出错的成本最低
逻辑清楚简单,开发维护成本低
缺点
静态协作的味道
独占动作严重影响体验
大幅降低协作效率
需对表格实现的 功能
锁定工作表
锁定单元格
最终一致性基于唯一正确顺序,察觉客户端的错误,撤销错误操作后重新执行正确的操作。
唯一正确
服务器到达顺序
协作边界分流
P2P+选举算法
察觉错误
服务器回执id
服务器回执操作,MS
撤销错误
撤销到错误发生前的一步操作的结果
保存副本实现撤销功能
利用操作版本快照
重新执行
操作队列需保存
区分好无感知执行与显式执行
针对多人协作难点的总结如何实现Excel相关功能是需要开发人员需要花时间去研究的,另外为了满足需求,适配多设备和平台的兼容性也非常重要。
另外,多人协作表格的本质还具有如下本质和特点:
Server – Clients 中心系统,类似数值敏感的小型网游
任何这类系统都是在体验和正确性中寻求平衡
表格的数值敏感性高于网游,数据操作和存储的挑战更大
表格的计算复杂度更高,尤其涉及复杂公式嵌套与全量统计筛选
Web存在天花板,所以复杂的页游并不多见,端游较多