“时势造英雄”,是亘古不变的真理。在当前的时代背景下,在线文档可以称得上是这样的“英雄”。
自年新冠疫情爆发以来,远程办公彻底颠覆了传统的企业管理模式,在线文档作为远程办公软件的重要组成部分也同样迎来了高速发展。
如今,即便市场中已经有了腾讯文档、石墨文档、飞书、语雀和灵犀文档等在线办公产品,但在线文档本身仍面临功能、技术、数据安全、服务、生态等多方面的考验,如数据处理效率、多人协作、二次扩展、系统集成、框架兼容性问题等。
从技术角度来看,在线、数据处理和多人协作是开发在线文档系统最关键的技术指标。不过,在线和数据处理均已有较成熟的技术方案,实现难度不大。因此,多人协作才是影响在线文档系统易用性的核心要素。
什么是多人协作?
多人协作,即多人同时对同一份文档进行编辑,用户无需刷新即可看到其他人所做的修改。GoogleDocs、腾讯文档、石墨文档、Quip等都具备多人协作功能。
那么,多人协作是如何实现的呢?
任何信息如要做到多人实时编辑与展现,需要实现以下三步:
操作化可传输可还原这三步,类似于编解码过程。首先将信息转换为一组操作集合,然后将操作通过网络传输给其他终端,最后在本地终端将操作还原为信息。
这些步骤看起来简单,但每一步都需要考虑很多。比如操作化过程中,在对信息进行分割与组合时,如何确保信息的所有变化都可以分解为操作的集合、如何令操作覆盖信息的所有变化,以及如何决定分割的颗粒度。
可传输需要考虑以下几点:
传输内容
原始文本清晰冗余压缩技术逻辑压缩协议压缩手动压缩网络协议
SocketTCPUDPHTTPWebSocketQoS(QualityofService,服务质量)
快速失败自动回滚自动重连自动恢复可还原主要涉及:
绝对操作的还原
控制体积合理的提示相对操作的还原
严格的顺序性从源头保障顺序性顺序性的补救本地操作的还原
过滤收到的操作集合从源头细化操作颗粒本地保存本地执行无入侵的还原
定义入侵排除入侵千人千面在了解了多人协作的基本原理之后,我们来研究一下它的技术难点。
多人协作有哪些技术难点?
多人协作,本质是分布式系统中的MultipleLeaderReplication,即任何一个用户端都可被视为DataLeader,这些Leader之间同步数据必然会遇到乱序和冲突问题。这就是多人协作的主要难点。
对于MultipleLeaderReplication的冲突问题,有如下解决方法:
避免产生冲突,即不让多个用户同时编辑同一处地方。该解决方法简单粗暴,使用时需具体查看产品形态是否适合该方案。把冲突暴露给用户,让用户自己解决。目前大多数专业的版本控制软件采用了该方法,但它不适用于拥有大量非专业用户的产品,如在线文档。给写入操作打上全局index,可以是时间戳或序列号,该index必须是全局的且递增。在任何冲突的地方,都选择index较高的那个写入。该方法的优势在于冲突的解决是完全自动化的,不需要用户参与。缺点就是如果遇到同步间隔很长的情况,会丢失很多用户的输入。在实际开发在线文档系统的过程中,OperationalTransformation(OT)算法技术是解决多人协作冲突问题较为常用的方法。这项技术诞生于年,其原理是将文本内容统一为以下3种类型的操作方式,目的是为用户提供最终一致性实现:
retain(n):保持n个字符insert(str):插入字符strdelete(str):删除字符str在完成上述操作后,OT算法将正在并发的操作合并转换,以形成新的操作流,并应用在历史版本上,实现无锁化同步编辑。
OT算法技术中的操作转换过程图源:
转载请注明:http://www.0431gb208.com/sjszjzl/1381.html