OT算法比較

OT是operation transform的簡(jiǎn)稱,即操作轉(zhuǎn)化聚假,在協(xié)同編輯領(lǐng)域應(yīng)用的比較多。以協(xié)同編輯為例闰非,OT可以理解為膘格,當(dāng)你在輸入一個(gè)字符的時(shí)候,碰巧其他人也正在輸入字符财松,此時(shí)就產(chǎn)生了沖突闯袒,這時(shí)候需要把你的輸入操作進(jìn)行一次操作轉(zhuǎn)化,以處理你和別人的編輯沖突游岳。

這么說可能有點(diǎn)抽象,我們舉一個(gè)具體的例子其徙。

對(duì)于一段文本 abc
A用戶在字符b后面增加了一個(gè)d字符胚迫,我們把A用戶的操作記為Insert[2,'d'],即在第二個(gè)字符后面增加一個(gè)d字符

B用戶對(duì)于同樣的abc文本唾那,在c字符后面增加了一個(gè)e字符访锻,我們把B用戶的操作記為Insert[3,'e'],即在第三個(gè)字符后面增加一個(gè)e字符

此時(shí)A闹获、B用戶針對(duì)同一段文本都做了操作期犬,產(chǎn)生了沖突。對(duì)于這種簡(jiǎn)單增加的情況避诽,我們預(yù)期的結(jié)果很顯然是abdce龟虎。如果我們不處理沖突,依次執(zhí)行A沙庐、B用戶的操作鲤妥,那么有

abcAabdcBabdec

最后得到的結(jié)果abdec和我們預(yù)期的abdce不相符,所以我們需要對(duì)B用戶的操作做一次操作轉(zhuǎn)化拱雏,記這個(gè)轉(zhuǎn)化函數(shù)為Follow(x,y)棉安,x先執(zhí)行的操作,y后執(zhí)行的操作铸抑,函數(shù)值就是y進(jìn)行了操作轉(zhuǎn)化后的操作值贡耽,那么有

Follow(A,B) = Follow(Insert[2,'d'],Insert[3,'e']) = Insert[4,'e']

此時(shí)操作結(jié)果

abcAabdcFollow(A,B)abdce,符合預(yù)期。

Easysync雙邊OT

以上是站在A用戶的角度蒲赂,A用戶先執(zhí)行了A操作阱冶,再執(zhí)行Follow(A,B)操作,得到預(yù)期的結(jié)果凳宙。

那么對(duì)于B用戶來說熙揍,B用戶先執(zhí)行了B操作,同理這時(shí)候就需要執(zhí)行Follow(B,A)操作氏涩,才能得到預(yù)期的結(jié)果届囚。

Follow(B,A) = Follow(Insert[3,'e'],Insert[2,'d']) = Insert[2,'d']

此時(shí)B用戶的操作結(jié)果

abcBabceFollow(B,A)abdce,符合預(yù)期是尖。

我們把原始的abc的狀態(tài)記為O意系,則有

O A Follow(A,B) === O B Follow(B,A)

這個(gè)公式就是easysync中的沖突處理的核心。這種算法有兩個(gè)特點(diǎn)

  1. 本地應(yīng)用的操作和協(xié)同給別人的操作不相同饺汹。對(duì)于A來說蛔添,B操作協(xié)同過來后,本地應(yīng)用的是Follow(A,B)兜辞,而協(xié)同給B的是Follow(B,A)迎瞧,這也是稱之為雙邊的原因。
  2. Follow函數(shù)需要保證上述等式恒成立
  3. 多沖突處理更加復(fù)雜

基于undo的單邊OT

對(duì)于B用戶來說逸吵,B用戶先執(zhí)行了B操作凶硅,那么其實(shí)我們可以對(duì)B操作先執(zhí)行一次undo,讓B用戶當(dāng)前的文檔狀態(tài)和A用戶的初始狀態(tài)一致扫皱,再執(zhí)行和A用戶同樣的操作序列足绅。

abcBabceundo BabcAabdcFollow(A,B)abdce

用公式表示就是
O A Follow(A,B) === O B undoB A Follow(A,B)

這種算法有以下特點(diǎn)

  1. 本地應(yīng)用的操作和協(xié)同給別人的操作相同。對(duì)于A用戶來說韩脑,均為Follow(A,B)氢妈。這也就是稱之為單邊的原因,只有一種Follow操作在傳遞段多。
  2. 對(duì)于Follow函數(shù)的要求更低首量,無需保證順序Follow的冪等
  3. 需要額外的undo支持,undo操作也需要Follow
  4. 多沖突處理更為簡(jiǎn)單

待續(xù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末进苍,一起剝皮案震驚了整個(gè)濱河市蕾总,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琅捏,老刑警劉巖生百,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柄延,居然都是意外死亡蚀浆,警方通過查閱死者的電腦和手機(jī)缀程,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來市俊,“玉大人杨凑,你說我怎么就攤上這事“诿粒” “怎么了撩满?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绅你。 經(jīng)常有香客問我伺帘,道長(zhǎng),這世上最難降的妖魔是什么忌锯? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任伪嫁,我火速辦了婚禮,結(jié)果婚禮上偶垮,老公的妹妹穿的比我還像新娘张咳。我一直安慰自己,他們只是感情好似舵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布脚猾。 她就那樣靜靜地躺著,像睡著了一般砚哗。 火紅的嫁衣襯著肌膚如雪龙助。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天频祝,我揣著相機(jī)與錄音,去河邊找鬼脆淹。 笑死常空,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盖溺。 我是一名探鬼主播漓糙,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼烘嘱!你這毒婦竟也來了昆禽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蝇庭,失蹤者是張志新(化名)和其女友劉穎醉鳖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哮内,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盗棵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纹因。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喷屋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞭恰,到底是詐尸還是另有隱情屯曹,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布惊畏,位于F島的核電站恶耽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陕截。R本人自食惡果不足惜驳棱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望农曲。 院中可真熱鬧社搅,春花似錦、人聲如沸乳规。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽暮的。三九已至笙以,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冻辩,已是汗流浹背猖腕。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恨闪,地道東北人倘感。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像咙咽,于是被迫代替她去往敵國和親老玛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 9,000評(píng)論 0 13
  • 《裕語言》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 26,843評(píng)論 5 19
  • 《ijs》速成開發(fā)手冊(cè)3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,171評(píng)論 0 7
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評(píng)論 0 5
  • 離開團(tuán)學(xué)工作已經(jīng)大半年了钧敞,和每個(gè)即將畢業(yè)的大學(xué)生一樣蜡豹,我站在了一個(gè)分岔路口,我腳下的康莊大道分成了無數(shù)條路溉苛,而我的...
    焚離閱讀 733評(píng)論 0 1