2013-10-02 95 views
1

我有一個項目可以開展工作,我需要構建一些客戶端 - 服務器應用程序,以便在Java中發送消息和其他內容。該項目的一個目標是處理故障轉移。當客戶端連接到服務器並且服務器死亡時,它會自動連接到備份服務器。我想要做的不是必需的,但我想實現負載平衡器,以便多個客戶端連接到首選服務器。負載均衡器,套接字和java

客戶端和服務器之間的連接必須使用TCP套接字。

這是網絡架構的示意圖: enter image description here

  1. 客戶端連接到負載平衡器(UDP或TCP,我不知道這種情況的最好 之一)。

  2. 負載均衡決定應由哪個服務器是客戶端連接(最空單)

  3. 客戶端創建與指定服務器的TCP連接

我的問題是:

負載平衡器應如何工作以使客戶端連接到特定服務器?將服務器(ip,port)的信息發送到客戶端,客戶端用新的ip創建另一個套接字? (藍線)。

或者有沒有辦法讓負載均衡器連接這兩個端點(服務器#1 < - >客戶端#1),而不必將信息發送到客戶端?

PS:我在問你,因爲它似乎沒有必要爲每個客戶必須建立2個插槽,以獲得連接到服務器(第一插槽黑線,第二座藍線)

+0

此設計決定取決於您的要求。平衡器路由消息和數據可能會使他成爲瓶頸並阻礙可擴展性。 – Fildor

+0

我希望負載平衡器不像代理服務器那樣工作,因此每個客戶端都直接連接到特定的服務器 – andrepcg

回答

1

我認爲客戶端後,向負載平衡器發送信息,如果負載平衡器將該信息發送給它所決定的服務器而不是發送回客戶端和客戶端再次連接到服務器,則該信息是最好的

+0

取決於應用程序......如果平衡器必須通過其網絡堆棧路由大量數據,那麼它可能更多適合只提供一個地址。 – Fildor

+0

@KaushikSivakumar所以你說在負載均衡器決定使用哪個服務器之後,該服務器將連接到客戶端(而不是客戶端 - >服務器)? – andrepcg