《feday2025-告别 Loading -- 用同步引擎重构即时体验 - Slidev.pdf》由会员分享,可在线阅读,更多相关《feday2025-告别 Loading -- 用同步引擎重构即时体验 - Slidev.pdf(37页珍藏版)》请在三个皮匠报告上搜索。
1、告别 用同步引擎重构即时体验Dec 20th,2025 FEDAYhttps:/feday2025.wzhu.dev协同文档体验配方任何操作都会立即生效无需等待向服务端发起请求无需 Loading即时反馈操作在多个客户端之间同步冲突操作自动处理数据最终一致协同编辑离线时仍然可用重启时还原未同步操作连接恢复时重新同步离线支持 如何将这样的体验带到更多的场景当中?胡文召wzhudevEvan Hu前 Univer 架构师协同 Office SDK/自研基于 OT 的同步引擎前 豆包文档、飞书表格、企微文档 前端工程师系统架构/性能优化长期关注编辑器和同步引擎技术Evan Hu两种不同的应用Clie
2、ntClientClientClientClientClientClientUIUIUIUIUIUIUIServerServerServerServerServerServerServerAPIAPIAPIAPIAPIAPIAPIreq/resreq/resreq/resreq/resreq/resreq/resreq/resDBDBDBDBDBDBDB前端不持有数据,数据保存在服务端前端仅持有状态,刷新即丢失通过网络加载数据并执行操作操作统一由后端执行,保证全局一致受网络延迟影响,无网络时不可用乐观更新仅是一种优化手段 传统应用ClientClientClientClientClientCl
3、ientClientUIUIUIUIUIUIUIServerServerServerServerServerServerServerSync ServerSync ServerSync ServerSync ServerSync ServerSync ServerSync ServerDBDBDBDBDBDBDBDBDBDBDBDBDBDBSync ClientSync ClientSync ClientSync ClientSync ClientSync ClientSync Clientsyncsyncsyncsyncsyncsyncsync前端持有数据的一个副本前端也需持久化数据,刷新后
4、从本地加载在本地数据库上直接修改数据由同步引擎处理冲突,保持全局一致无网络也可使用乐观更新是范式的天然属性 协同文档应用同步引擎 Sync Engines同步引擎需要做哪些事情?:表示数据与操作数据加载:客户端初始化时如何从服务端加载数据:当操作发生时,如何在服务端和客户端之间同步数据:应对并发操作引发的冲突权限控制:控制用户对数据的访问范围数据存储:SQL/NoSQL数据传输:基于何种网络进行数据交换数据建模增量同步冲突处理OT&CRDTs在文档协作中表现出色,但未必适用于更普遍的场景。允许你用想得到的最直观的方式进行建模!操作定义成:在什么位置进行什么操作由中心服务器决定操作顺序发生冲突时
5、,变更操作的位置以及内容操作转换(OT)string=HELLO FEDAY;op1=type:insert,pos:5,char:!;op2=type:delete,pos:6;op2_prime=transform(op1,op2);/op2_prime-type:delete,pos:7;/-HELLO!FEDAY让操作的前提始终成立!大量运用数据结构设计技巧无需中心服务器决定操作顺序理论上不会冲突!无冲突复制数据类型(CRDTs)string=H,E_1,L_1,L_2,O,F,E_2,D,A,Y;op1=type:insert,left:O,right:,char:!;op2=typ
6、e:delete,char:;/-H,E_1,L_1,L_2,O,!,/+mark_deleted,F,E_2,D,A,Y;Reserve IntentionReserve IntentionReserve IntentionReserve IntentionReserve IntentionReserve IntentionReserve IntentionPerformancePerformancePerformancePerformancePerformancePerformancePerformanceSimpleSimpleSimpleSimpleSimpleSimpleSimple