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