2015-02-10 78 views
0

我需要每分鐘通過一個「不可靠」互聯網連接到基於雲的數據庫(來自不同的10個系統全部同時運行)插入5K記錄。互聯網連接是10 MB,我的應用程序需要忍受每月一次的停電長達1天。我的應用程序正在亞洲的一個工廠運行,其IT基礎設施/支持較差,這是不可靠性和長期宕機的根源。通過不可靠網絡的實時SQL插入

你可以請推薦如何做到這一點,而不會丟失數據?

解決方案,我認爲:

  1. 保持刀片,每一個插入失敗把它放在排隊時間的內存(或簡單的文本文件)隊列以後再進行審判。我不喜歡這樣,因爲我不得不重新設計我的應用程序,讓它有一個並行循環來處理這個問題,從而不會拖延主循環的時間。

  2. 使用消息代理/隊列(如RabbitMQ)。我不喜歡這樣做,因爲將SQL語句放入代理很容易,我寧願不必編寫額外的服務來輪詢代理,執行sql語句,處理錯誤等。我知道Mule ESB儘管如此,但它看起來很複雜。

  3. 數據庫複製。實際上我需要N:1(合併)複製,我相信在除MS SQL Server之外的任何主要數據庫上都不支持複製,因爲複雜性我不想處理。在這種停機之後,我還可能需要重新啓動數據庫,並在執行任何更多的寫入操作之前等待它趕上來,這兩種寫入都是不合需要的。

其他解決方案?謝謝。

+1

如果您的網絡連接不可靠,那麼複製如何解決任何問題?不管怎樣,你的數據必須通過廢話鏈接到主站。 – 2015-02-10 16:04:22

+0

我澄清了我的意思是不可靠的。 – Charlie 2015-02-10 18:33:01

回答

0

我決定在本地實例和雲實例之間使用消息代理(RabbitMQ),即replicated。然後,我將使用隊列中的JSON數據並將其存儲到數據庫中(JSON - > Object - > ORM - > DB)。

雖然這確實增加了相當大的複雜性,但事實證明,我需要與另一個應用程序進行雙向通信,所以它是值得的。