誰與爭鋒!專業(yè)應用交付vs開源負載軟件
如今,常見的兩大負載均衡解決方案,不外乎是使用標準服務器硬件平臺+開源軟件,以及專業(yè)的應用交付,但孰優(yōu)孰劣?這個我們終究還是要用事實來說話。
首先,不妨深入分析一下目前應用比較廣的兩個開源負載軟件——Nginx和Haproxy——在技術上的優(yōu)缺點,以及它們和專業(yè)的應用交付之間到底有什么差距。
Nginx
作為一款耳熟能詳的產品,Nginx以低系統(tǒng)資源占用、高并發(fā)連接性能而著稱,殊不知,它本來只是一款源自于俄羅斯的高效Web/電子郵件服務器。當Nginx被引入互聯(lián)網后,它可以完全實現(xiàn)7層負載的超強反向代理功能也逐漸被人們發(fā)現(xiàn)。自此之后,Nginx就作為一款主流開源負載軟件被廣泛應用了,而它原來的服務器功能,反而很少被人提起——真心是“彪悍的人生不需要解釋”。
從Nginx的代碼框架上,可以看出,Nginx可分為三大部分,分別是:內容定位、負載均衡和內容加工。
整個框架具備如下特點:
1.具有明顯的面向內容的色彩。
2.擴展性極強,模塊劃分非常精細及合理。
不過,雖然Ngnix應用非常廣泛,但畢竟它的設計初衷不是專業(yè)負載,所以在負載方面自然存在硬傷:
1.負載均衡算法和健康檢查算法非常有限。
2.不支持會話保持,這是非常致命的。
3.沒有現(xiàn)成的雙機熱備方案。
言至此,對Nginx在負載均衡上的表現(xiàn)簡而言之就是:根不正,苗不紅。
Haproxy
和Nginx相比,Haproxy可以算是科班出身了。在內部處理流程上,負載均衡就是它的主業(yè)。
其特點主要表現(xiàn)在:
1.它的設計思路與專業(yè)的應用交付設計基本相同,因此能夠比較容易友好地進行負載均衡特性的配置。
2.有明確的7層內容交換特性。
3.負載均衡及健康檢查算法較豐富,并支持一些動態(tài)算法。
4.有雙機熱備的開源解決方案。
但是,Haproxy也存在著某些顯而易見的局限性:
1.應用場景比較單一。其代碼和專業(yè)的應用交付明顯不在一個檔次;
2.和專業(yè)的應用交付相比,Haproxy缺乏卸載、加速、安全等技術門檻較高的特性。
僅憑以上兩點內傷,就確定了Haproxy本質上還是缺乏成為高富帥的潛質。
專業(yè)的應用交付與開源軟件的差異
專業(yè)的應用交付廠商能夠為用戶提供專業(yè)的應用交付解決方案,但很多客戶覺得開源軟件也能滿足需求。那么,開源軟件和專業(yè)硬件之間的區(qū)別到底有多大呢?
首先,就性能而言,開源軟件具有兩個不可避免的依賴性和局限性:
一.是對發(fā)行版操作系統(tǒng)的依賴。
任何一種開源軟件都需要依賴某種操作系統(tǒng),并使用該操作系統(tǒng)的某些資源來實現(xiàn)最基本的功能。
對Nginx和Haproxy而言,它們的依賴性主要表現(xiàn)在:
1、內核的網絡接口驅動,它實現(xiàn)數據包的接收和發(fā)送;
2、內核的TCP/IP協(xié)議棧,它實現(xiàn)基于連接的可靠數據交互。
熟悉Linux內核編程的人都知道,上述兩個內核功能都有其性能瓶頸,前者是中斷,后者是socket系統(tǒng)調用?;谶@兩個性能瓶頸做出來的軟件,即便自身代碼優(yōu)化到***,性能也不會有質的提高。就算開源操作系統(tǒng)本身有例如epoll、splice等大幅優(yōu)化的策略,其使用也受到很多限制,效果上始終和專業(yè)的負載均衡硬件有著數量級的差異。
開源軟件操作系統(tǒng)的依賴性還體現(xiàn)在另一個方面,即三層及三層以下轉發(fā)特性的依賴。專業(yè)的負載均衡設備需要適應各種組網環(huán)境,其轉發(fā)特性和傳統(tǒng)的路由器還是有很大差異。因此開源軟件搭建的系統(tǒng),在網絡環(huán)境支持上有很大的局限。
二.是對硬件平臺的局限。
開源系統(tǒng)一般會搭建在基于x86的服務器平臺上,但負載均衡器歸根到底是一個網絡設備,對網絡設備來說,最重要的性能參數就是數據吞吐量,而數據吞吐恰恰是服務器平臺的弱項。而且基于服務器平臺的開源系統(tǒng)性能也很難繼續(xù)向上優(yōu)化——這是因為開源軟件本身解決不了的問題就是多核并行化和分布式系統(tǒng)。
專業(yè)應用交付和開源負載軟件,到底哪一款更適合您?這個,最終還是得由用戶的具體環(huán)境決定。