博客/技术分享
技术分享

daymica CRDT 多端同步原理详解

深入解析 daymica 如何基于 CRDT 算法实现无冲突多端实时同步,离线编辑自动合并的秘密

2026年07月28日朱永胜6 分钟阅读

什么是 CRDT?

CRDT(Conflict-free Replicated Data Type,无冲突复制数据类型)是一种分布式数据结构,允许多个节点并发编辑同一份数据而无需中央协调,最终所有副本都能自动收敛到一致状态。

daymica 的同步架构

daymica 采用基于 CRDT 的同步方案,核心设计如下:

离线优先

所有编辑操作在本地 SQLite 数据库中立即生效,不依赖网络连接。用户可以随时随地记录笔记,无需等待同步。

Changeset 同步

后端仅存储 changeset JSON(编辑增量),不解析笔记内容的语义。每个设备将本地 changeset 推送到后端,后端广播给其他设备。

自动合并

当多台设备同时编辑同一条笔记时,CRDT 算法保证所有操作最终收敛到一致状态,无需用户手动解决冲突。

技术选型

  • **本地存储**:sqflite(移动端 / 桌面端)
  • **同步协议**:WebSocket + HTTP REST
  • **CRDT 实现**:基于 Yjs 的 Flutter 移植版本
  • **后端**:Go + Gin + MySQL(仅存储 changeset JSON)
  • 优势

  • **无冲突**:多端同时编辑不会产生数据丢失
  • **离线可用**:断网时正常使用,联网后自动同步
  • **隐私安全**:后端不解析笔记内容
  • **实时性**:WebSocket 推送实现毫秒级同步延迟
  • daymica 的 CRDT 同步方案让跨设备协作变得简单自然,你可以在手机上开始记录,回到电脑上无缝继续。

    CRDT同步算法daymica架构