xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

Web 在线文档多人协同编辑器实现原理 All In One

Web 在线文档多人协同编辑器实现原理 All In One

多人协同编辑实现原理

Operational Transformation Algorithm / OT 算法

OT: Operational Transformation / 操作转换

操作转换( OT ) 是一种支持高级协作软件系统中一系列协作功能的技术。OT最初是为了纯文本文档协作编辑中的一致性维护并发控制而发明的。其功能得到扩展,其应用程序扩展到包括组撤消、锁定、冲突解决、操作通知和压缩、组感知、HTML/XML 和树结构文档编辑、协作办公生产力工具、应用程序共享和协作计算机-辅助媒体设计工具。[1] 2009 年,OT 被采用为Apache Wave协作功能背后的核心技术和谷歌文档

  1. 历史
    操作转换由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。

  2. 系统架构
    利用操作转换的协作系统通常使用复制文档存储,其中每个客户都有自己的文档副本;客户端以无锁非阻塞的方式操作它们的本地副本,然后将更改传播到其余客户端;这确保了客户端在其他高延迟环境(如 Internet)中的高响应性。当客户端接收到从另一个客户端传播的更改时,它通常会在执行更改之前转换这些更改;转换确保依赖于应用程序的一致性标准(不变量) 由所有站点维护。这种操作模式导致系统特别适合在高延迟环境(如网络)中实现协作功能,如同步文档编辑

  3. 基础知识
    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

image

https://drive.googleblog.com/2010/09/whats-different-about-new-google-docs.html

image

image

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

https://medium.com/coinmonks/operational-transformations-as-an-algorithm-for-automatic-conflict-resolution-3bf8920ea447

https://hackernoon.com/operational-transformation-the-real-time-collaborative-editing-algorithm-bf8756683f66

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, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2022-02-10 01:20  xgqfrms  阅读(1717)  评论(2编辑  收藏  举报