1

我正在尋找一個在grails應用程序中自動數據庫故障轉移的解決方案。我有兩個數據庫駐留在通過WAN連接的兩個不同站點上。在站點A上,我們有數據庫01,它是數據庫駐留在同一站點上的應用程序的主數據庫,它是應用程序1,而它將作爲應用程序2的其他站點上的應用程序的輔助數據庫處理,反之亦然。Grails支持來處理數據源失敗

請參考下面的圖片瞭解更多詳情:

Desired Database Replication and Failover Design

因此,根據上述設計:部署在站點A

  • 申請應在站點A主要使用數據庫
  • 如果以某種方式無法訪問站點A的數據庫,則在站點A部署的應用程序應該使用站點B的數據庫(作爲輔助數據庫)
  • 一旦在網站數據庫中出現,部署在站點A的應用程序應該重新開始使用數據庫的站點A(作爲主數據庫)

以同樣的方式,它應該在站點B應用工作。對於站點B的應用程序,站點B的數據庫應主要(作爲主數據庫)和站點B的數據庫(作爲輔助數據庫)使用。

注意:當相應站點上的數據庫出現時,該站點(在其上部署該站點)的應用程序應該再次使用數據庫以避免在WAN上進行不必要的通信。

Grails是否提供了這樣的支持,我們可以指定兩個數據源之一作爲主數據源,另一個數據源作爲輔助數據源(只在primary不可訪問的情況下使用)。

並且如果沒有這樣的機制,那麼我們需要不斷檢查主數據源是否運行正常,否則請切換到次要數據源,這看起來不合適,而且不想要這個選項。

回答

0

真正的答案是不讓你的代碼處理這個問題,而是實現一個負載平衡器,它將相應地路由流量。儘管您可以在自己的代碼中(理論上)執行此操作,但無論您提出什麼解決方案,都遠遠達不到實際負載均衡器能夠處理故障轉移的能力。

要回答你的問題,Grails沒有任何解決這個問題的方法。應該在應用程序之外解決這個問題,而不是您的網絡/基礎架構拓撲設計/實現的一部分。

相關問題