Web 在线文档多人协同编辑器实现原理 All In One
Web 在线文档多人协同编辑器实现原理 All In One
多人协同编辑
实现原理
Operational Transformation Algorithm / OT 算法
OT: Operational Transformation
/ 操作转换
操作转换( OT ) 是一种支持高级协作
软件系统中一系列协作功能
的技术。OT最初是为了纯文本文档协作编辑中的一致性维护
和并发控制
而发明的。其功能得到扩展,其应用程序扩展到包括组撤消、锁定、冲突解决、操作通知和压缩、组感知、HTML/XML 和树结构文档编辑、协作办公生产力工具、应用程序共享和协作计算机-辅助媒体设计工具。[1] 2009 年
,OT 被采用为Apache Wave
协作功能背后的核心技术和谷歌文档
。
-
历史
操作转换由C. Ellis和 S. Gibbs [2]于1989 年
在 GROVE(GRoup Outline Viewing Edit)系统中率先提出
。几年后,确定了一些正确性问题并提出了几种方法[3] [4] [5] [ 6]是为解决这些问题而独立提出的,随后又由一群敬业的研究人员继续努力扩展和改进 OT。1998 年,协同编辑
特别兴趣小组[7]成立,以促进 CE 和 OT 研究人员之间的交流与合作。从那时起,SIGCE 与主要的 CSCW(计算机支持的协同工作)一起举办年度 CE 研讨会) 会议,例如 ACM、CSCW、GROUP 和 ECSCW。 -
系统架构
利用操作转换的协作系统
通常使用复制文档存储
,其中每个客户都有自己的文档副本
;客户端以无锁
、非阻塞
的方式操作它们的本地副本
,然后将更改传播
到其余客户端;这确保了客户端在其他高延迟环境
(如 Internet)中的高响应性
。当客户端接收到从另一个客户端传播的更改时,它通常会在执行更改之前转换
这些更改;转换确保依赖于应用程序的一致性标准
(不变量) 由所有站点维护。这种操作模式导致系统特别适合在高延迟环境
(如网络)中实现协作功能,如同步文档编辑
。 -
基础知识
OT背后的基本思想
OT 的基本思想可以通过使用一个简单的文本编辑场景来说明,如下所示。给定一个文本文档,其中包含在两个协作站点上复制的字符串“abc”;和两个并发操作:
O1 = Insert[0, "x"](在位置“0”处插入字符“x”)
O2 = Delete[2, "c"] (删除位置“2”处的字符“c”)
分别由协作站点 1 和 2 的两个用户生成。假设这两个操作按照O1和O2的顺序执行(在站点1)。执行O1后,文档变成“xabc”。要在O1之后执行O2,O2必须针对O1进行变换,成为:O2' = Delete[3, "c"],由于O1插入了一个字符“x”,其位置参数加一。对“xabc”执行O2'删除正确的字符“c”,文档变成“xab”。但是,如果 O2 在没有转换的情况下执行,它会错误地删除字符“b”而不是“c”。
...
https://en.wikipedia.org/wiki/Operational_transformation
demos
Google Docs
https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html
https://drive.googleblog.com/search/label/Google Drive Blog
https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs_21.html
https://drive.googleblog.com/2014/12/docs-short-story-challenge.html
blogs
https://www.modb.pro/db/145420
https://www.dazhuanlan.com/rehsur/topics/1457296
http://objcer.com/2018/03/05/SharePen-Operational-Transformation/
https://www.zditect.com/article/10149861.html
协同编辑
冲突处理算法之OT 算法
https://aruseito.github.io/article/23c3b7d4/
Visualization of OT with a central server
https://operational-transformation.github.io/index.html
https://github.com/operational-transformation
https://github.com/Operational-Transformation/ot.js
(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!
refs
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/15877598.html
未经授权禁止转载,违者必究!