websphere負(fù)載均衡概要
隨著網(wǎng)絡(luò)業(yè)務(wù)的多樣化和復(fù)雜化,我們可以應(yīng)用websphere負(fù)載均衡來進(jìn)行數(shù)據(jù)處理。在集群這樣一個(gè)大的概念下,有關(guān)于websphere負(fù)載均衡的問題很值得我們進(jìn)行深入的探討。但是,在此我們只是淺談它的冰山一角。對于websphere負(fù)載均衡我們先來簡單的介紹一下它吧。
WebsphereMQv6在集群(Cluster)方面出現(xiàn)了一些令人欣喜的變化,雖然仍不及我們預(yù)期中的理想,但我個(gè)人認(rèn)為對基于MQ的解決方案的設(shè)計(jì)和部署還是具有相當(dāng)大的積極的作用。
websphere負(fù)載均衡(Workloadbalancing)功能的改進(jìn)。在討論新功能之前,讓我們先回顧一下在V6之前MQ集群環(huán)境下websphere負(fù)載均衡的實(shí)現(xiàn)方式。
在WebsphereMQ集群中,成員隊(duì)列管理器可以創(chuàng)建本地隊(duì)列,并將其在集群中共享,集群中的其他成員隊(duì)列管理器不需要任何額外的配置操作,就可以像訪問本地隊(duì)列一樣向該隊(duì)列放入(PUT)消息;每個(gè)成員隊(duì)列管理器都可以創(chuàng)建與之同名的共享隊(duì)列,于是該共享隊(duì)列在集群中就擁有了多個(gè)副本,所有的副本將作為一個(gè)虛擬的整體;對訪問者(調(diào)用MQPUT的應(yīng)用)而言,它們就是一個(gè)隊(duì)列,應(yīng)用不需要關(guān)心如下細(xì)節(jié):
物理上有多少隊(duì)副本;隊(duì)列副本部署的物理列位置;消息實(shí)際發(fā)送到哪個(gè)隊(duì)列副本。所有這些細(xì)節(jié)問題由集群負(fù)責(zé)處理,由此實(shí)現(xiàn)了集群websphere負(fù)載均衡功能。
然而,在V6之前,集群websphere負(fù)載均衡功能在實(shí)現(xiàn)上有若干的限制,其中我們最常碰到的是如下兩點(diǎn):
缺省的負(fù)載分配方式是平均主義――輪循(RoundRobin),集群將同等對待所有的隊(duì)列副本;要想實(shí)現(xiàn)更靈活的分配策略就得依靠開發(fā)人員定制自己的用戶出口(UserExit)程序。
負(fù)載分配的算法中有一項(xiàng)重要的例外――本地優(yōu)先原則。一個(gè)消息進(jìn)入到集群中會(huì)經(jīng)由兩種途徑:
1)應(yīng)用程序連接到集群中的某一成員隊(duì)列管理器,調(diào)用MQAPI將消息寫入共享隊(duì)列;
2)集群外部的隊(duì)列管理器連接到集群中的某一成員隊(duì)列管理器,并將消息由通道發(fā)送過來。無論是哪種途徑,消息到達(dá)的***個(gè)隊(duì)列管理器,對該消息都具有特別的意義(我喜歡將該隊(duì)列管理器稱之為消息的"著陸點(diǎn)")。本地優(yōu)先原則是指如果"著陸點(diǎn)"上擁有一個(gè)目標(biāo)共享隊(duì)列的副本,那么消息將永遠(yuǎn)不會(huì)被路由到其它遠(yuǎn)程隊(duì)列管理器,只能進(jìn)入"著陸點(diǎn)"本地的共享隊(duì)列副本。也許可以為這樣的實(shí)現(xiàn)方式想出一百條理由,但我們無法回避的是,它造成了這樣一個(gè)結(jié)果。如果要從集群的外部發(fā)送消息到集群,并希望消息在集群的成員間合理的分配,那么集群中作為與外部環(huán)境接口點(diǎn)的隊(duì)列管理器上就不能存在任何共享隊(duì)列的副本,否則所有消息將積壓在接口點(diǎn)隊(duì)列管理器上,使集群的websphere負(fù)載均衡功能英雄無用武之地。通常的解決方案是為集群配置至少一個(gè)特殊的隊(duì)列管理器,通常稱為網(wǎng)關(guān)(Gateway)隊(duì)列管理器,該隊(duì)列管理器上沒有任何共享隊(duì)列的副本,只需配置與集群外部的通訊設(shè)置(通道、監(jiān)聽器等)和相關(guān)的隊(duì)列管理器別名(Queue-manageralias)。
即便WebsphereMQ具有上述的局限,但瑕不掩瑜,在大規(guī)模集群方面,消息中間件(MOM)業(yè)內(nèi)還是少有能出其右者。這也許是在消息中間件技術(shù)不算悠久的發(fā)展歷程上,無法回避的成長的陣痛。畢竟,MQ還是為我們提供了解決問題的途徑,雖然犧牲了些許的系統(tǒng)部署、管理的復(fù)雜度,手法也顯的不是那么的優(yōu)雅。
"是否優(yōu)先使用本地副本?是否采用輪循的分配策略?",在這個(gè)問題上,使用者應(yīng)當(dāng)具有自由的裁量權(quán)利,并擁有便捷的設(shè)置手段。我們終于在WebsphereMQv6里找回了那些被剝奪了的選擇的自由。#p#
在WebsphereMQv6中,使用者可以根據(jù)集群成員節(jié)點(diǎn)的實(shí)際處理能力,合理、靈活的分配工作負(fù)載,輪循(RoundRobin)順理成章的成為缺省的分發(fā)策略。本地共享隊(duì)列副本優(yōu)先的策略也依然是缺省的設(shè)置,但用戶可以非常方便的修改策略,使集群中的其它共享隊(duì)列副本可以和本地副本一樣參與到消息分發(fā)的機(jī)制當(dāng)中。當(dāng)然,用戶出口(UserExit)程序仍然被支持,用戶可以使用該機(jī)制實(shí)現(xiàn)更加個(gè)性化的websphere負(fù)載均衡策略。
為支持上述新增功能,WebsphereMQ為隊(duì)列、通道、隊(duì)列管理器等對象增加了若干的參數(shù)。
對象 | 參數(shù)命 | 解釋 | 缺省值 |
隊(duì)列(Queues) | CLWLUSEQ | 指定該隊(duì)列在負(fù)載均衡策略中,本地隊(duì)列副本參與分發(fā)的方式。 LOCAL:只使用本地隊(duì)列。 QMGR:參考隊(duì)列管理器的CLWLUSEQ定義。 ANY:將本地和遠(yuǎn)程隊(duì)列同等考慮。 |
QMGR |
CLWLPRTY | 指定共享隊(duì)列副本的優(yōu)先級(jí)。取值范圍:0~9。 集群將所有消息發(fā)送到優(yōu)先級(jí)***的隊(duì)列副本, 只有當(dāng)優(yōu)先級(jí)高的隊(duì)列副本不可用時(shí),優(yōu)先級(jí)低的隊(duì)列副本才被考慮。 隊(duì)列副本的優(yōu)先級(jí)在通道狀態(tài)檢查后才被檢查;所以,只有當(dāng)前可用的隊(duì)列管理器才可能被選擇。如果通道不可用,即便相應(yīng)的隊(duì)列副本優(yōu)先級(jí)高,也不會(huì)被選中。 |
0 | |
CLWLRANK | 指定共享隊(duì)列副本的等級(jí)。取值范圍:0~9。 集群將所有消息發(fā)送到等級(jí)***的隊(duì)列副本。隊(duì)列副本等級(jí)在通道狀態(tài)檢查之前被檢查,所以無論對應(yīng)的通道是否可用,等級(jí)高的隊(duì)列都將被選擇。 |
0 | |
隊(duì)列管理器 (Queue manager) |
CLWLUSEQ | 指定該隊(duì)列管理器在負(fù)載均衡策略中,本地隊(duì)列副本參與分發(fā)的方式。 LOCAL:只使用本地隊(duì)列。 ANY:將本地和遠(yuǎn)程隊(duì)列同等考慮。 |
LOCAL |
CLWLMRUC | ***outbound集群通道, 取值:1~999,999,999。 | 999,999,999 | |
通道(Channels) | CLWLWGHT | 通道負(fù)載均衡權(quán)重值, 取值:1~99。 只對CLUSSDR和CLUSRCVR生效。 集群根據(jù)該權(quán)重決定分配到通道對應(yīng)的隊(duì)列副本上的消息數(shù)量。 |
50 |
CLWLPRTY | 指定集群通道的優(yōu)先級(jí)。取值范圍:0~9。 只對CLUSSDR和CLUSRCVR生效。 集群通過優(yōu)先級(jí)***的通道將所有消息發(fā)送到相應(yīng)的隊(duì)列副本,只有當(dāng)優(yōu)先級(jí)高的通道不可用時(shí),優(yōu)先級(jí)低的通道才被考慮。 通道的優(yōu)先級(jí)在通道狀態(tài)檢查后才被檢查;所以只有當(dāng)前可用的通道才可能被選擇。如果通道不可用,即便優(yōu)先級(jí)高,也不會(huì)被選中。 隊(duì)列副本優(yōu)先級(jí)在通道優(yōu)先級(jí)檢查后被考慮。 |
0 | |
CLWLRANK | 指定集群通道的等級(jí)。取值范圍:0~9。 只對CLUSSDR和CLUSRCVR生效。 集群通過等級(jí)***的通道將所有的消息發(fā)送到相應(yīng)的隊(duì)列副本,只有當(dāng)?shù)燃?jí)高的通道不可用時(shí),等級(jí)低的通道才被考慮。 通道等級(jí)在通道狀態(tài)檢查之前被檢查,所以無論對應(yīng)的通道是否可用,等級(jí)高的通道都將被選擇。 隊(duì)列副本等級(jí)在通道等級(jí)檢查后被考慮。 |
0 |