2012-03-30 59 views
1

我在面試中被問及真正困惑於下面問題的答案。負載平衡器爲熱門網站工作

如果說某個站點每秒獲得500個請求,並且它們處理來解決大量命中的機制是通過Load Balancer。

在上面的例子中,所有的請求都會先到達負載均衡器,然後負載平衡器負責將請求傳遞給實際的服務器,它將給出響應。

因此Load Balancer是所有請求的入口點,它也有一定的容量來處理請求? 那麼Load Balancer可以接受多少請求?如果它接受了一些限制,那麼系統在這種情況下的工作方式是什麼?

對不起,如果我的問題沒有意義,請解釋一下嗎?

謝謝。

+0

你在問爲什麼負載平衡器允許處理更多流量,或者如何擴展負載均衡器的容量? – mellamokb 2012-03-30 16:01:53

回答

2

負載均衡器通常運行基於HTTP的輕量級HTTP服務器(例如NginX),該服務器爲每個傳入請求維護與後端服務器的連接。

一個流行的設置是:

NginX 
|  \ 
|  \ 
Apache Apache ... 

由於NGINX可以處理大量的更多的連接,並具有一個相當預測的存儲器使用模式,它通常被用作一個前端爲幾個Apache後端服務器(運行PHP, Python,Ruby等)。

將Apache替換爲Tomcat/Jetty/在此處插入您最喜歡的servlet容器並採用相同的邏輯。

這裏的要點是你的後端服務器通常要做更多的事情(運行一些腳本語言,查詢數據庫等),以至於每個後端服務器都不會受到HTTP的瓶頸服務器組件,而是由應用程序邏輯。

沒有一種適合所有這些問題的解決方案。另一種解決方案(很多情況下),一旦超過了單個負載均衡器機器的容量,就是在支持多個後端服務器的多個平衡器之間使用DNS循環。

+0

感謝您的迴應....您的解釋有所幫助 – Jayesh 2012-03-30 16:50:52

0

我想說,如果連接數量上升到負載平衡器入口點的限制,那麼您可以實現DNS級別平衡(如果在請求中使用名稱解析)。由於DNS解析負責在請求中針對同一名稱的不同分辨率進行切換,並將這些請求發送到不同的負載平衡器或直接發送到不同的負載平衡器,因此每個請求都將被驅動(例如「輪換機器人」)到不同的入口點不同的服務器(後一種,意味着不同的LB技術)。

但是,每秒500個請求不應該是負責均衡的服務器的問題。 HAProxy可以毫無問題地處理數以千計的請求/秒,將不同的會話驅動到不同的服務器,還可以將活動會話分佈在不同的服務器中。

HAProxy的是一個免費的,非常快速和可靠的解決方案,提供高 可用性,負載均衡和代理對TCP和基於HTTP的應用 。它特別適用於在需要持久性或Layer7處理時負載非常高的 網站。 支持成千上萬的連接顯然是現實的,今天的硬件爲 。