2013-10-13 35 views
1

對於大學任務,我正在使用套接字*構建聯網的Java應用程序。我的架構必須具有可擴展性,所以我希望有多臺服務器可供我的客戶端與之通信。在Java中使用多個服務器

我的問題是,客戶如何知道所有可用的服務器?我首先想到的是客戶端保留一個(硬編碼)服務器IP地址列表並從列表中選擇。這種情況下的最佳做法是什麼?

*我們不能使用RMI。

+0

看起來你想實現你自己的[cluster](http://en.wikipedia.org/wiki/Cluster_(computing))。 –

+0

您可能正在尋找JNDI和RMI stuffs.Read JNDI http://stackoverflow.com/questions/1350816/what-is-the-purpose-of-jndi – UDPLover

回答

0

假設您的網絡供應商的成本太高,而您決定切換。繁榮去你的IP地址。我建議明智地使用DNS,特別是循環DNS。

使用中央跟蹤器似乎是一個好主意,但它本身必須具有可擴展性,類似於Google App Engine,否則它將成爲一個瓶頸。

只需爲給定名稱創建多個A記錄,並且您的客戶在解析時將隨機選擇一個記錄。

如果您無法使用DNS,IP列表可能會有所幫助 - 只需做一處更改即可。所有服務器都會傳播更新後的列表副本,如果無法訪問服務器,則會嘗試另一個服務器,直到建立連接(並且同樣更新列表)。當發現列表與現有列表不同時,客戶的列表會更新。

0

您可以使用RMI的東西,製作主服務器和輔助服務器。

輔助服務器可能會不斷地輪詢主服務器,當主服務器出現故障時,輔助服務器可能會在命名服務上進行註冊。當小學回來的時候,它會註冊回中學......就這樣。

關於客戶端了解服務器,客戶端可以要求服務器使用RMI作爲標識。

+0

對不起,我應該提到我們可能不會在此項目中使用RMI ,這部分是套接字編程的練習。 –