文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

开发在线文档时,这个技术难点你解决了吗?

2024-12-14 00:57

关注

新一代信息技术的迅猛发展,深刻影响着我们的工作生活方式。近年,远程办公彻底颠覆了传统的企业管理模式,在线文档作为远程办公软件的重要组成部分也同样迎来了高速发展。

如今,即便市场中已经有了腾讯文档、石墨文档、飞书、语雀和灵犀文档等在线办公产品,但在线文档本身仍面临功能、技术、数据安全、服务、生态等多方面的考验,如数据处理效率、多人协作、二次扩展、系统集成、框架兼容性问题等。

从技术角度来看,在线、数据处理和多人协作是开发在线文档系统最关键的技术指标。不过,在线和数据处理均已有较成熟的技术方案,实现难度不大。因此,多人协作才是影响在线文档系统易用性的核心要素。

什么是多人协作?

多人协作,即多人同时对同一份文档进行编辑,用户无需刷新即可看到其他人所做的修改。Google Docs、腾讯文档、石墨文档、Quip 等都具备多人协作功能。

那么,多人协作是如何实现的呢?

任何信息如要做到多人实时编辑与展现,需要实现以下三步:

这三步,类似于编解码过程:首先将信息转换为一组操作集合,然后将操作通过网络传输给其他终端,最后在本地终端将操作还原为信息。

这些步骤看起来简单,但每一步都涉及很多细节处理,比如:操作化过程中,在对信息进行分割与组合时,如何确保信息的所有变化都可以分解为操作的集合?如何令操作覆盖信息的所有变化?如何决定分割的颗粒度?

可传输需要考虑以下几点:

1、传输内容

Ⅰ.清晰

Ⅱ.冗余

Ⅰ.逻辑压缩

Ⅱ.协议压缩

Ⅲ.手动压缩

2、网络协议

Ⅰ.TCP

Ⅱ.UDP

3、QoS(Quality of Service,服务质量)

可还原主要涉及:

1、绝对操作的还原

2、相对操作的还原

3、本地操作的还原

4、无入侵的还原

在了解了多人协作的基本原理之后,我们来研究一下它的技术难点。

多人协作有哪些技术难点?

多人协作,本质是分布式系统中的 Multiple Leader Replication,即任何一个用户端都可被视为 Data Leader,这些 Leader 之间同步数据必然会遇到乱序和冲突问题。这就是多人协作的主要难点。

对于 Multiple Leader Replication 的冲突问题,有如下解决方法:

在实际开发在线文档系统的过程中,Operational Transformation(OT)算法技术是解决多人协作冲突问题较为常用的方法。这项技术诞生于 1989 年,其原理是将文本内容统一为以下 3 种类型的操作方式,目的是为用户提供最终一致性实现:

在完成上述操作后,OT 算法将正在并发的操作合并转换,以形成新的操作流,并应用在历史版本上,实现无锁化同步编辑。

(OT 算法技术中的操作转换过程)

OT 算法背后的思想其实非常简单,就是在特定的条件下进行相应的操作转换,因此,OT 主要用于文本,通常很复杂且不可扩展。对于富文本编辑等更高级的结构,OT 用复杂性换来了对用户预期的实现,不会给系统性能造成过多的负面影响。因此,如今大多数实时协同编辑逻辑都是基于 OT 算法来实现的。

正因如此,OT 算法成为了解决当前协同冲突处理最主要的方案之一。然而,即便它已经诞生了 30 余年,控制算法相关的理论早已百花齐放,却仍无法很好地处理分布式实现问题,且开发一个支持多人实时协同编辑的系统也远比想象中的更加复杂。

实现多人协作的突破口在哪里?

由此可见,实现一款复杂的多人实时协同编辑系统仅仅依靠算法逻辑是不够的,还需要根据不同的业务场景(如项目看板、纯文本编辑、undo/redo 等),投入大量的研发成本和时间,并在不断摸索中,寻找到产品性能和易用性之间的平衡点。

那么,是否存在一条更为简单快捷的解决方法呢?

通过对市面上多款在线协同办公产品的示例代码进行分析,我们发现这些产品除了运用到前文提到的 OT 算法之外,基本都会借助第三方表格组件。通过嵌入组件,在线文档系统很好地支持了多人协作的最终一致性,给用户提供了更加易用且多样化的体验效果,在减少研发成本的同时,实现了更高密度的计算复杂度,大幅提高了多人协作效率。

用于多人协作的表格组件需要具备哪些功能?

首先,是对于表格的功能支持。

由于表格的数值敏感性远高于其他数据类型,用作多人协作文档时可以实现更为细腻的操作颗粒度和计算复杂度。因此,所选用的组件必须具备强大的表格功能支持,不仅要在数据录入、数据填报等方面展现出强大的能力,还要具备各类统计、计算汇总、透视分析,以及图形化手段。

其次,需要具备开放的 API 接口,满足更多定制化选项

这类组件需要提供丰富的事件和应用程序接口,用于控制单元格状态、表单保护、数据传输等逻辑,对于多人协作而言,还需限制用户对同一处内容进行编辑,以及插入时间戳(序列化)等功能。

出于好奇,笔者下载试用了网上多款表格组件,发现能满足上述需求的屈指可数,而 SpreadJS 无疑是最为亮眼的一款。这款组件主打可嵌入系统的“在线 Excel”,纯前端的体系架构可以很容易的嵌入系统开发,而无需考虑与原生系统的兼容性。值得一提的是,SpreadJS 采用了稀疏数组 (Sparse Array) 作为存储模型,相较于传统的链式存储或数组存储,稀疏数组只会对非空数据进行存储,而不需要对空数据开辟额外的内存空间。

除了节省内存空间外,对于表格这类布局松散的数据类型,稀疏数组也更易于构建基于行索引的数据字典,以便随时替换或恢复整个存储结构中的任何一个级别的节点,借助这一特性,SpreadJS 在多人协同中实现了高效的数据回滚和数据恢复 (Redo/Undo)。


(SpreadJS 的稀疏矩阵存储模型 (Sparse Array))

结语

企业协同办公的需求将伴随数字化转型的深化而日益剧增。未来企业协同办公将朝着产品易用性提升、可集成与二次扩展能力、与原系统/业务的高度契合、满足最终用户的使用习惯等方向发展。

如何打破技术壁垒,开发出既能满足不同场景下的用户需求,又具备市场竞争力和差异化的在线文档产品,是 SaaS 企业和系统供应商们首要考虑的问题。

“好风凭借力,送我上青云。”在如今竞争激烈的在线文档领域,除了耗费大量精力自主研发,学会借力打力满足不同的业务场景和客户需求,或许也是一个不错的选择。

来源:互联网内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯