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

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

 

 

 

为了解决乱序问题,可以尝试以下方法:

1. 用性能换取顺序正确——基于协议

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

 

 

 

2. 用性能换取顺序正确——基于回执

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

 

 

 

两种方法的优缺点

基于协议

优点

可靠,历经考验

简单,无需开发

缺点

资源开销高

必须整套使用

优点

自主可控,按需开发

资源开销可控

缺点

需要自己投入开发

应用层逻辑控制使得网络复杂度向外蔓延

复杂度带来维护成本

基于回执

 

基于乱序处理方法的总结

网络不是绝对可靠的,为了实现相对可靠,需要付出一定的代价,企业需要考虑的是:如何衡量所付出的代价与产出成正比。

冲突

比乱序更高级的一种表现形式,存在多向、多维度等问题。

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

 

 

 

如何避免错误的蔓延?

原则:任何一次不一致,都会导致后续的操作基于错误的信息进行,从而不断扩大错误,造成无法收拾的结果。因此,不一致是不能被容忍的。

解决办法:

严格一致性:独占

最终一致性:检查与修复

非技术手段:设计与提示

严格的一致性

独占就是同一时间同一范围只能由一人操作。

范围

整个表格,类似VSS

工作表

单元格范围

排他性

独占冲突时,必有一方被弹开

直到占有者解开,不然无法占用

占用前无法操作

原理和锁基本一致

优点

可以确保严格一致性,不会产生多版本的错误累积

比起修复恢复这类弥补手段,一开始就不出错的成本最低

逻辑清楚简单,开发维护成本低

缺点

静态协作的味道

独占动作严重影响体验

大幅降低协作效率

需对表格实现的 功能

锁定工作表

锁定单元格

最终一致性

基于唯一正确顺序,察觉客户端的错误,撤销错误操作后重新执行正确的操作。

唯一正确

服务器到达顺序

协作边界分流

P2P+选举算法

察觉错误

服务器回执id

服务器回执操作,MS

撤销错误

撤销到错误发生前的一步操作的结果

保存副本实现撤销功能

利用操作版本快照

重新执行

操作队列需保存

区分好无感知执行与显式执行

  针对多人协作难点的总结

如何实现Excel相关功能是需要开发人员需要花时间去研究的,另外为了满足需求,适配多设备和平台的兼容性也非常重要。

另外,多人协作表格的本质还具有如下本质和特点:

 Server – Clients 中心系统,类似数值敏感的小型网游

任何这类系统都是在体验和正确性中寻求平衡

表格的数值敏感性高于网游,数据操作和存储的挑战更大

表格的计算复杂度更高,尤其涉及复杂公式嵌套与全量统计筛选

Web存在天花板,所以复杂的页游并不多见,端游较多

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfdzg.html