钉钉文档协同编辑背后的核心技术原理

简介: 有人说,互联网给人类社会带来最深层次的变革是改变了人与人协作的方式,将信息传播的成本大幅降低。身在互联网行业之中,研究信息传播的方式方法,是我们的日常功课。

有人说,互联网给人类社会带来最深层次的变革是改变了人与人协作的方式,将信息传播的成本大幅降低。身在互联网行业之中,研究信息传播的方式方法,是我们的日常功课。
信息传播的方式,按照时序效果,可分为同步和异步两类。

信息的同步传播

信息被生产的同时被消费。

image.png

话出我之口,入你之耳,过了此时此刻,想还原此情此景,麻烦得很,大多时候也不需要。同步场景下,信息的生产往往不需要深思熟虑,而是通过你来我往的讨论,澄清,逐步勾勒出话题的全貌。表达的时效性较之方式的丰富性更为重要。典型的场景如即时通讯,语音通话,视频会议等。简单明了,没有太多的格式。

信息的异步传播

信息的生产和消费异步发生。
典型的场景如论坛,博客,文档库,邮件。我在写这篇文档的时候,你们看不到。你们看的时候,我早已写完。异步场景下,信息的生产者会谨慎的推敲措辞,以确保自己的意思被准确的传达。表达方式的丰富性很重要,除了文本以外,段落结构,列表,示意图,表格都有利于信息的准确表达。

image.png

文档的信息表达方式

传统文档的信息表达方式是典型的异步传播。上述的几类异步场景都可见文档的影子。
然而2016年3月,Google上线的Google Docs颠覆了这个结论,这个改变世界的功能就是“多人实时编辑”,或者称作“协同编辑”。引入了协同编辑的在线文档,就像一块儿在线的白板,使得身处世界两端的人可以在上面共同迭代一个内容,通过你来我往的信息反馈,实现信息的同步传播。而编辑的结果又将沉淀下来,成为信息异步传播的载体。

image.png

兼具信息同步与异步传播的能力,协同文档的诞生,无疑给基于互联网的沟通协作带来了一场革命。
这场革命爆发于2006年,而它的起源,早在17年前。

image.png

1989年,代表着“文档”的Microsoft Office第一次在Macintosh系统上与世人见面,而代表着“协同”的操作变换算法也第一次见诸论文。
Microsoft Office 中所周知,而操作变换算法又是什么呢?

数据一致性问题与操作变换算法

对协同编辑最简单的理解类似于群聊天,每个人在自己的电脑上修改文档,把操作群发给其他打开这篇文档的用户。当收到来自其他用户的操作时,重放这个操作。比如下面这个例子:

image.png

但美好的设想,难免遭遇现实的挑战。因为网络存在延迟,来自不同用户的操作有可能在各端有不同的执行顺序。相同的操作,不同的执行顺序,会产生不同的结果。比如:

image.png

数据一致性是协同编辑的最低要求。当然,我们可以强制操作按照到达服务器的时间来排序,但这种排序会破坏用户编辑当时的上下文,产生不符合用户预期的编辑效果。
操作变换算法就在这里被引入了。

操作变换算法不是一个算法,而是对一类算法的统称。它们针对不同的文档数据模型,解决一个相同的问题:
基于同一个状态的两个操作,如何调整一个操作的参数,使得它可以在另一个操作之后执行,表达同样的用户意图。
上面的例子加上了操作变换,就可以解决数据一致性的问题,如下图所示:

image.png

当然,协同文档和操作变换算法的水还是很深的。本文只是对基本原理做个简单的介绍。想要了解更多,可以参考以下文献:

Operational Transformation Frequently Asked Questions and Answers
南洋理工大学教授Chengzheng Sun的Survey,覆盖了OT领域绝大多数研究成果

Google Wave Operational Transformation
G-Suite协同引擎的协议白皮书

Achieving convergence,causality-preservation, and intention-preservation in real-time cooperative editing systems
GOT算法及一维数据操作变换算法论文

Context-based Operational Transformation in Distributed Collaborative Editing Systems
COT算法论文

结语

2006年3月,Google Docs上线,多人实时协同编辑的功能惊艳世界,让稳坐办公套件头把交椅的 Microsoft Office 也感到虎躯一震。Office奋起直追,但同等功能的 Office 365 上线已是五年之后。协同编辑究竟是怎样的一座坚城,让兵强马壮的微软止步了五年之久?做一款协同编辑器需要哪些核心技术?协同编辑技术对于普通的前端应用开发会有怎样的启发? 在 D2 ,与大家分享更多技术原理与实践。

image.png

相关文章
|
3月前
|
JSON API 数据格式
您可以在钉钉开放平台的API文档中找到对应的API接口来创建审批实例
您可以在钉钉开放平台的API文档中找到对应的API接口来创建审批实例【1月更文挑战第20天】【1月更文挑战第96篇】
48 2
|
3月前
|
JSON API 数据格式
您可以在钉钉开放平台的API文档中找到对应的API接口来创建审批实例
您可以在钉钉开放平台的API文档中找到对应的API接口来创建审批实例【1月更文挑战第9天】【1月更文挑战第41篇】
130 2
钉钉审批实例提交接口 按照文档格式传值后提示value为必填值
我已经按照文档格式填写了value也有值,还是报错"message": "value is mandatory for this action."
|
1月前
|
前端开发 BI API
钉钉多维表目前没有提供具体的API文档供开发者调用
【2月更文挑战第17天】钉钉多维表目前没有提供具体的API文档供开发者调用
36 4
|
3月前
|
项目管理
云效绑定问题之无法关联钉钉文档如何解决
云效绑定是指在阿里云效平台上将多个服务或资源进行关联配置,以实现协同管理和自动化工作流程;本合集旨在为用户提供云效绑定的操作指南和最佳实践,帮助提升项目管理和协作效率。
|
4月前
|
供应链 数据可视化 算法
数智制造无界协同:钉钉与罗克韦尔自动化联合发布食品工业数智化解决方案
“蓝海的商机就在跨界之中,钉钉和罗克韦尔两个领域的融合,就是一个深度的IT和OT的端到端的跨界合作”,罗克韦尔自动化中国区总裁石安谈及双方的合作如是说道。在他看来,数字化真正的落地,很大一部分要回归到场景、生态、趋势,回归到如何有效端到端地赋能企业。
|
7月前
|
API 开发者
钉钉中,如果你想和你的外部团队成员或者组织协同使用同一个微应用
钉钉中,如果你想和你的外部团队成员或者组织协同使用同一个微应用
98 3
|
人工智能 安全 项目管理
祝贺!钉钉文档首次入选Gartner《内容协作工具市场指南》
近日,国际权威咨询机构Gartner正式发布2021年《内容协作工具市场指南(Market Guide for Content Collaboration Tools[1])》研究报告:阿里云钉钉被列为代表性供应商,钉钉文档首次入选该指南。
368 0
祝贺!钉钉文档首次入选Gartner《内容协作工具市场指南》
|
运维 小程序 机器人
钉钉开放平台能力需求场景调研反馈 之 团队协同篇
钉钉开放平台能力需求场景调研反馈 之 团队协同篇,如果有您非常认同与迫切需求的,请与我们随时联系,尽快开放
449 0
钉钉开放平台能力需求场景调研反馈 之 团队协同篇
如何让在线协同更顺畅?钉钉宜搭有了新的解法
随着企业组织规模、业务模式不断发展,单一组织内的协同已"HOLD”不住了!钉钉宜搭推出跨组织协同新功能。
1230 0
如何让在线协同更顺畅?钉钉宜搭有了新的解法

热门文章

最新文章