當(dāng)前,在大規(guī)模在線事務(wù)處理的系統(tǒng)中,普遍使用了OLTP中間來完成事務(wù)處理的核心業(yè)務(wù)邏輯,因而形成了“具有大量并發(fā)短小請求”的特點(diǎn)。其短小是指:對每個請求,中間件服務(wù)器的處理時間都是很短,而且數(shù)據(jù)量較小。與這種系統(tǒng)相對應(yīng)的還有一種使用在線分析處理的系統(tǒng),不僅客戶端數(shù)量小,且對每一個請求服務(wù)器要做長時間、大數(shù)據(jù)量的處理。因此本文所關(guān)注的是前一種系統(tǒng),由于該系統(tǒng)對響應(yīng)時間要求很高,且容易出現(xiàn)單個服務(wù)器無法承受的情況,因而需要進(jìn)行負(fù)載均衡,本文所討論的就是負(fù)載均衡的問題。
目前,控制臺的中間件負(fù)載均衡的方法有很多,比較常用的有兩種:
一是輪詢方法,類似于計(jì)算機(jī)操作系統(tǒng)的時間片輪轉(zhuǎn)算法。其原理是將請求輪流分給每一個服務(wù)器,使任務(wù)得到平均分配。這種方法看起來簡單和直觀,但實(shí)際上有很多局限性,其中最突出的就是不能實(shí)時掌握服務(wù)器當(dāng)前負(fù)載的情況,而將任務(wù)分配給負(fù)載過大乃至瀕臨崩潰的服務(wù)器,使相對“清閑”的服務(wù)器依然“清閑”。同時,由于平均分配任務(wù)的方法,是建立在假定每臺服務(wù)器的處理能力一樣的基礎(chǔ)上的,這實(shí)際上是難以做到的。因?yàn)榧词故峭还就恍吞柕姆?wù)器,其性能在不同的運(yùn)行環(huán)境中也是不一樣的(與網(wǎng)絡(luò)連接有關(guān)),而且有可能因買不到與原來同型號的設(shè)備(新設(shè)備可能性能更好,價格更便宜)而不利于以后的系統(tǒng)擴(kuò)充。
二是主從節(jié)點(diǎn)的方法。原理是將多個服務(wù)器中的某個服務(wù)器作為主節(jié)點(diǎn),其除了具有中間件的功能外,還充當(dāng)中間件系統(tǒng)管理者的角色,用以實(shí)現(xiàn)負(fù)載的均衡,因此成為主從節(jié)點(diǎn)法。這種方法在一些大型商業(yè)中間件中已較多采用,確實(shí)起到了負(fù)載均衡的作用。當(dāng)然,讓主節(jié)點(diǎn)既作為中間件系統(tǒng)的管理者,又作為服務(wù)的一個提供者,也導(dǎo)致了一些問題的出現(xiàn)。其中最大的問題就是會因主節(jié)點(diǎn)的崩潰而導(dǎo)致系統(tǒng)的崩潰。因?yàn)樵谑聞?wù)處理過程中會出現(xiàn)各種各樣的異常情況,例如大量的請求集中在一起使存儲器吃緊,以及受數(shù)據(jù)庫系統(tǒng)性能的影響,使管理節(jié)點(diǎn)增加崩潰的可能性,導(dǎo)致系統(tǒng)崩潰的可能性等等。