自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)在線文檔時,這個技術(shù)難點你解決了嗎?

網(wǎng)絡(luò)
多人協(xié)作,即多人同時對同一份文檔進行編輯,用戶無需刷新即可看到其他人所做的修改。Google Docs、騰訊文檔、石墨文檔、Quip 等都具備多人協(xié)作功能。從技術(shù)角度來看,在線、數(shù)據(jù)處理和多人協(xié)作是開發(fā)在線文檔系統(tǒng)最關(guān)鍵的技術(shù)指標(biāo)。在線和數(shù)據(jù)處理均已有較成熟的技術(shù)方案,實現(xiàn)難度不大。多人協(xié)作才是影響在線文檔系統(tǒng)易用性的核心要素。

“時勢造英雄”,是亙古不變的真理。在當(dāng)前的時代背景下,在線文檔可以稱得上是這樣的“英雄” 。

新一代信息技術(shù)的迅猛發(fā)展,深刻影響著我們的工作生活方式。近年,遠(yuǎn)程辦公徹底顛覆了傳統(tǒng)的企業(yè)管理模式,在線文檔作為遠(yuǎn)程辦公軟件的重要組成部分也同樣迎來了高速發(fā)展。

如今,即便市場中已經(jīng)有了騰訊文檔、石墨文檔、飛書、語雀和靈犀文檔等在線辦公產(chǎn)品,但在線文檔本身仍面臨功能、技術(shù)、數(shù)據(jù)安全、服務(wù)、生態(tài)等多方面的考驗,如數(shù)據(jù)處理效率、多人協(xié)作、二次擴展、系統(tǒng)集成、框架兼容性問題等。

從技術(shù)角度來看,在線、數(shù)據(jù)處理和多人協(xié)作是開發(fā)在線文檔系統(tǒng)最關(guān)鍵的技術(shù)指標(biāo)。不過,在線和數(shù)據(jù)處理均已有較成熟的技術(shù)方案,實現(xiàn)難度不大。因此,多人協(xié)作才是影響在線文檔系統(tǒng)易用性的核心要素。

什么是多人協(xié)作?

多人協(xié)作,即多人同時對同一份文檔進行編輯,用戶無需刷新即可看到其他人所做的修改。Google Docs、騰訊文檔、石墨文檔、Quip 等都具備多人協(xié)作功能。

那么,多人協(xié)作是如何實現(xiàn)的呢?

任何信息如要做到多人實時編輯與展現(xiàn),需要實現(xiàn)以下三步:

  • 操作化
  • 可傳輸
  • 可還原

這三步,類似于編解碼過程:首先將信息轉(zhuǎn)換為一組操作集合,然后將操作通過網(wǎng)絡(luò)傳輸給其他終端,最后在本地終端將操作還原為信息。

這些步驟看起來簡單,但每一步都涉及很多細(xì)節(jié)處理,比如:操作化過程中,在對信息進行分割與組合時,如何確保信息的所有變化都可以分解為操作的集合?如何令操作覆蓋信息的所有變化?如何決定分割的顆粒度?

可傳輸需要考慮以下幾點:

1、傳輸內(nèi)容

  • 原始文本

Ⅰ.清晰

Ⅱ.冗余

  • 壓縮技術(shù)

Ⅰ.邏輯壓縮

Ⅱ.協(xié)議壓縮

Ⅲ.手動壓縮

2、網(wǎng)絡(luò)協(xié)議

  • Socket

Ⅰ.TCP

Ⅱ.UDP

  • HTTP
  • WebSocket

3、QoS(Quality of Service,服務(wù)質(zhì)量)

  • 快速失敗
  • 自動回滾
  • 自動重連
  • 自動恢復(fù)

可還原主要涉及:

1、絕對操作的還原

  • 控制體積
  • 合理的提示

2、相對操作的還原

  • 嚴(yán)格的順序性
  • 從源頭保障順序性
  • 順序性的補救

3、本地操作的還原

  • 過濾收到的操作集合
  • 從源頭細(xì)化操作顆粒
  • 本地保存本地執(zhí)行

4、無入侵的還原

  • 定義入侵
  • 排除入侵
  • 千人千面

在了解了多人協(xié)作的基本原理之后,我們來研究一下它的技術(shù)難點。

多人協(xié)作有哪些技術(shù)難點?

多人協(xié)作,本質(zhì)是分布式系統(tǒng)中的 Multiple Leader Replication,即任何一個用戶端都可被視為 Data Leader,這些 Leader 之間同步數(shù)據(jù)必然會遇到亂序和沖突問題。這就是多人協(xié)作的主要難點。

對于 Multiple Leader Replication 的沖突問題,有如下解決方法:

  • 避免產(chǎn)生沖突,即不讓多個用戶同時編輯同一處地方。該解決方法簡單粗暴,使用時需具體查看產(chǎn)品形態(tài)是否適合該方案。
  • 把沖突暴露給用戶,讓用戶自己解決。目前大多數(shù)專業(yè)的版本控制軟件采用了該方法,但它不適用于擁有大量非專業(yè)用戶的產(chǎn)品,如在線文檔。
  • 給寫入操作打上全局 index,可以是時間戳或序列號,該 index 必須是全局的且遞增。在任何沖突的地方,都選擇 index 較高的那個寫入。該方法的優(yōu)勢在于沖突的解決是完全自動化的,不需要用戶參與。缺點就是如果遇到同步間隔很長的情況,會丟失很多用戶的輸入。

在實際開發(fā)在線文檔系統(tǒng)的過程中,Operational Transformation(OT)算法技術(shù)是解決多人協(xié)作沖突問題較為常用的方法。這項技術(shù)誕生于 1989 年,其原理是將文本內(nèi)容統(tǒng)一為以下 3 種類型的操作方式,目的是為用戶提供最終一致性實現(xiàn):

  • retain(n):保持 n 個字符
  • insert(str):插入字符 str
  • delete(str):刪除字符 str

在完成上述操作后,OT 算法將正在并發(fā)的操作合并轉(zhuǎn)換,以形成新的操作流,并應(yīng)用在歷史版本上,實現(xiàn)無鎖化同步編輯。

(OT 算法技術(shù)中的操作轉(zhuǎn)換過程)

OT 算法背后的思想其實非常簡單,就是在特定的條件下進行相應(yīng)的操作轉(zhuǎn)換,因此,OT 主要用于文本,通常很復(fù)雜且不可擴展。對于富文本編輯等更高級的結(jié)構(gòu),OT 用復(fù)雜性換來了對用戶預(yù)期的實現(xiàn),不會給系統(tǒng)性能造成過多的負(fù)面影響。因此,如今大多數(shù)實時協(xié)同編輯邏輯都是基于 OT 算法來實現(xiàn)的。

正因如此,OT 算法成為了解決當(dāng)前協(xié)同沖突處理最主要的方案之一。然而,即便它已經(jīng)誕生了 30 余年,控制算法相關(guān)的理論早已百花齊放,卻仍無法很好地處理分布式實現(xiàn)問題,且開發(fā)一個支持多人實時協(xié)同編輯的系統(tǒng)也遠(yuǎn)比想象中的更加復(fù)雜。

實現(xiàn)多人協(xié)作的突破口在哪里?

由此可見,實現(xiàn)一款復(fù)雜的多人實時協(xié)同編輯系統(tǒng)僅僅依靠算法邏輯是不夠的,還需要根據(jù)不同的業(yè)務(wù)場景(如項目看板、純文本編輯、undo/redo 等),投入大量的研發(fā)成本和時間,并在不斷摸索中,尋找到產(chǎn)品性能和易用性之間的平衡點。

那么,是否存在一條更為簡單快捷的解決方法呢?

通過對市面上多款在線協(xié)同辦公產(chǎn)品的示例代碼進行分析,我們發(fā)現(xiàn)這些產(chǎn)品除了運用到前文提到的 OT 算法之外,基本都會借助第三方表格組件。通過嵌入組件,在線文檔系統(tǒng)很好地支持了多人協(xié)作的最終一致性,給用戶提供了更加易用且多樣化的體驗效果,在減少研發(fā)成本的同時,實現(xiàn)了更高密度的計算復(fù)雜度,大幅提高了多人協(xié)作效率。

用于多人協(xié)作的表格組件需要具備哪些功能?

首先,是對于表格的功能支持。

由于表格的數(shù)值敏感性遠(yuǎn)高于其他數(shù)據(jù)類型,用作多人協(xié)作文檔時可以實現(xiàn)更為細(xì)膩的操作顆粒度和計算復(fù)雜度。因此,所選用的組件必須具備強大的表格功能支持,不僅要在數(shù)據(jù)錄入、數(shù)據(jù)填報等方面展現(xiàn)出強大的能力,還要具備各類統(tǒng)計、計算匯總、透視分析,以及圖形化手段。

其次,需要具備開放的 API 接口,滿足更多定制化選項。

這類組件需要提供豐富的事件和應(yīng)用程序接口,用于控制單元格狀態(tài)、表單保護、數(shù)據(jù)傳輸?shù)冗壿?,對于多人協(xié)作而言,還需限制用戶對同一處內(nèi)容進行編輯,以及插入時間戳(序列化)等功能。

出于好奇,筆者下載試用了網(wǎng)上多款表格組件,發(fā)現(xiàn)能滿足上述需求的屈指可數(shù),而 SpreadJS 無疑是最為亮眼的一款。這款組件主打可嵌入系統(tǒng)的“在線 Excel”,純前端的體系架構(gòu)可以很容易的嵌入系統(tǒng)開發(fā),而無需考慮與原生系統(tǒng)的兼容性。值得一提的是,SpreadJS 采用了稀疏數(shù)組 (Sparse Array) 作為存儲模型,相較于傳統(tǒng)的鏈?zhǔn)酱鎯驍?shù)組存儲,稀疏數(shù)組只會對非空數(shù)據(jù)進行存儲,而不需要對空數(shù)據(jù)開辟額外的內(nèi)存空間。

除了節(jié)省內(nèi)存空間外,對于表格這類布局松散的數(shù)據(jù)類型,稀疏數(shù)組也更易于構(gòu)建基于行索引的數(shù)據(jù)字典,以便隨時替換或恢復(fù)整個存儲結(jié)構(gòu)中的任何一個級別的節(jié)點,借助這一特性,SpreadJS 在多人協(xié)同中實現(xiàn)了高效的數(shù)據(jù)回滾和數(shù)據(jù)恢復(fù) (Redo/Undo)。


(SpreadJS 的稀疏矩陣存儲模型 (Sparse Array))

結(jié)語

企業(yè)協(xié)同辦公的需求將伴隨數(shù)字化轉(zhuǎn)型的深化而日益劇增。未來企業(yè)協(xié)同辦公將朝著產(chǎn)品易用性提升、可集成與二次擴展能力、與原系統(tǒng)/業(yè)務(wù)的高度契合、滿足最終用戶的使用習(xí)慣等方向發(fā)展。

如何打破技術(shù)壁壘,開發(fā)出既能滿足不同場景下的用戶需求,又具備市場競爭力和差異化的在線文檔產(chǎn)品,是 SaaS 企業(yè)和系統(tǒng)供應(yīng)商們首要考慮的問題。

“好風(fēng)憑借力,送我上青云。”在如今競爭激烈的在線文檔領(lǐng)域,除了耗費大量精力自主研發(fā),學(xué)會借力打力滿足不同的業(yè)務(wù)場景和客戶需求,或許也是一個不錯的選擇。

責(zé)任編輯:梁菲 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2021-09-15 07:33:33

Java開發(fā)在線

2021-09-08 15:43:03

在線寫作協(xié)作文檔辦公軟件

2023-10-10 11:04:11

Rust難點內(nèi)存

2022-03-05 17:56:29

桌面應(yīng)用開發(fā)

2021-05-12 13:38:47

云計算

2020-04-22 14:27:44

前端工具開發(fā)

2021-04-16 16:21:02

鴻蒙HarmonyOS應(yīng)用開發(fā)

2015-08-10 11:21:47

在線資源游戲開發(fā)

2009-07-01 11:14:59

思科辦公軟件

2020-06-05 15:25:05

工具代碼瀏覽器

2011-03-09 13:17:27

Web

2015-08-10 14:45:50

游戲開發(fā)在線資源

2013-03-31 14:10:55

敏捷開發(fā)

2009-07-03 11:07:37

JSP Web開發(fā)

2009-05-25 10:18:29

PHPLAMPGLAMMP

2021-10-31 20:07:49

Windows驅(qū)動開發(fā)

2021-04-11 11:24:22

Python工具數(shù)據(jù)庫

2009-11-02 13:53:02

無線接入網(wǎng)

2022-10-17 08:17:47

位掩碼Java變量
點贊
收藏

51CTO技術(shù)棧公眾號