
有一家中國著名的門戶網(wǎng)站,每天為數(shù)以百萬計的用戶提供新聞,生活,娛樂等使用信息。他們的web基礎(chǔ)架構(gòu)由許多不同的“頻道”組成,提供基于web和手機短信的交流服務(wù);每個“頻道”包含數(shù)個“子頻道”,涵蓋內(nèi)容豐富。
有一家中國著名的門戶網(wǎng)站,每天為數(shù)以百萬計的用戶提供新聞,生活,娛樂等使用信息。他們的web基礎(chǔ)架構(gòu)由許多不同的“頻道”組成,提供基于web和手機短信的交流服務(wù);每個“頻道”包含數(shù)個“子頻道”,涵蓋內(nèi)容豐富的新聞,商業(yè),娛樂和體育信息。
該網(wǎng)站原先的web代理結(jié)構(gòu)如下圖所示:

圖1:WebProxy架構(gòu)
每個“頻道”由一個或多個運行Apachewebserver的服務(wù)器組成,并且由前端的多臺運行Squid軟件的服務(wù)器提供gateway服務(wù)。這些服務(wù)器都基于x86芯片,運行Linux操作系統(tǒng)。
一臺獨立的RoundRobinDNS服務(wù)器用來記錄和統(tǒng)計Squid代理服務(wù)器的系統(tǒng)狀態(tài)統(tǒng)計信息,這些統(tǒng)計信息同時作為實施Squid服務(wù)器之間負載均衡(loadbalancing)的依據(jù)。
該方案的主要問題在于系統(tǒng)的可靠性(reliability)和可擴展性(scalability)。網(wǎng)站規(guī)模的日益壯大對單個系統(tǒng)的可擴展性和吞吐性能提出了更高的要求。同時,降低總體擁有成本(Total CostofOwnership),維護成本,功耗和機房占地也成為了重要的考量因素。概括而言,新的系統(tǒng)方案必須達到實現(xiàn)以下目標:
●系統(tǒng)可用性和可靠性得到提升
●能滿足未來網(wǎng)絡(luò)流量的高可擴展性
●低總體擁有成本
●系統(tǒng)性能狀態(tài)信息的可管理性
Sun的方案
基于UltraSPARCT1處理器的CoolThreads服務(wù)器,Solaris10操作系統(tǒng),SunJavaSystem WebProxyServer軟件將組成一個極具競爭力的Web代理方案。相比較Squid軟件而言,Sun JavaSystemWebProxyServer是多線程的設(shè)計,可以充分利用UltraSPARCT1處理器的芯片級多線程(CMT)能力,從而提供給系統(tǒng)更高的吞吐,服務(wù)更多的并發(fā)用戶請求。
SunCoolThreads?服務(wù)器
基于UltraSPARCT1處理器CoolThreads技術(shù)的服務(wù)器系列,比如SunSPARCEnterprise
T1000和T2000,統(tǒng)稱為CoolThreads服務(wù)器。這款UltraSPARCT1處理器在一個CPU當中集成6-8個4線程的核,使得單個CPU在相對很少的功耗下可以同時運行24-32個線程。這樣的設(shè)計特別適合Web環(huán)境下高并發(fā)的應(yīng)用,提供高性能的同時降低了功耗,節(jié)省了機架空間。(如下圖)

Solaris?10操作系統(tǒng)
Solaris10操作系統(tǒng)本身就是Sun公司為芯片級多線程(ChipMultithreading)技術(shù)所設(shè)計的。除了眾所周知的健壯性和出色的性能之外,Solaris10現(xiàn)在能夠充分利用UltraSPARCT1處理器的CMT能力,為高并發(fā)多用戶的應(yīng)用提供更加出色可擴展能力。
Solaris10在高級別安全性,大規(guī)模擴展性,高性能網(wǎng)絡(luò),數(shù)據(jù)管理,互操作性,高可用性等領(lǐng)域集成了豐富的功能。和前一版本相比,Solaris10在多線程處理,內(nèi)存分配,文件系統(tǒng),TCP/IP協(xié)議棧上作了巨大的提升。隨著SolarisContainer功能的推出,將多臺服務(wù)器上的應(yīng)用整合到一臺機器上變得更加安全。Solaris可預測性自愈能力則大大提升了系統(tǒng)的可靠性,降低了維護成本。另外,Solaris10還加入了功能強大的動態(tài)跟蹤工具DTrace。對任何在線的生產(chǎn)環(huán)境進行調(diào)試和優(yōu)化將從此變得安全,高效。
值得一提的是,隨著Solaris的開源,將會有更多領(lǐng)域的軟件愛好者一起來研究Solaris,提高它在各種嶄新領(lǐng)域的可用性。
SunJava?SystemWebProxyServer軟件
和其他web代理服務(wù)器一樣,這款軟件主要對web內(nèi)容做緩存和過濾。通過對經(jīng)常被訪問內(nèi)容的緩存,減少了網(wǎng)絡(luò)帶寬使用和目標web服務(wù)器的CPU時間,從而用戶響應(yīng)時間顯著地縮短。另外,通過訪問控制和內(nèi)容過濾,這款軟件能夠加強網(wǎng)絡(luò)的安全性。
SunJavaSystemWebProxyServer采用了高度模塊化的設(shè)計。這使得它在運行于對稱多處理器(SMP)或者芯片多線程(CMT)服務(wù)器上的時候能夠充分體現(xiàn)出多線程和高可擴展性的優(yōu)勢。
在單個進程內(nèi)部同時處理大量并發(fā)請求的能力幫助web應(yīng)用從容應(yīng)對高峰時候的網(wǎng)絡(luò)負載。
這款軟件的架構(gòu)包含三大類線程,各自處理專門的任務(wù)。

圖2:可擴展的軟件架構(gòu)
●Acceptor線程
●Worker線程
●Poll線程
Proxy服務(wù)器為每個進程(proxy實例)管理兩套隊列:Connection隊列和Poll隊列。Acceptor線程接受訪問請求,并將它們放入Connection隊列;Worker從Connection隊列里取得待處理請求,借助HTTP引擎進行處理;Poll線程將那些需要保持更新(Keep-alive)的任務(wù)重新放入Connection隊列排隊,等待被在一次處理。
這些不同種類的線程數(shù)量可以被配置文件定義,滿足不同網(wǎng)絡(luò)流量下的可擴展要求。
評測
我們在實驗室和真實網(wǎng)絡(luò)兩種環(huán)境下,考察了SunSPARCEnterpriseT1000服務(wù)器上跑Sun JavaSystemWebProxyServer的性能情況。實驗室環(huán)境下,我們使用了WebPolygraph評測工具。真實環(huán)境的測試基于客戶生產(chǎn)環(huán)境下的概念驗證(ProofofConcept)測試。
實驗室模擬環(huán)境評測
WebPolygraph是一個開源的基準測試工具,被廣泛地用來測試代理服務(wù)器,網(wǎng)絡(luò)加速器,L4/7交換,內(nèi)容過濾等Web應(yīng)用軟件的性能。

圖3:模擬測試環(huán)境
測試環(huán)境如上圖所示,一臺SunSPARCEnterpriseT1000服務(wù)器上運行Solaris10操作系統(tǒng)和SunJavaSystemProxyServer4.0.4軟件。這臺服務(wù)器配置了8核的UltraSPARCT1處理器,可以支持32個并發(fā)線程。內(nèi)存配置為8GB,其中4GB被Proxy軟件保留作為緩存。
有4臺機器用來向被測代理服務(wù)器發(fā)送模擬的網(wǎng)絡(luò)負載。它們通過一個千兆以太網(wǎng)交換機和被測機器組成一個單獨的子網(wǎng)。每一臺測試機通過運行Polygraph的客戶端程序PolyClt,來向被測機發(fā)送web訪問請求;其中一臺測試機同時運行服務(wù)器端程序PolySrv來模擬后端Web服務(wù)器。
網(wǎng)絡(luò)負荷被模擬成盡量接近真實環(huán)境下所觀察到的模式:每個訪問內(nèi)容對象以13K為平均大小,呈指數(shù)化分布;所有的對象都可以被緩存,生命(更新)周期為2分鐘。測試沒有激活保持更新(keep-alive)的功能,所有的訪問請求會產(chǎn)生一個新的TCP連接。這樣的設(shè)計保證了和真實環(huán)境最大限度的吻合,proxy服務(wù)器得到足夠的壓力,為性能測試提供準確的數(shù)據(jù)。

圖4:SunJavaSystemWebProxy測試結(jié)果
SunJavaSystemWebProxy的測試結(jié)果如上圖所示,性能差不多到達了每秒鐘處理8000個請求。由于千兆以太網(wǎng)交換機達到了滿負荷,我們沒有進一步加大測試負載。然而通過我們進一步的考察發(fā)現(xiàn),在交換機滿負荷情況下,被測代理服務(wù)器仍有30%的CPU空閑時間。可以設(shè)想,如果網(wǎng)絡(luò)瓶頸不存在,被測服務(wù)器的性能數(shù)據(jù)應(yīng)該有更高的提升空間。

圖5:SquidWebProxy測試結(jié)果
Squidwebproxy軟件的測試跑在一臺基于IntelXeon雙CPU,8G內(nèi)存,運行RedHatLinux操作系統(tǒng)的服務(wù)器上。除此以外,所有測試環(huán)境的設(shè)備和前面測試相同。Squid2.5和Squid 2.6兩個版本都進行了測試。
Squid軟件只有一個單線程用來處理HTTP請求,一次只能處理一個請求。新的Squid2.6版本增加了新的事件處理機制,力圖在占用更少的CPU開銷的情況下處理更多的并發(fā)請求。
考慮到Squid在并發(fā)處理上的不足,我們甚至還做了進一步的嘗試:同時開啟兩個Squid2.6的進程(實例)。初步的結(jié)果顯示,每秒鐘6000個請求處理可以達到。但是,多個獨立的Squid進程帶來了明顯的缺點:緩存內(nèi)容在多個Squid實例之間不能被共享。也就是說,某些內(nèi)容請求潛在地被多個Squid實例重復緩存,浪費了內(nèi)存和寶貴的CPU處理時間。相比較而言,SunJavaSystemWebProxy在單個實例中可以線性地擴展。這完全得益于軟件本身多線程的設(shè)計和對UltraSPARCT1處理器的CMT能力。
相比較兩者而言,SunJavaSystemWebProxyServer在達到更大吞吐能力的情況下,提供了更快的響應(yīng)時間:前者在達到每秒鐘7500個處理請求的同時,響應(yīng)時間為15.65毫秒;后者在達到每秒鐘4500個處理請求的時候,響應(yīng)時間為600毫秒以上。
真實環(huán)境評測
用戶真實環(huán)境下的測試使用SunSPARCEnterpriseT2000服務(wù)器跑單個SunJavaSystemWeb ProxyServer實例。該服務(wù)器配置了8核UltraSPARCT1處理器,8GB內(nèi)存,運行Solaris10操作系統(tǒng)。
測試過程中,這臺T2000服務(wù)器負擔了大約4倍的其他運行Squid2.5的x86服務(wù)器的網(wǎng)絡(luò)負載。峰值情況下,T2000服務(wù)器的CPU占用率也僅為35%。在三個多月的概念驗證(POC)測試過程中,T2000經(jīng)受了相當于平均負載2-5倍的峰值負載考驗,沒有發(fā)生任何宕機。而同樣環(huán)境下的其他x86服務(wù)器卻必須保持10-20%的CPU空閑,以防峰值負載下系統(tǒng)發(fā)生崩潰(crash)。
此次POC清楚地顯示出SunSPARCEnterprise服務(wù)器,Solaris10操作系統(tǒng),SunJavaSystem WebProxyServer軟件所組成的解決方案在性能和可靠性方面體現(xiàn)出的巨大優(yōu)勢。
結(jié)論
實驗室模擬環(huán)境和真實生產(chǎn)環(huán)境下的評測都顯示,Sun的解決方案相比基于x86,Linux和Squid的流行方案在性能和可靠性以及可擴展性方面的優(yōu)點。從硬件到操作系統(tǒng)到上層軟件的高度多線程設(shè)計,使其成為一個不折不扣的領(lǐng)先的網(wǎng)絡(luò)代理服務(wù)器解決方案。
Sun的方案相比Squid方案提供了高得多的吞吐能力以及更快速的響應(yīng)時間;Sun的硬件和軟件棧(softwarestack)顯示出一如既往的穩(wěn)定,三個月的測試過程沒有一次宕機。
在滿足苛刻的性能需求的同時,Sun的方案仍然為未來的潛在需求提高了提升的空間。生產(chǎn)環(huán)境下把多臺x86服務(wù)器的負載倒換到一臺SunT2000服務(wù)器上,體現(xiàn)了整合的優(yōu)勢。因為通常來講,單臺系統(tǒng)要比多臺系統(tǒng)更易于管理;能耗和占地也將顯著降低。體現(xiàn)了Sun公司在更低的能源消耗和空間占用情況下,提供更高性能更高可擴展性計算能力的一貫承諾。
文章作者:楊云
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設(shè)方案案例庫
電子政務(wù)建設(shè)方案案例庫
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫
商務(wù)智能建設(shè)方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄