2010-09-22 53 views
3

我們正在計劃一個新的API服務器,它將主要提供JSON響應和一個RESTful接口。我們關心的是規模和可用性。我們是否在正確的軌道上使用帶有Jetty的Restlet(或其他連接器)?可擴展API服務器,帶Restlet?

我們問的一個問題是,在Java世界裏有什麼像Phusion Passenger?例如,用於保持服務器實例保持健康狀態的預建解決方案?

+0

應該在ServerFault上 – mattbasta 2010-09-22 23:39:02

回答

9

您的問題實際上並不像Restlet那麼多,因爲它是關於設計高可擴展性,高可用性的站點。我們發現Restlet具有正確的系統架構的擴展能力。

一般來說要:

  • 運行Web服務器的機器的集羣,不只是一個。
  • 請確保您的應用程序是無共享,即,如果可能的話,沒有應用程序狀態存儲在您的Web服務器中。
  • 使用負載平衡器將請求傳播到最少加載的Web服務器。
  • 確保您的JSON響應是可緩存的
  • 在您網站的邊界添加一個HTTP 反向代理緩存(例如Squid)。隨着網站與客戶之間的緩存升溫,大部分入站流量將由他們處理,而不是您的Web服務器。
  • 將您的客戶端代碼寫入重試請求失敗。這樣,如果一個Web服務器死亡,下一個請求將被平衡到一臺倖存的機器。
  • 當然要自動運行您的網站帶來了崩潰的Web服務器等(這是也許是更好被問及ServerFault.com的一部分。)

REST是一種架構風格,是這種設置的理想選擇。

由於@matt提到您需要注意原始性能,但通常您首要關心的應該是獲得可擴展的高可用性體系結構。

一些這方面的良好來源是:

,尤其是:

Overstock.com運行一個高比例的網站和makes heavy use of Restlet來做到這一點。

2

可伸縮性和性能最終將取決於應用程序處理這些請求的設計方式,算法,是否有效訪問數據庫,如何緩存數據等等,而不是選擇servlet容器或框架。