|對話釘閃會操盤者( 二 )
基于上面的需求 , 釘釘實現了一個統一的數據同步服務(SyncService) , 實現了一個適配移動場景下跨端多人的端到端的高效的數據同步協議(推送優先 , 推拉結合) , 為不同的業務場景提供統一的底層支撐 。 數據同步服務的底層存儲是一個在阿里云TableStore基礎上進行了高度定制的NoSQL存儲引擎 , 基于同步服務的特定場景 , 實現了“Timeline模型”、“冷熱分層存儲”、“KV分離”等多項改造 , 極大的提升系統的吞吐能力 , 并大的降低系統的存儲成本
Q:協同辦公在什么時候可能出現一個高并發的情況 , 釘釘如何解決?
傅徐軍:
近幾年疫情等原因導致釘釘經常遇到突發高并發流量的挑戰 。 尤其是疫情剛來的時候 , 流量幾十倍、上百倍增加 , 對系統的可用性挑戰非常大 , 我們現在的架構就是不停的在這樣的實踐中打磨出來 。
在架構上 , 釘釘所有的系統/子系統、應用和存儲都是基于云原生技術 , 保障系統本身的擴展性和彈性 , 具備5分鐘擴容1萬容器的能力;也進行了多地域全球化部署 , 具有全球異地容災的能力 。
同時 , 釘釘是個5億用戶的ToB產品 , 一個問題的影響范圍即便是萬分之一 , 也會有五六百萬企業用戶觸發 。 所以我們確定了堅持“面向失敗設計”的原則 。 一方面 , 所有的核心功能上線都有開關機制 , 發生線上問題的時候就可以把有問題功能立刻關掉 , 有效的減少局部故障的影響半徑 。
同時建立了完善的限流與降級措施 。 當瞬時流量洪峰突然超出預期 , 就會觸發限流和預案 , 我們能很好的保護核心服務不受影響 。
另一方面 , 釘釘內也會經常搞一些破壞性演練 , 人為模擬一些極端場景 , 把應急響應機制做到極致 , 保障在真出現問題時用戶側的使用也最大程度穩定 。
Q:多人實時編輯可能會導致數據沖突 , 釘釘是怎么做的呢?
傅徐軍:
今年春節前夕杭州疫情爆發時 , 阿里巴巴員工發起的返鄉互助表 , 最多的時候有1572人在同一份表格中協作填寫 , 實時共享自己家鄉的返鄉政策 , 幫助同鄉回家過年 。 其中關鍵技術就是如何處理多人編輯時的數據沖突問題 。
解決數據沖突導致時延 , 最關鍵有2個要素:
協同調度算法 , 即什么時候處理沖突 , 在哪里處理沖突 , 如何處理沖突 。 學術界有一些解決方案 , 比如COT GOT等協同算法 , 但是之前工業界一直沒有特別好的工程實現 。 釘釘文檔研發團隊基于相關領域的一些理論模型 , 打磨了一套適合自己的協同調度算法 , 保障網絡正常情況下不會發生延遲 。
二是沖突解決的效率 , 也就是當發生沖突時候 , 沖突解決算法(OT算法)的執行效率 。 釘釘在這塊也做了很多算法優化 , 保障了算法在的高并發情況下的執行效率 。
Q:您在之前的分享中提到:“釘釘文檔的區塊化技術 , 已經實現了塊引用的同步能力 , 做到一次修改 , 多文更新 。 ”這里的區塊化技術是什么?主要解決什么問題?
傅徐軍:一篇文檔往往由很多的信息、觀點、數據組成 。 當多篇文檔共用這些知識碎片的時候 , 維護他們的一致性往往比較困難 。 有時候僅是修改一個字、一個符號 , 也都要逐篇依次修改 , 非常不方便 。 那么對于這些知識碎片 , 有沒有更加高效的整理和應用方式?
釘釘文檔正在內測的區塊化技術 , 實現了塊引用的同步能力 , 我們稱它為“引用塊” 。 僅需要一次輕巧的拷貝動作 , 便可以實現多篇文檔內的引用同步 , 做到一次修改 , 多文更新 。
它還讓知識的創作更尊重原創 , 每一個被引用的知識碎片 , 都應該能夠被溯源 。 在引用塊中 , 一鍵溯源到原文檔 , 進一步了解知識源頭的上下文 , 形成知識的點、線、面全方位連接 。
相關經驗推薦
- |低壓配電系統TT系統為何會變成TN系統?原因是什么?漲知識了
- 神舟|神舟筆記本召開發布會?網友的關注點不是產品
- VR|未來元宇宙中的廣告會是什么形態?
- 小米科技|小米雖好但別亂選,這三款公認“高配低價”,用幾年也不會卡!
- 高通驍龍|驍龍870和天璣1200在2022時代會不會落伍?
- |學會這幾招小技巧,讓您的OPPO手機續航更持久
- 微信|微信不刪聊天記錄會被封號?官方回應來了
- 華為Nova|華為Mate50Max不會輸,無開孔7英寸大屏+5500mAh,開發新方向了
- 安卓|Android為什么永久了會卡?那格式化還原后還會卡嗎?
- 富士康|富士康真的會從中國搬到越南去嗎?
