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