我想知道如果我有2個服務器,一個是「主」服務器,另一個就在那裏(兩者都使用相同的後端代碼)。我應該如何處理,如果主服務器崩潰,我希望我的客戶端用戶的其他服務器,使他們不必重新啓動他們的程序或類似的東西。如果服務器崩潰,應該如何處理?
我已經閱讀了關於使用欺負算法,但我在如何處理我的客戶已在第一主服務器上使用的套接字和數據(信息),並在我的第二個使用它失去了服務器。
我想知道如果我有2個服務器,一個是「主」服務器,另一個就在那裏(兩者都使用相同的後端代碼)。我應該如何處理,如果主服務器崩潰,我希望我的客戶端用戶的其他服務器,使他們不必重新啓動他們的程序或類似的東西。如果服務器崩潰,應該如何處理?
我已經閱讀了關於使用欺負算法,但我在如何處理我的客戶已在第一主服務器上使用的套接字和數據(信息),並在我的第二個使用它失去了服務器。
這聽起來像你想實現「故障轉移」在應用程序級別(例如,在Java /插座代碼)。我會阻止你這樣做。
這裏有一些替代方案,可能是多更穩健:
實現集羣的Web服務器和/或集羣數據庫服務器:
實現代理:
高可用性爲您的SQL數據庫
最後,回答您關於在應用層實現故障恢復原來的問題,這裏有幾個例子:
附錄:
謝謝你的所有鏈接。事實證明,我的問題沒有被「精確地」詢問。我只是要把這個投票作爲答案,因爲它看起來像很多信息,這將幫助我解決我的問題@ paulsm4 – Bojje
首先,如果服務器崩潰,那麼對於駐留在服務器上的數據(當然,服務器恢復運行之前)無能爲力。所以,如果你不想在發生故障時丟失數據,你應該使用分佈式(NoSQL的?)數據存儲(如卡桑德拉,Redis的,DynamoDB等),因爲他們已經在一個可擴展的方式解決了這個問題。其次,如果你的問題是'如果A失敗時我的請求從A到B',你可以用一個簡單的(例如基於NodeJS的)代理服務器來服務器A和B.最初,代理將「前進」的所有客戶端請求A.當A崩潰,代理檢測(當它看到大概是所有轉發的請求已超時在過去的X秒),並切換到服務器B. 然而,會出現一個小的時間窗口(取決於x的已配置的值),其中客戶端請求將繼續失敗。
如何設置羣集中的服務器? –
你是什麼意思?我對網絡編程有點新鮮 – Bojje
我想知道更多關於如何將數據從一臺服務器重定向到另一臺服務器@LuiggiMendoza – Bojje