由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,甚至效能再卓越的裝置也不能滿足當前業務量增長的需求。 針對此情況而衍生出來的一種廉價有效透明的方法以擴充套件現有網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性的技術就是負載均衡(load balance)。
乙個能夠提供高併發訪問,快速響應的伺服器集群不是一開始就能設計出來的,但對於軟體架構師而言,在架構設計之初就要有應付這種高併發,為集群提供水平擴充套件的計畫,具體何時進行擴充套件,就需要在後續處理業務的過程中慢慢演化了。同時,在設計之初,為了能快速擴充套件而不影響集群的正常使用,建議把伺服器設計成無狀態的,也就是集群伺服器不儲存請求上下文資訊,這樣使用者的請求被發往集群中的任何乙個節點所處理的返回結果都將是一樣的。因此在集群中就可以使用負載均衡技術將不同的請求發往不同的節點上進行處理。如下圖:
負載均衡伺服器需要能夠感知或者可以配置集群中的伺服器數量,可以及時發現集群中新上線或者下線的伺服器,並能向新上線的伺服器分發請求,停止向已下線的伺服器分發請求,這樣就實現了伺服器集群的伸縮性。負載均衡的實現技術有多種多樣,從硬體實現到軟體實現,從商業產品到開源產品,應有盡有。本文主要介紹web伺服器中http反向**機制,以此來達到伺服器之間的負載均衡。
利用http重定向協議實現負載均衡大概工作原理如下圖:
這種負載均衡方案的有點是比較簡單,缺點是瀏覽器需要兩次請求伺服器才能完成一次訪問,效能較差;同時,重定向伺服器本身的處理能力有可能成為瓶頸,整個集群的伸縮性規模有限;使用http返回碼302重定向,有可能使搜尋引擎判斷為seo作弊,降低搜尋排名。因此實踐中很少使用這種負載均衡方案來部署。
參考:[1]
[2]
[3] 《大型**技術架構——核心原理與案例分析》
出處:
負載均衡之HTTP重定向
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...
負載均衡之HTTP重定向
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...
HTTP重定向負載均衡
由於目前現有網路的各個核心部分隨著業務量的提高,訪問量和資料流量的快速增長,其處理能力和計算強度也相應地增大,使得單一的伺服器裝置根本無法承擔。在此情況下,如果扔掉現有裝置去做大量的硬體公升級,這樣將造成現有資源的浪費,而且如果再面臨下一次業務量的提公升時,這又將導致再一次硬體公升級的高額成本投入,...