釘釘文檔協(xié)同編輯背后的核心技術(shù)原理
有人說,互聯(lián)網(wǎng)給人類社會帶來最深層次的變革是改變了人與人協(xié)作的方式,將信息傳播的成本大幅降低。身在互聯(lián)網(wǎng)行業(yè)之中,研究信息傳播的方式方法,是我們的日常功課。
信息傳播的方式,按照時序效果,可分為同步和異步兩類。
信息的同步傳播
信息被生產(chǎn)的同時被消費。
話出我之口,入你之耳,過了此時此刻,想還原此情此景,麻煩得很,大多時候也不需要。同步場景下,信息的生產(chǎn)往往不需要深思熟慮,而是通過你來我往的討論,澄清,逐步勾勒出話題的全貌。表達(dá)的時效性較之方式的豐富性更為重要。典型的場景如即時通訊,語音通話,視頻會議等。簡單明了,沒有太多的格式。
信息的異步傳播
信息的生產(chǎn)和消費異步發(fā)生。
典型的場景如論壇,博客,文檔庫,郵件。我在寫這篇文檔的時候,你們看不到。你們看的時候,我早已寫完。異步場景下,信息的生產(chǎn)者會謹(jǐn)慎的推敲措辭,以確保自己的意思被準(zhǔn)確的傳達(dá)。表達(dá)方式的豐富性很重要,除了文本以外,段落結(jié)構(gòu),列表,示意圖,表格都有利于信息的準(zhǔn)確表達(dá)。
文檔的信息表達(dá)方式
傳統(tǒng)文檔的信息表達(dá)方式是典型的異步傳播。上述的幾類異步場景都可見文檔的影子。
然而2016年3月,Google上線的Google Docs顛覆了這個結(jié)論,這個改變世界的功能就是“多人實時編輯”,或者稱作“協(xié)同編輯”。引入了協(xié)同編輯的在線文檔,就像一塊兒在線的白板,使得身處世界兩端的人可以在上面共同迭代一個內(nèi)容,通過你來我往的信息反饋,實現(xiàn)信息的同步傳播。而編輯的結(jié)果又將沉淀下來,成為信息異步傳播的載體。
兼具信息同步與異步傳播的能力,協(xié)同文檔的誕生,無疑給基于互聯(lián)網(wǎng)的溝通協(xié)作帶來了一場革命。
這場革命爆發(fā)于2006年,而它的起源,早在17年前。
1989年,代表著“文檔”的Microsoft Office第一次在Macintosh系統(tǒng)上與世人見面,而代表著“協(xié)同”的操作變換算法也第一次見諸論文。
Microsoft Office 中所周知,而操作變換算法又是什么呢?
數(shù)據(jù)一致性問題與操作變換算法
對協(xié)同編輯最簡單的理解類似于群聊天,每個人在自己的電腦上修改文檔,把操作群發(fā)給其他打開這篇文檔的用戶。當(dāng)收到來自其他用戶的操作時,重放這個操作。比如下面這個例子:
但美好的設(shè)想,難免遭遇現(xiàn)實的挑戰(zhàn)。因為網(wǎng)絡(luò)存在延遲,來自不同用戶的操作有可能在各端有不同的執(zhí)行順序。相同的操作,不同的執(zhí)行順序,會產(chǎn)生不同的結(jié)果。比如:
數(shù)據(jù)一致性是協(xié)同編輯的最低要求。當(dāng)然,我們可以強制操作按照到達(dá)服務(wù)器的時間來排序,但這種排序會破壞用戶編輯當(dāng)時的上下文,產(chǎn)生不符合用戶預(yù)期的編輯效果。
操作變換算法就在這里被引入了。
操作變換算法不是一個算法,而是對一類算法的統(tǒng)稱。它們針對不同的文檔數(shù)據(jù)模型,解決一個相同的問題:
基于同一個狀態(tài)的兩個操作,如何調(diào)整一個操作的參數(shù),使得它可以在另一個操作之后執(zhí)行,表達(dá)同樣的用戶意圖。
上面的例子加上了操作變換,就可以解決數(shù)據(jù)一致性的問題,如下圖所示:
當(dāng)然,協(xié)同文檔和操作變換算法的水還是很深的。本文只是對基本原理做個簡單的介紹。想要了解更多,可以參考以下文獻(xiàn):
Operational Transformation Frequently Asked Questions and Answers
南洋理工大學(xué)教授Chengzheng Sun的Survey,覆蓋了OT領(lǐng)域絕大多數(shù)研究成果
Google Wave Operational Transformation
G-Suite協(xié)同引擎的協(xié)議白皮書
Achieving convergence,causality-preservation, and intention-preservation in real-time cooperative editing systems
GOT算法及一維數(shù)據(jù)操作變換算法論文
Context-based Operational Transformation in Distributed Collaborative Editing Systems
COT算法論文
結(jié)語
2006年3月,Google Docs上線,多人實時協(xié)同編輯的功能驚艷世界,讓穩(wěn)坐辦公套件頭把交椅的 Microsoft Office 也感到虎軀一震。Office奮起直追,但同等功能的 Office 365 上線已是五年之后。協(xié)同編輯究竟是怎樣的一座堅城,讓兵強馬壯的微軟止步了五年之久?做一款協(xié)同編輯器需要哪些核心技術(shù)?協(xié)同編輯技術(shù)對于普通的前端應(yīng)用開發(fā)會有怎樣的啟發(fā)? 在 D2 ,與大家分享更多技術(shù)原理與實踐。