偶尔连接客户端的数据同步与通信策略
在当今的移动和网络应用场景中,偶尔连接的客户端与服务器之间的数据同步和通信是一个重要的问题。本文将详细介绍相关的技术和策略,包括客户端队列、书签、子集选择、避免冗余下载以及 Outbox 模式等。
1. 离线优先的应用设计
许多移动和 Web 应用采用离线优先的设计理念。用户看到的数据从本地存储加载,而非通过 API 调用。用户的每个操作都会本地存储并加入队列,而非直接发送到服务器。本地存储与服务器历史记录的同步在后台进行,用户能看到同步进度,但不会被其阻塞。
偶尔连接的客户端数量通常远多于服务器。客户端上线可能只是通过用户的下载或书签。它们可能被长期使用,也可能只用一次就被弃用。当客户端离开生态系统时,服务器不会收到通知,因此服务器跟踪客户端的元信息是浪费资源的,同步协议将存储负担完全放在客户端。
2. 客户端队列
当用户与客户端应用交互时,会生成事实(facts)。这些事实会存储在历史图的本地子集中,同时添加到出站队列。事实存储和消息入队后,用户即可继续与应用交互,无需等待消息发送到服务器。
- 移动应用 :可以使用本地的 SQLite、Core Data 或其他数据库来存储事实和队列。出站队列可以是一个指向事实存储的外键表。
- 渐进式 Web 应用(PWA) :可以使用 IndexedDB 存储事实和队列。IndexedDB 是一组键值对集合,每种类型的事实可使用一个集合,集合的键是事实的哈希值。PWA 还有一个出站队列集合,使用单调递增的键进行索引。 </
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



