2014-03-14 87 views
1

我正在研究一個系統,該系統具有可以操縱它的RESTful Web服務(該服務允許所有CURD操作)以及顯示系統數據的Web客戶端(大部分客戶端使用jQuery編寫)。在標準操作場景中,有一個主服務器和至少一個我係統的備份服務器,因此至少有兩個RESTful Web服務。如何在客戶端實現REST服務器容錯?

所以我的問題是,如果我的主服務器崩潰,我怎麼能讓一個客戶端正在看主服務器,現在正在查看備份服務器沒有任何用戶操作?

+0

您可以在客戶端上實現一些循環機制。但最終可能會更好地解決服務器端的問題(高可用性,負載平衡等) – TGlatzer

+0

但是當服務器端的解決方案完全崩潰並且將請求路由到備份和查看器客戶端可以是任何計算機(有或沒有我的系統)。 – user2579277

回答

1

你最好的選擇是讓客戶端做絕對沒有什麼來處理服務器故障。這不是客戶的責任,也不應該是。像代理服務器和負載平衡器這樣的服務器端技術最適合處理服務器故障。

最常見的方法是擺脫「一個主服務器」的思維方式,而是創建一個服務器集羣,每個服務器都可以處理您的任何REST請求。如果您的REST請求是無狀態(應該是),並且可以路由到羣集中的任意服務器,那麼可以通過在羣集前使用負載均衡器來處理服務器的故障。

如果負載平衡器檢測到服務器已經死了,它只是將它拉出旋轉。這種模式還有助於擴展性,因爲您可以通過在該層上旋轉更多服務器並使其自行註冊到負載平衡器來擴展REST服務器層。

您也可以使用DNS來隔離客戶端與服務器故障。只需將DNS記錄點更改爲當前活動的服務器,並在主服務器關閉時對其進行修改。但是TTL必須非常低才能讓這項技術在任何合理的時間內工作。 DNS更好地用於處理完整的數據中心故障,而不是節點故障,但它是一個選項,雖然相當嚴重。

+0

由於空間限制,我只能有一個主服務器和一個備份服務器,兩個服務器都是獨立的,可以一起工作。我想要一個完整的主服務器崩潰的解決方案。 – user2579277

+0

DNS,負載均衡器或我提到的任何其他技術都適用於您的情況。 –

相關問題