2010-05-25 175 views
4

我寫了一個簡單的服務器應用程序,它將在幾臺機器上運行。負載均衡器 - 如何爲自定義應用程序編寫一個負載均衡器?

我的問題是一般網絡負載平衡器是如何工作的?

我聽說過循環法和其他算法,但是我沒有得到答案的是該過程是如何進行的?以套接字的形式。

客戶端連接到負載均衡器機器之一,要求提供「免費連接」服務器並只需連接到它?
這是我能想到的最簡單的方式。
..或者,它是否使用負載均衡器作爲代理(這意味着所有NB必須始終連接到應用程序服務器,並通過它們傳輸數據)?

這是一個更普遍的問題。你會如何做到這一點?

謝謝大家!

回答

7

有幾種不同的方式來平衡應用程序。有些是位於路由器和服務器之間的物理設備;有些是基於一些代碼運行在每個負載平衡設備上的軟件。

微軟內置於Windows中的負載平衡是基於所有軟件的。這是相當不錯,並易於設置。

但是,我會介紹物理路線。

這裏有幾種算法,但主要的算法是循環法,可選擇「粘性」會話。在這種情況下,粘滯意味着負載均衡器將嘗試保留客戶端的歷史並將來自同一客戶端的請求轉發到同一臺計算機。這意味着負載平衡器需要保留一個客戶端列表以及它指向這些客戶端的位置。根據緩存大小的不同,客戶端可能會脫離列表並且將來可能會將其轉發到其他服務器。

循環賽是一個非常簡單的想法。對於每個請求都會將其發送到列表中的下一個服務器。更復雜的算法可能會考慮到特定服務器的請求數量以及這些請求需要多長時間;然後嘗試重新平衡新的請求以支持更快的服務器。雖然這部分很複雜。

+0

看起來我已經錯過了你的答案......無論如何,經過這麼多時間(大約3.5個月!) - 我想感謝你花時間回覆。你確實用「粘性」選項給我提供了新聞(: – Poni 2010-09-12 01:46:33