我有一個Java應用程序,我需要它高可用性。 我在想FastMPJ,就像在不同的PC上運行多個實例一樣。應用程序每分鐘都會檢查主實例是否正在運行,如果沒有,則另一個將運行而不是它。Java應用程序和高可用性
我想問問它是否是一個好的解決方案,或者如果有更好的解決方案。
我有一個Java應用程序,我需要它高可用性。 我在想FastMPJ,就像在不同的PC上運行多個實例一樣。應用程序每分鐘都會檢查主實例是否正在運行,如果沒有,則另一個將運行而不是它。Java應用程序和高可用性
我想問問它是否是一個好的解決方案,或者如果有更好的解決方案。
更通用的解決方案是使用負載均衡系統,即:您有N個具有相同權限的應用程序(如果可能的話,在不同硬件上)運行,那麼前面的冗餘負載均衡器會選擇一個這些數據基於每個請求/任務的實際負載。
該解決方案的好處顯而易見,硬件實際上被使用並且不會坐在某處空閒,等待0.01%的情況下跳入。然後實例經常被測試,並且會報告錯誤當它們發生時(比如錯誤的硬件),並且你阻止:「噢......備份甚至不能工作」。最重要的是,您可以自適應地平衡機器之間的負載。
在我的一個項目中,在實現交換時,我們使用Apache Qpid來實現高可用性,而我的經驗非常令人滿意。它的尺度也非常好。我一直在運行最多32個節點集羣的應用程序。請在這裏找到更多的細節,讓我知道如果u需要進一步infromation: http://qpid.apache.org/releases/qpid-0.18/books/AMQP-Messaging-Broker-Java-Book/html/High-Availability.html
希望它能幫助:)
人們通常忘記了,還必須有從應用程序到數據庫的高可用性,以及。根據我的經驗,數據訪問層是大部分應用程序瓶頸發生的地方。所以確保你有一個很好的應用程序感知數據庫負載平衡器。 Oracle有一個可靠的解決方案,但僅適用於Oracle數據庫。 PostGres有一個開源版本。 Heimdall Data是一個商業解決方案。
因此,該應用程序就像一臺服務器,但不使用現有的服務器基礎設施? – Thomas
如果我猜對了,如果客戶端存在,那麼總是有一個正在運行的服務器。但是這意味着它必須有某種監聽器來接收傳入的檢查。那麼爲什麼不讓它在主服務器上運行呢?是否有多個「主服務器」? – Dropout
請看類似的問題鏈接http://stackoverflow.com/questions/11904299/heartbeat-mechanism-in-java –