2010-06-15 51 views
1

實現Java Web應用程序高可用性的工具有哪些?爲java web應用程序實現高可用性

+1

我想一些關於您的系統域的更多信息以及關於高可用性在這種情況下意味着什麼的更好定義將會有所幫助。你需要五個正常運行時間嗎?或者你只是在工作時間內尋找99%的正常運行時間?這是什麼樣的應用程序?你說web應用程序,所以我假設你有用戶通過瀏覽器進行交互,但是使用特性是什麼?你有幾十個用戶還是幾十萬用戶?應用程序是否大量使用會話狀態?沒有更多的信息,你的問題很難回答。 – 2010-06-15 15:30:58

回答

2

使用的主要方法不是一種工具。它被稱爲「高質量軟件」 - 即您必須正確處理所有資源(包括同步)。

Apache Hadoop是您可以用來分配和縮放您的系統的東西。但那是巨大的應用程序。

Load balancing也是要看的東西。

+1

同意。最好的HA是通過設計完成的。 – Nate 2010-06-15 14:24:21

1

也許您正在尋找集羣解決方案? 有Terracotta的JVM集羣的OpenSource版本

+0

赤土陶器確實是一件好事(+1) – Bozho 2010-06-15 14:29:55

+0

集羣可以用大多數開源服務器完成:例如JBoss提供集羣,Tomcat也是如此。 http://docs.jboss.org/jbossas/jboss4guide/r4/html/cluster.chapt.html 這只是解決方案的一部分:在應用程序中具有高可用性需要每個層中的HA來消除單點故障 – 2010-07-05 18:53:42

1

通過應用程序的所有層的冗餘來消除單點故障。你可以問自己「如果X失敗會發生什麼」的問題,然後找到緩解這種風險的方法。

0

要開始,你需要:

  1. 可在多個網絡服務器上同時運行的Web應用程序。
  2. 負載均衡前端,可以檢測到失敗的Web服務器並將流量路由到其他活動實例。這部分不需要用Java。您需要找到負載平衡器和Web應用程序容器之間的集成點。

完成初始設置之後,您需要找到其他可能的故障點,如數據庫服務器,負載平衡服務器本身,DNS服務器等,然後嘗試添加冗餘和故障切換這些層也是。

你也應該考慮硬件解決方案,如RAID,SAN等

1

至少有兩個主要方面,你將不得不應對:

  1. 操作
  2. 架構,設計,代碼

這些元素都是很大的問題。例如,有幾個專門用於這些站點的好站點(分別參見serverfault.com和stackoverflow.com)。

操作注意事項包括:擴展部署,包括負載平衡,災難恢復,CDN(如果可能)和監控。持續的部署考慮也很重要。

架構 - >代碼考慮因素衆多而且重要。從解決方案的體系結構到可維護性的代碼佈局,以及最難實現的:正確性。我最好的建議是:聘請有經驗的人。如果失敗,請從有經驗的人那裏閱讀書籍等。另外,在Java世界中,對這個重要事實進行討論非常重要:它很可能是之前寫的。這是個好消息!許多非常非常聰明的人花費了無數個小時爲你編寫代碼,並且已經在[雅加達] Apache,谷歌代碼,Codehaus,Sourceforge和衆多其他開源網站等地方免費提供。你對你的問題做的研究越多,你會發現這些球員出現的越多。一個重要的技能是確定哪些可用的軟件適合您。

人們用特定的技術選擇了其他答案,其中很多都是很好的建議,但是這一切都歸結爲你正在試圖解決的實際問題,只有你知道那是什麼(嗯,問題沒有無論如何,我們都不會告訴我們:D)。