什么是 Sync?

2013 年作者加入 Dropbox 团队,是早期用户且很喜欢其产品,Dropbox 解决了文件在不同电脑和人之间复制的问题,创始人 Drew Houston 称其“Just Works”。在 Dropbox 的七年中,作者和联合创始人深入研究如何让大规模分布式状态管理系统“Just Works”,最终体现为“sync”,即存储后端和用户设备管理方式的重建。
2021 年,作者从 Dropbox 学到的经验出发,构建了 Convex 平台,提出更坚实的应用开发同步定义及同步平台清单:

  • 集成实时状态管理:与应用状态模型紧密集成,自动且及时传播后端更新。
  • 网络和传输抽象:内部处理网络故障,确保写操作一次成功,维护读路径游标策略。
  • 健壮的冲突和一致性处理:提供冲突模型,避免数据丢失,不影响数据库原子性。
  • 端到端缓存管理:足够高效,利用缓存信息自动缓存,避免开发者手动处理。
    通过将这些要求映射到 Dropbox 等平台进行压力测试:
  • Dropbox:状态模型是文件系统,利用网络传播变化,避免文件数据覆盖,本地文件系统是缓存。
  • Firestore:提供与应用状态管理集成的库,事务自动重试,支持离线持久化,提供多文档事务。
  • Replicache:将后端状态建模为 JavaScript/TypeScript 对象,处理网络故障,提供因果+排序语义,自动缓存。
  • Convex:提供客户端库,跟踪索引读集实现实时,利用确定性突变处理网络故障,提供多种一致性模型,自动缓存。
    此外还有很多其他同步平台和库,它们在一致性、同步引擎与全平台、中心化与去中心化等方面有不同设计和权衡。“local-first”更像是一种工作方式,同步系统易于支持离线缓存。目前同步系统仍在发展,最佳实践未形成,但同步解决方案是应用开发的有前途方向,未来十年多数应用可能基于同步平台构建。
阅读 21
0 条评论