【发布时间】:2021-12-30 10:25:47
【问题描述】:
我正在开发主要在离线状态下使用的应用程序。用户离线生成数据,然后我安排一个定期工作人员在设备在线时将数据(发布)发送到后端服务器
我的发布如下(这是用于用户注册)
{ “事件”:“dbase_mob”, "data":"1,0,Emmanuel,Mtali,1930,Male,0719XX,", "device_id":"34e01af81782", “publish_at”:1637311191, “app_version”:“2.4.1” }
- 事件 - 描述事件数据库、事务等的类型
- data - 携带实际payload第一个字段是pub_id,其他携带附加信息
- device_id - 赋予设备的唯一标识符
- publish_at - 创建发布时间
- app_version - :)
发布获得增量值作为标识符'pub_id'
问题
- 我需要在服务器和应用程序之间同步增量值 (pub_id)。 为什么?该应用程序可以从设备中删除!安装新应用需要发布才能从最后一点继续
- 在后端服务上处理发布的任何失败都会导致难以调试客户端应用程序上的问题。 (没有出错的机会)
- 可能会发生边缘情况,即发布可以从 100 .. 102 跳过顺序造成后端将其解释为缺少发布的间隙!
我做了什么? 关于丢失发布的问题,我已经实现了另一个工作人员,它从服务器请求丢失的发布并发布它们。这仍然很混乱:-例如,如果创建用户的发布由于任何原因失败并且该特定用户的事务发布到达服务器,则会产生数据依赖冲突
问题 如何摆脱 pub_id 的额外同步 如何确保没有丢失的发布
好奇
Instagram 等应用如何高效地发布离线数据
【问题讨论】:
标签: android kotlin web-applications architecture android-workmanager