与外部/第三方呼叫保持一致

时间:2013-02-05 14:05:08

标签: database rest twitter architecture

我遇到了以下问题。我们需要调用Twitter API来发送状态更新,然后我们必须将记录写入本地数据库,记录此Twitter更新发生的情况。

我的问题是,如果Twitter或数据库调用失败,我们如何确保数据一致性?如果我们更新Twitter并且数据库调用失败,我们将没有Twitter调用的本地记录,如果Twitter调用失败但数据库调用成功,我们将有错误的本地记录。

我理解明显的第一步,例如只有在Twitter调用成功时才更新数据库,反之亦然,但这只解决了问题的一半。

我认为这是一个常见的问题,但我一直在尝试搜索相关信息而没有太多运气。

1 个答案:

答案 0 :(得分:1)

斯蒂芬

在任何情况下,你都会有一个SPOF(单点故障) - 它将是你的应用程序。但是,为了降低失败的风险,您可以将数据转储到队列中(任何类型;甚至Web服务器上的/ tmpfs也足够),并重复尝试将其写入DB,直到它可用为止。

如果对Twitter API的调用失败,您很可能只会将失败的尝试记录放入数据库。