这是一个更普遍的问题,因此请考虑我对以下问题的抽象。
我目前正在开发一个应用程序,它通过公共API与远程服务器连接。所讨论的api确实提供了基于时间戳获取数据的机制(例如,#34;获取自xxx&#34以来发生的所有变化;)。由于数据量非常大,我将本地副本保存在数据库中,并每小时检查远程端的更改。
虽然这使得应用程序可以抵御网络问题(维护中的远程服务器,网络中断等)并使员工能够继续使用该应用程序,但是存在一个巨大的问题:
有问题的api还提供写访问权限。例如。我的应用程序可以指示远程服务器创建一个新对象。目前我通过api发送请求,一旦成功,也在我的本地数据库中创建对象。它最终将通过每小时数据提取传播,我的应用程序(理想情况下)看到不需要对本地数据库进行任何更改。
现在当api无法访问时,我在我的数据库中创建对象,并缓存请求,直到再次访问api。这有很多问题:
有人可能建议永远不要在本地创建对象,并让它们仅通过每小时数据同步传播。遗憾的是,这不是一个选择。如果api无法访问,则可能需要数小时。并且员工可以继续使用该应用程序(当所述对象不在本地存在时,他们不能这样做。)
所以底线: 如何处理这样的情况,其中api可能无法访问,但某些请求必须在本地缓存并在api再次可达时重复。特别是如何处理那些不可预测的请求失败的情况。