2012-04-11 84 views
0

我有一個應用程序,我正在使用套接字編程,有這個(圖像)方案。 Inter-server Communication 客戶端數量將嘗試連接廣播服務器。 現在我在這裏通過LVS(負載平衡器)來管理負載。如圖所示,假設有200個客戶端希望登錄進行廣播,他們將作爲100個用戶分佈在服務器1上,另外100個用戶分佈在服務器2上。客戶端將通過TCP連接連接到服務器。在Java中的TCP服務器之間的相互通信

現在我在服務器端維護用戶信息arraylist將存儲在堆內存,現在的問題是,如果客戶希望廣播給所有登錄的用戶,但該特定的客戶端登錄到服務器1。客戶端將無法從服務器2廣播另外100個用戶。因爲這兩個服務器都不知道彼此的狀態。

請建議我通過任何你想要的方式解決這個情況。

+0

發送消息到其他服務器,讓他們發送消息給他們的用戶? – zapl 2012-04-11 11:34:58

回答

0

讓兩臺服務器相互登錄並安排廣播轉發到其他服務器,然後轉發到該服務器的客戶端。

+1

如果我們將添加更多服務器,則此邏輯可能會失敗。 – Java 2012-04-11 11:38:55

+0

爲什麼?如果每個服務器都可以訪問所有服務器的列表,並登錄到除本身之外的其他服務器,那麼這個應該可以工作,不是嗎?即使有128臺服務器,每個用於服務器間通信的服務器仍然只有128個客戶端連接 - 足夠用於「真正」客戶端。或者,您可以菊花鏈式連接服務器通信,以便每個服務器只使用一個客戶端連接。這些服務器位於本地LAN上,對嗎?您可以使用UDP廣播或TCP多播來分發廣播。也許你的服務器插在同一塊背板上並且有高速總線?我不知道.. – 2012-04-11 11:50:31

+0

或創建一個主服務器,所有服務器登錄和分配請求連接的客戶端 - 服務器 – zapl 2012-04-11 11:51:16