不可变架构下客户端通信与数据同步技术解析
1. 历史模型资源获取与冲突解决
在获取历史模型中的资源时,需要执行多个属性查询。具体操作步骤如下:
1. 按照之前描述的方式从 URL 生成起始实体事实。
2. 对所有打算返回的属性运行查询。
3. 如果任何查询返回多个结果,应用冲突解决函数来确定所需结果。
4. 不要保存冲突解决的结果,因为 GET 请求应该是安全的。
需要注意的是,从历史模型生成的 REST API 会牺牲一些不可变架构的优势,它的幂等性与传统 REST 实现相同,且不具备端到端不可变架构的交换性保证,但对于尚未采用这些策略的合作伙伴来说会更熟悉。
2. 偶尔连接的客户端
偶尔连接的客户端是与不可变架构集成的常见场景,支持离线的移动或 Web 客户端。这类客户端具有以下特点:
- 即使与后端 API 的连接中断,仍能与用户交互。
- 拥有自己的存储、出站消息队列,并能参与冲突检测和解决。
- 通常采用离线优先设计,用户看到的数据从本地存储加载,用户操作先本地存储并加入队列,本地存储与服务器历史的同步在后台进行,不阻塞用户操作。
偶尔连接的客户端数量远多于服务器,客户端离开生态系统时服务器不会收到通知,因此同步协议将存储负担完全放在客户端。
3. 客户端队列
用户与客户端应用交互时会生成事实,这些事实会存储在本地历史图的子集中,并添加到出站队列。用户在事实存储和消息入队后即可继续与应用交互,无需等待消息发送到服务器。
不同类型的客户端应用存储方式不同:
| 客户端类型 | 存储方式
超级会员免费看
订阅专栏 解锁全文

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



