【问题标题】:Architecture to publish offline data from android app to backend将离线数据从 android 应用程序发布到后端的架构
【发布时间】: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


    【解决方案1】:

    离线生成的数据可以在不同的表中,也可以设置一个标志来确定是否同步,并在成功推送到服务器时更新。

    但这仍然是一个非常棘手的话题,有很多事情需要处理,比如您的应用会安装在多个设备上吗?如果是这样,那么连续增量 id 可能无法正常工作,就好像 2 个本地设备具有相同的 id 并推送到服务您将如何合并它们?

    【讨论】:

      猜你喜欢
      • 2018-02-21
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多