OT是支持协作软件系统的一种广泛使用的技术。
OT通常使用副本文档储存,每个客户端都拥有对文档的副本。客户端在本地副本以无锁非堵塞方式操作,并将改变传递到其他客户端。当客户端收到其他客户端传播的改变之后,通过转换应用更改,从而保证一致性
-
初始文档为"abc",并存在客户端A、B
-
A发起操作O1=insert[0, “x”],在位置0插入字符x
B发起操作O2=delete[2, “c”],在位置2删除字符c
在没有OT之前,加入O1发生在O2之前,那么执行O1之后字符串变为"xabc",执行O2之后由于位置2从原来的c变为了b,所以最终字符串会变为"xac",这并不符合预期
而利用OT的协作系统通常使用复制文档存储,其中每个客户端都有自己的文档副本。客户端以无锁、非阻塞的方式操作其本地副本,然后将更改传播到其他客户端。这确保了客户机在Internet等其他高延迟环境中的高响应性。
当客户端接收到从另一个客户端传播的更改时,它通常在执行更改之前对更改进行转换。转换确保所有副本都维护一致性标准(不变量)。这种操作模式产生的系统特别适合在web等高延迟环境中实现协作功能,例如同时编辑文档。
一致性模型——CCI
收敛性
所有文档副本在所有操作执行完成之后都要保持一致
意图保持
确保一个操作作用于所有文档副本的状态需与操作意图一致。操作意图定义为在操作者在其副本执行效果
因果关系保持
操作必须根据自然因果顺序执行
结构
-
transformation control algorithm:
决定什么操作被转换,并以什么顺序转换
-
transformation properties and conditions:
定义算法和函数之间关系,并验证算法和函数是否正确
-
transformation functions:
负责根据操作的影响执行实际的转换。转换函数取决于操作的类型和参数,以及OT系统的数据和操作模型。

OT方法
以字符层面的OT方法为例
-
T({insert c1, p1}, {insert c2, p2}):
// 例如插入b到位置4,应用插入a到位置3,那么转换之后就是插入a到位置3,因为插入b到位置4并不影响插入a到位置3 // 如果是插入b到位置1,应用插入a到位置3,那么转换之后就是插入a到位置4,因为插入b之后,原来3的位置变成了4

文章探讨了运营转型(OT)技术在协作软件中的应用,强调了其如何通过副本文档、无锁操作和转换机制确保一致性。内容涉及一致性模型(CCI)、转换函数设计、操作执行流程、撤销和压缩策略,以及在分布式系统中的挑战和复杂性。
最低0.47元/天 解锁文章
8079





