您希望了解 SOA 內(nèi)服務(wù)器間 Web 服務(wù)應(yīng)用程序的負(fù)載平衡么?在本文中,Judith M. Myerson 與我們一起探討了用戶在高峰流量期間所需求的快速響應(yīng)的重要性,并且列舉了一些負(fù)載平衡技術(shù)的示例。此外,她還與我們一起探討了負(fù)載平衡工具——WebSphere? Application Server 和 WebSphere Edge Server,開發(fā)人員、系統(tǒng)管理員和網(wǎng)絡(luò)管理員可以使用這些工具在服務(wù)器間平衡 Web 服務(wù)應(yīng)用程序的負(fù)載,從而確保網(wǎng)絡(luò)在高峰流量期間保持高性能、高可靠性和高可用性。
引言
在本系列第 4 部分“使用 Rational 開發(fā)工具構(gòu)建 SOA 中間件應(yīng)用程序”(請參閱參考資料)一文中,我講解了如何使用 Web 開發(fā)工具創(chuàng)建 SOA 中間件應(yīng)用程序。在本系列第 5 部分“使用 WebSphere Business Integration 工具優(yōu)化 Web 服務(wù)應(yīng)用程序”(請參閱參考資料)一文中,我講解了如何使用業(yè)務(wù)流程工具集成和優(yōu)化 Web 服務(wù)應(yīng)用程序。在第 5 部分,我還講解了減少 Web 請求數(shù)量、執(zhí)行時間、訪問時間和帶寬量的方法,這些方法都可以用來優(yōu)化 Web 服務(wù)應(yīng)用程序。
在本文中,我介紹了負(fù)載應(yīng)用程序的某些問題如何影響了 Web 服務(wù)應(yīng)用程序間的互操作方式。文中包含了一個流量瓶頸的實例,導(dǎo)致該瓶頸的原因是:在特定期間有太多的訪問者基于業(yè)務(wù)流程發(fā)送了太多的請求到一個 Web 服務(wù)應(yīng)用程序。接著又講了如何從負(fù)載平衡技術(shù)中獲益。
請記住,Web 請求與訪問者的請求是不同的。Web 請求的數(shù)量不僅依賴于訪問者的請求數(shù)量,也依賴于由訪問者請求生成的、已優(yōu)化的 Web 請求的類型和內(nèi)容。
響應(yīng)遲緩
為了更好地認(rèn)清這種差異,請看接下來的這個實例。如果某個訪問者在將請求通過 Web 服務(wù)發(fā)送到一臺服務(wù)器后等了很久才得到回復(fù),那么該訪問者很可能為了獲得更快的響應(yīng)時間而轉(zhuǎn)向使用另一種 Web 服務(wù)或網(wǎng)站。該始發(fā)端 Web 服務(wù)將處理傳入的訪問者請求,以生成并優(yōu)化傳輸?shù)侥繕?biāo) Web 服務(wù)的 Web 請求。
始發(fā)端 Web 服務(wù)響應(yīng)遲緩,可能表明目標(biāo)服務(wù)器繁忙,或是沒有足夠的系統(tǒng)空間來處理多個訪問者請求(多線程處理)。處理這種負(fù)載問題的方法之一是平衡服務(wù)器間的負(fù)載,這樣訪問者就不會為得到答復(fù)而等待太久。這種技術(shù)稱為負(fù)載平衡。
加快響應(yīng)
平衡服務(wù)器間負(fù)載要優(yōu)于外包 Web 服務(wù),負(fù)載平衡技術(shù)不僅全面考慮到增加的服務(wù)器容量、改善的站點設(shè)計和使用獨立磁盤冗余陣列(Redundant Array of Independent Disk,RAID)的能力,而且也提供了處理預(yù)期高峰流量所需的帶寬。在服務(wù)器的長期運(yùn)行中,它們會消耗更多的服務(wù)器資源。通過使用負(fù)載平衡技術(shù),我們有更好的機(jī)會來提高服務(wù)器的性能和可靠性,并同時減少帶寬量、執(zhí)行時間和訪問時間(假定服務(wù)器中包含故障轉(zhuǎn)移機(jī)制 )。
由于上述原因,負(fù)載平衡技術(shù)成為了大多數(shù)公司在處理大流量時(尤其在高峰流量期間經(jīng)受服務(wù)器停滯時)的首選技術(shù)。這些公司希望更快地響應(yīng)用戶需求,從而在較短的時間內(nèi)完成更多的工作任務(wù)。
您可以將負(fù)載路由到域名系統(tǒng)中不同的服務(wù)器主機(jī)地址,或者將一臺服務(wù)器要處理的工作總量分?jǐn)偟絻膳_或多臺服務(wù)器上。您不僅需要使用另外一臺服務(wù)器智能化地選擇出將工作分配給哪臺服務(wù)器,還需要使用故障轉(zhuǎn)移和備份服務(wù)將這些服務(wù)器聯(lián)合到一起,以防某臺服務(wù)器出現(xiàn)故障(尤其當(dāng)服務(wù)器集散于不同地理位置時)。
類比購物車
作為一個類比,請把負(fù)載平衡服務(wù)器看為超市的 4 個付款臺。讓我們瞧瞧超市是如何在 4 個付款臺間實現(xiàn)“負(fù)載平衡”的。
假設(shè)您排在 1 號付款臺前的長隊中,您可以粗略地估算出大概需要多久時間才能排到自己付款。如果您發(fā)現(xiàn)這條隊伍移動緩慢,而且此時看到一名收銀員走向 4 號付款臺打開機(jī)器準(zhǔn)備工作,那您一定會推著購物車快速地跑到 4 號付款臺(請參見圖 1)。
接著又有一名收銀員打開了 3 號付款臺,并揮手示意第一隊排在您前面的購物者到 3 號付款臺排隊。這些購物者當(dāng)然會移到 3 號付款臺。2 號付款臺此時仍然保持關(guān)閉狀態(tài)。
圖 1. 購物車的負(fù)載平衡
減少服務(wù)時間
讓我們看看另一種負(fù)載平衡方式。如果您推著一輛滿滿的購物車,里面裝著您一家十口一個月的雜貨,您可能希望將貨物分給多個付款臺結(jié)帳。在沒有家人陪同的情況下,這種想法尤為強(qiáng)烈。您可以將購物車中的物品分為幾份,然后分從幾個清閑可用的付款臺結(jié)帳,這樣就減少了付款時間。
雖然這在實際生活中是不可能的,但您可以使用負(fù)載平衡器實現(xiàn)類似的目的,它能把在線購物車(Web 服務(wù)應(yīng)用程序)的請求從繁忙的服務(wù)器上轉(zhuǎn)移到其他清閑可用的服務(wù)器上(請參見圖 2)。如果其他服務(wù)器通過優(yōu)化可以滿足服務(wù)需求,就沒必要再啟用新服務(wù)器。
圖 2. 在線購物車請求的負(fù)載平衡
問題
您該怎樣解決該問題?更快地跑到付款臺前(增加帶寬)?增加付款臺數(shù)量(增加服務(wù)器容量)?找其他人幫您買(外包)?這些方法都不適用。
請您回答以下這些問題:
- 您將要平衡哪種應(yīng)用程序的負(fù)載?
- 在整個分布式網(wǎng)絡(luò)中,該應(yīng)用程序是否為長期運(yùn)行?
- 一臺服務(wù)器或一個服務(wù)器集群超時接收了多少請求?
- 在高峰流量期間,需要多少流量和帶寬量?
- 怎樣利用服務(wù)器平衡應(yīng)用程序負(fù)載?
- 在不同時段,預(yù)計有多少訪問者?
- 訪問者最多能夠發(fā)送多少請求?
在您答完這些問題后,請與一名網(wǎng)絡(luò)管理員或系統(tǒng)管理員檢查和整理這些答案,以促進(jìn)相互了解。然后使用某種算法、技術(shù)或工具開發(fā)一個負(fù)載平衡程序,實現(xiàn)將繁忙的服務(wù)器上的訪問者和 Web 請求重定向到清閑可用的服務(wù)器上。
負(fù)載平衡技術(shù)
負(fù)載平衡技術(shù)包括以下幾種:
- 簡單路由
- DNS Round Robin
- 復(fù)雜算法
- 智能路由
由于實際工作中的流量需要按優(yōu)先級處理,所以在開發(fā) Web 服務(wù)應(yīng)用程序時,請考慮上述技術(shù)中的最后兩種技術(shù)。因為包含要求更快響應(yīng)的服務(wù)器和訪問者的分布式網(wǎng)絡(luò)正在不斷地擴(kuò)張。由于前兩種技術(shù)不需要按流量的優(yōu)先級進(jìn)行處理,所以我們將不在有關(guān)流量瓶頸的問題中討論它們。
當(dāng)您使用復(fù)雜算法時,分發(fā)請求是基于服務(wù)器性能、服務(wù)器使用的硬件種類和處理客戶優(yōu)先級的方法等等。這表明,最快的服務(wù)器將獲得更多具有最高客戶優(yōu)先級的請求。智能路由基于請求的內(nèi)容和(在始發(fā)端服務(wù)器發(fā)生故障時)流量重定向到另一臺服務(wù)器的方式。
基于服務(wù)器的軟件
雖然您可以使用軟件、硬件或兩者來達(dá)到負(fù)載平衡,但您最好還是在應(yīng)用程序服務(wù)器集群上使用基于服務(wù)器的軟件。基于服務(wù)器的軟件的價格要遠(yuǎn)低于基于硬件的專用服務(wù)器。硬件升級的價格要遠(yuǎn)高于相應(yīng)軟件升級的價格。
在將基于服務(wù)器的軟件添加到網(wǎng)絡(luò)中之前,請檢查網(wǎng)絡(luò)是否配置正確,負(fù)載平衡器是否“靈活”。“靈活”在這里的解釋是:雖然負(fù)載平衡器可能已為目前的 Web 服務(wù)應(yīng)用程序做好了充分的配置,但它還必須能夠通過擴(kuò)展?jié)M足未來應(yīng)用程序的需求。
IBM WebSphere Application Server 就是一款基于服務(wù)器的軟件,它在負(fù)載平衡和故障轉(zhuǎn)移中同時使用了復(fù)雜算法和智能路由。它的負(fù)載平衡器有能力根據(jù) Web 服務(wù)應(yīng)用程序的未來需求進(jìn)行擴(kuò)展。您需要為負(fù)載平衡建立一個服務(wù)器集群,并測試其故障轉(zhuǎn)移機(jī)制(請參閱參考資料)。
面向多平臺的 WebSphere Edge Server V2.0 是另一款基于服務(wù)器的軟件。它專門設(shè)計用于改善服務(wù)器選擇、負(fù)載優(yōu)化和容錯。它還附帶了網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)和用于 Cisco CSS 交換機(jī)的 WebSphere Edge Server Consultant,并且支持內(nèi)核級的基于內(nèi)容路由(Content Based Routing,CSR)。(請參閱參考資料)
結(jié)束語
Web 服務(wù)應(yīng)用程序的負(fù)載平衡需要提早計劃,以確定在高峰流量期間如何在服務(wù)器間平衡負(fù)載。在設(shè)計 Web 服務(wù)的過程中,請多與系統(tǒng)管理員交流負(fù)載平衡技術(shù)相關(guān)的問題。
解決這些問題能使您更容易地創(chuàng)建負(fù)載平衡的 Web 服務(wù)應(yīng)用程序。您可以在 SOA 內(nèi)部(或跨 SOA)基于業(yè)務(wù)流程開發(fā) Web 服務(wù)和平衡 Web 服務(wù)負(fù)載。解決這些問題還能使管理員更容易地平衡 Web 服務(wù)應(yīng)用程序的負(fù)載,并確定在 SOA 中使用哪種負(fù)載平衡方法,以及能夠平衡多少應(yīng)用程序的負(fù)載。