2012-07-30 160 views
1

我有一個使用nio的java聊天應用程序它現在工作正常。我想用同一個portno將我的聊天服務器分成兩部分。java中的服務器到服務器通信 - 負載均衡

簡單:

  1. 我想我的單服務器分割成兩個或三個。當客戶端
    登錄時,它首先連接到第一臺服務器。
  2. 第一臺服務器有10個客戶端時,第11個客戶端必須 連接到第二臺服務器。和相同的機制第三 服務器
  3. 這三臺服務器必須具有相同的端口號。
  4. 這些服務器必須具有內部通信。如果客戶端1是 登錄到服務器1。獲取的任何細節服務器1應該是 已知的服務器2服務器3
  5. 在服務器1的客戶端必須與客戶這 在服務器2和服務器3

我怎樣才能讓這些可能是有與此相關的任何實例進行通信。我GOOGLE了它,但找不到任何合適的解決方案。

請指導我解決這些問題。

非常感謝。

+1

關於你的第四個需求,我想你需要一個共享數據庫或類似的東西,這樣所有的服務器都是同步的。 – Sikorski 2012-07-30 04:20:20

+0

@Sikorski你的意思是一個溫室表,當客戶端登錄的細節將賴於該表。如果是這樣的話,它將可用於所有服務器,並在客戶端註銷時被刪除。如果在某個時間5k客戶端登錄到服務器,它可能需要很多時間(如果我錯了,我會糾正)。 – Amith 2012-07-30 04:31:03

+0

這不是api問題,它是一個設計問題。任何時候,你都可以調查其他工具,比如用於配置管理的Apache ZooKeeper,或者利用Message Queue等。 – qrtt1 2012-07-30 05:21:49

回答

2

您可以使用負載平衡器根據服務器實例健康狀況重定向請求,您可以按服務器健康參數公開服務器健康參數。服務器具有的連接。對於服務器間通信,我建議使用apache activemq和共享數據庫也是個好主意