2013-02-05 45 views
0

我遇到以下問題。我們需要調用Twitter API發送狀態更新,然後我們必須向本地數據庫寫入記錄,並記錄此Twitter更新發生。與外部/第三方通話的一致性

我的問題是,如果Twitter或數據庫調用失敗,我們如何確保數據的一致性?如果我們更新Twitter和數據庫調用失敗,我們將沒有本地Twitter記錄,如果Twitter調用失敗,但數據庫調用成功,我們將有一個錯誤的本地記錄。

我明白很明顯的第一步,比如只有在Twitter調用成功時才更新數據庫,反之亦然,但這隻能解決一半的問題。

我想這是一個常見的問題,但我試圖尋找相關的信息沒有太多的運氣。

回答

1

斯蒂芬,

你必須在任何情況下SPOF(單點故障) - 這將是你的應用程序。但是,爲了降低失敗風險,您可以將數據轉儲到隊列中(任何類型;甚至Web服務器上的/ tmpfs都可以),並重復嘗試將其寫入數據庫,直到數據庫可用。

如果對Twitter API的調用失敗,您可以將失敗嘗試的記錄記錄到數據庫中。

+0

啊哈!當然,我忘了排隊。謝謝。我擔心必須編寫一個分佈式事務資源的實現,但這會對其進行分類。謝謝。 – sroughley

相關問題