今天跟大家分享一下關於高效能負載均衡的分類架構相關的知識。
當然了,首先要強調一點,並不是所有的專案一開始就要求高效能的。前面我也提到過。如果不是太清楚的可以參考這篇文章:架構設計之六個複雜度**
下面進入正題,說說高效能負載均衡之分類架構。
單伺服器無論如何優化,無論採用多好的硬體,總會有乙個效能天花板,單伺服器的效能無法滿足業務需求時,就需要設計高效能集群來提公升系統整體的處理效能。
高效能集群的本質很簡單,通過增加更多的伺服器來提公升系統整體的計算能力。由於計算機本身存在乙個特點:同樣的輸入資料和邏輯,無論在哪台伺服器上執行,都應該得到相同的輸出。因此高效能集群設計的複雜度主要體現在任務分配上,如何保障任務的正常分配人,如何保障使用者訪問時不會因為因為某種原因出現錯誤影響服務,這就需要設計合理的任務分配策略,將計算任務分配到多台伺服器上執行。
高效能集群的複雜性主要體現在需要增加乙個任務分配器,以及為任務選擇乙個合適的任務分配演算法。
對於任務分配器,現在更流行的叫法是「負載均衡器」。但這個名稱有一定的誤導性,個人覺得任務分配器更形象具體。
之所以覺得叫"負載均衡器"有一定的誤導性,是因為任務分配不僅僅只是考慮計算單元的負載均衡,不同的任務分配演算法目標是不一樣的,有的基於負載考慮,有的基於效能(吞吐量、響應時間)考慮,有的基於業務考慮。考慮「負載均衡」已經成為了事實上的標準術語,這裡我也用「負載均衡」來代替「任務分配」,但請時刻記住負載均衡不只是為了計算單元的負載達到的均衡狀態。
一、負載均衡分類架構
常用的負載均衡系統包括3種:dns負載均衡、硬體負載均衡和軟體負載均衡。
負載均衡的分類架構我在前面一篇文章中說過,那篇文章叫做談談cdn,當然了,那個著重於cdn,對於負載均衡僅僅只是乙個簡單講解,今天的這篇文章從某個角度看是對前面的補充和完善。
1.dns負載均衡
dns是最簡單也是最常見的負載均衡方式,一般用來實現地理級別的均衡。
比如,北方的使用者訪問北京的機房,南方的使用者訪問深圳的機房。
dns負載均衡也可以叫做鏈路負載均衡,示意圖如下:
dns負載均衡實現簡單、成本低,但也存在粒度太粗、負載均衡演算法少等缺點。仔細分析一下優缺點。
其優點有:
(1)簡單、成本低:負載均衡工作交給dns伺服器處理,無需自己開發或者維護負載均衡裝置;
(2)就近訪問,提公升訪問速度:dns解析距離使用者最近的伺服器位址,可以加快訪問速度,改善效能;
其缺點有:
(1)更新不及時:dns快取的時間比較長,修改dns配置後,由於快取的原因,還是有很多使用者會繼續訪問修改前的ip,這樣的訪問會失敗,達不到負載均衡的目的,並且也會影響使用者正常使用業務;
(2)擴充套件性差:dns負載均衡的控制權在網域名稱商那裡,無法根據業務特點針對其做更多的定製化功能和擴充套件特性;
(3)分配策略比較簡單:
a.dns負載均衡支援演算法少;
b.不能區分伺服器的差異(不能根據系統與服務的狀態來判斷負載);
c.也無法感知後端伺服器的狀態;
針對dns負載均衡的一些缺點,對於延時和故障敏感的業務,有一些公司自己實現了http-dns的功能,即使用http協議實現乙個私有的dns系統。這樣的方案和通用的dns優缺點正好相反。
2.硬體負載均衡
硬體負載均衡是通過單獨的硬體裝置來實現負載均衡功能,這類裝置和路由器、交換機類似,可以理解為乙個用於負載均衡的基礎網路裝置。目前業界典型的硬體負載均衡裝置有兩款:f5和a10。這類裝置效能強勁、功能強大,但**都不便宜,一般只有「土豪」公司才會考慮使用此類裝置。普通業務量級的公司一是負擔不起,而是業務量沒達到,沒有必要為此浪費。
硬體負載均衡,如圖所示:
硬體負載均衡也有其優缺點,分析如下:
其優點:
(1)功能強大:全面支援各層級的負載均衡,支援全面的負載均衡演算法,支援全域性負載均衡;
(2)效能強大,對比一下,軟體負載均衡支援到10萬級併發已經很厲害了,硬體負載均衡可以支援100萬以上的併發;
(3)穩定性高:商用硬體負載均衡,經過良好的嚴格測試,經過大規模使用,穩定性高;
(4)支援安全防護:硬體均衡裝置除具備負載均衡功能外,還具備防火牆、防ddos攻擊等安全功能;
其缺點:
(1)**安昂貴:最普通的一台f5就是一台「馬6」,好一點的就是「q7」;
(2)擴充套件能力差:硬體裝置,可以根據業務進行配置,但無法進行擴充套件和定製;
3.軟體負載均衡
軟體負載均衡通過負載均衡軟體來實現負載均衡功能,常見的有nginx和lvs,其中nginx是軟體的7層負載均衡,lvs是linux核心的4層負載均衡。4層和7層的區別就在於協議和靈活性,nginx支援http、e-mail協議;而lvs是4層負載均衡,和協議無關,幾乎所有應用都可以做,例如聊天、資料庫等。
軟體和硬體的最主要區別就在於效能,硬體負載均衡效能遠遠高於軟體負載均衡效能。nginx的效能是萬級,一般的linux伺服器上裝乙個nginx大概能到5萬/秒;lvs的效能是十萬級,據說可達到80萬/秒;而f5效能是百萬級,從200萬/秒到800萬/秒都有。
關於f5相關的資訊,大家通過這個鏈結對f5有乙個大概的了解:
當然了,除了這個之外,業界也有不少對nginx這樣的高效能web伺服器進行改造以使其達到期望值。
關於軟體負載均衡圖,如下所示:
軟體負載均衡的優缺點如下。
其優點:
(1)簡單:無論是部署還是維護都比較簡單;
(2)便宜:只要買個linux伺服器,裝上軟體即可;
(3)靈活:4層和7層負載均衡可以根據業務進行選擇,也可以根據業務進行比較方便的擴充套件,例如可以通過nginx的外掛程式來實現業務的定製化功能;
其缺點(這個缺點主要是和硬體負載均衡進行對比,當然了,並不是說軟體負載均衡沒法用):
(1)效能一般:乙個nginx大約支撐5萬併發;
(2)功能沒有硬體負載均衡那麼強大;
(3)一般不具備防火牆和防ddos功能等安全功能;
二、如何在實際中運用
上述三種負載均衡的分類架構,各有自己的所長,其實可以遵循乙個組合原則來使用它們。
比如,dns負載均衡用於實現地理級別的負載均衡;硬體負載均衡可以實現集群級別的負載均衡;軟體負載均衡用於實現機器級別的負載均衡。
以我公司目前來看,主要採用的還是軟體負載均衡,僅僅只是靠著阿里雲的那幾台機器來支撐著,當然了這對於目前而言已經足夠了。
其實實際中運用,還是取決於業務吧,想部落格論壇這種,如果你的部落格論壇做的很不錯每天幾十萬訪問量,如果不做上述的架構規劃,會影響使用者的使用體驗,從而降低使用者粘性。
如果你的專案僅僅只是乙個適合某個特定領域,使用人群每天最多也就100人,個人覺得保險起見兩台機器就足夠的。
小結:希望這篇文章能夠給讀者們帶來幫助,謝謝一直關注我的朋友們。
高效能負載均衡之分類架構
原文 高效能負載均衡之分類架構 當然了,首先要強調一點,並不是所有的專案一開始就要求高效能的。前面我也提到過。如果不是太清楚的可以參考這篇文章 架構設計之六個複雜度 下面進入正題,說說高效能負載均衡之分類架構。單伺服器無論如何優化,無論採用多好的硬體,總會有乙個效能天花板,單伺服器的效能無法滿足業務...
Nginx Tomcat搭建高效能負載均衡集群
nginx 1.8.0 apache tomcat 6.0.33 實現高效能負載均衡的tomcat集群 2 然後解壓兩個tomcat,分別命名為apache tomcat 6.0.33 1和apache tomcat 6.0.33 2 3 然後修改這兩個tomcat的啟動埠,分別為18080和280...
Nginx Tomcat搭建高效能負載均衡集群
nginx 1.8.0 apache tomcat 6.0.33 實現高效能負載均衡的tomcat集群 2 然後解壓兩個tomcat,分別命名為apache tomcat 6.0.33 1和apache tomcat 6.0.33 2 3 然後修改這兩個tomcat的啟動埠,分別為18080和280...