"桌面端正在播放的歌曲,手机端点一下就能接力"、"桌面端收藏的歌词设置,手机端立刻同步"、"电脑复制的文字,手机上立即可粘贴"——这些流畅体验的背后,是汽水音乐桌面端六端云同步架构的工程结晶。本文将带你深入理解这套系统的设计哲学与技术实现。
六端是什么
"六端"指的是汽水音乐桌面端生态覆盖的六个客户端:
- Windows 桌面客户端
- macOS 桌面客户端
- Linux 桌面客户端
- iOS 移动客户端
- Android 移动客户端
- Web 网页客户端
这六个客户端共享同一套账号体系、数据模型、同步协议,让用户的音乐生活真正实现"无边界"。
六端云同步的本质不是简单地把数据复制六份,而是构建一个一致的、收敛的、实时的数据流。
账号体系设计
账号体系是六端同步的基础。桌面端采用统一 UID 模型:
- UID:用户唯一标识,跨平台一致
- 设备 Token:每个客户端登录时生成独立的设备 Token
- 设备列表:账号关联的所有设备状态实时维护
- 权限分级:不同设备可独立授予细粒度权限
登录态管理
登录态采用 JWT 双 Token 设计:
- Access Token:短期凭证,2 小时过期
- Refresh Token:长期凭证,30 天过期
这种设计兼顾了安全性与用户体验。即便桌面端长时间未使用,下次打开时无需重新登录。
数据模型
六端共享的数据可以分为五大类:
1. 用户画像数据
神经推荐 v3.0 的核心输入数据,包括:
- 播放历史(90 天滚动窗口)
- 收藏歌单
- 偏好标签
- 反馈信号(跳过、点赞、收藏)
2. 内容数据
用户创作的内容数据,包括:
- 自建歌单
- 自选桌面歌词设置
- 主题偏好
- 跨设备剪贴板
3. 实时播放状态
支持"接力播放"的实时状态,包括:
- 当前播放歌曲
- 播放进度(精确到秒)
- 播放队列
- 播放模式(单曲/列表/随机)
4. 设置数据
桌面端 6.0 引入的"设置同步"能力,包括:
- 音频输出配置
- 桌面歌词样式
- 主题配色
- 快捷键自定义
5. 订阅与会员
跨端共享的订阅权益数据,包括:
- 会员等级
- 有效期
- 已开通的增值服务
- 优惠券
同步协议
六端同步基于自研的 QSync 协议实现:
协议设计原则
- 最终一致性:所有端最终都能看到相同状态
- 事件溯源:每次状态变化都有事件记录
- 增量同步:只同步变化部分,避免流量浪费
- 冲突解决:基于时间戳 + 设备优先级的自动合并
协议栈
QSync 协议栈分为四层:
- 传输层:基于 WebSocket 长连接 + MQTT 心跳
- 编码层:Protobuf 高效序列化
- 同步层:基于 CRDT 的冲突解决算法
- 业务层:领域模型的数据映射
冲突解决机制
多设备同时修改同一数据时,必须有清晰的冲突解决策略。QSync 采用 CRDT(Conflict-free Replicated Data Types)算法:
策略一:基于时间戳的 Last-Write-Wins
对于"歌曲收藏"、"音量调节"等单值数据,采用最新时间戳优先策略。
策略二:基于设备优先级的合并
对于"播放队列"等多值数据,采用设备优先级合并策略。桌面端通常具有更高优先级。
策略三:用户手动选择
对于无法自动解决的冲突(例如同时编辑歌单),桌面端会提示用户手动选择保留哪一份。
端到端加密
同步数据涉及用户隐私,桌面端 6.0 引入了端到端加密能力:
- 敏感数据(如剪贴板内容)在客户端加密后传输
- 加密密钥由用户密码派生,云端无法解密
- 支持多设备密钥协商,确保跨设备可解密
实际场景的同步策略
场景 1:接力播放
手机端播放《晴天》进度到 1:30,在桌面端打开客户端后,立即弹出"接力播放"入口,点击后桌面端从 1:30 继续播放。
实现:实时播放状态通过 QSync 实时推送,桌面端订阅本账号的播放事件,触发接力提示。
场景 2:桌面歌词状态同步
桌面端调节桌面歌词为"律动模式 + 蓝色主题",手机端下次打开时桌面歌词自动同步。
实现:设置数据变更触发云端更新事件,所有登录设备同步接收。
场景 3:跨端剪贴板
桌面端复制一段文字,手机端打开剪贴板面板直接粘贴。
实现:剪贴板变更事件通过端到端加密传输,对端接收后写入系统剪贴板。
同步性能指标
桌面端六端同步的性能指标:
- 实时同步延迟:200ms 以内
- 增量同步耗时:平均 50ms
- 全量同步耗时(首次登录):1.2 秒
- 支持并发设备数:16 台同时在线
- 同步成功率:99.99%
未来演进方向
下一阶段,桌面端计划:
- 引入 实时协作歌单:多用户共同编辑同一歌单
- 推出 家庭共享账号:主账号可邀请家庭成员共享订阅
- 开放 跨账号迁移工具:支持其他平台歌单一键迁移
- 优化 弱网同步:让 2G 网络下也能完成增量同步
六端云同步是桌面端体验的基石,它让音乐不再受限于单一设备,而是成为用户跨场景生活的自然延伸。
