對(duì)于進(jìn)行處理的Tuxedo負(fù)載均衡介紹
我們說(shuō)了很多負(fù)載均衡的問(wèn)題,我們都是針對(duì)網(wǎng)絡(luò)方面進(jìn)行解說(shuō)的。其實(shí),在服務(wù)器的應(yīng)用線(xiàn)程方面也可以進(jìn)行負(fù)載均衡的優(yōu)化。在這里我們對(duì)事務(wù)處理的Tuxedo的負(fù)載均衡問(wèn)題進(jìn)行一個(gè)解說(shuō)?,F(xiàn)在就讓我們一起從文中來(lái)了解具體的內(nèi)容吧。
Tuxedo中間件通過(guò)將客戶(hù)端請(qǐng)求進(jìn)行排隊(duì)的方式,實(shí)現(xiàn)將客戶(hù)請(qǐng)求以均衡的方式交給服務(wù)器進(jìn)行處理,從而達(dá)到減輕應(yīng)用服務(wù)器資源負(fù)擔(dān)的目的。我們可以通過(guò)合理設(shè)置服務(wù)進(jìn)程個(gè)數(shù)和請(qǐng)求隊(duì)列個(gè)數(shù)來(lái)達(dá)到提高大并發(fā)量應(yīng)用的性能的目的。在最簡(jiǎn)單的情況下,只有一個(gè)服務(wù)進(jìn)程(可能包含一個(gè)或多個(gè)服務(wù))來(lái)處理客戶(hù)端對(duì)其中服務(wù)的請(qǐng)求,所有的請(qǐng)求首先放入這個(gè)服務(wù)進(jìn)程的隊(duì)列里面,然后服務(wù)進(jìn)程逐個(gè)取出處理。復(fù)雜一些,如果一個(gè)服務(wù)進(jìn)程不能滿(mǎn)足業(yè)務(wù)系統(tǒng)對(duì)性能的要求,tuxedo可以啟動(dòng)服務(wù)進(jìn)程的多個(gè)實(shí)例,來(lái)提高服務(wù)進(jìn)程對(duì)請(qǐng)求的處理速度,此時(shí)tuxedo配置請(qǐng)求隊(duì)列的方式就會(huì)影響到大并發(fā)請(qǐng)求應(yīng)用的性能,下面我們以simpserv這個(gè)簡(jiǎn)單應(yīng)用為例,對(duì)tuxedo的負(fù)載均衡方式加以探討。
一、單進(jìn)程單隊(duì)列
單server單隊(duì)列方式下UBBconfig的配置如下:
simpserv SRVGRP=GROUP1 SRVID=1
這時(shí)tuxedo在boot時(shí)只啟動(dòng)一個(gè)服務(wù)進(jìn)程提供服務(wù),所有的請(qǐng)求首先放入這個(gè)服務(wù)進(jìn)程的隊(duì)列里面,然后服務(wù)進(jìn)程逐個(gè)取出處理。單個(gè)服務(wù)進(jìn)程不能滿(mǎn)足要求的情況下,就要考慮多進(jìn)程的方式。
二、多進(jìn)程多隊(duì)列
多進(jìn)程多隊(duì)列方式tuxedo直接啟動(dòng)服務(wù)進(jìn)程的多個(gè)實(shí)例,每個(gè)server都有自己的請(qǐng)求隊(duì)列。UBBconfig中*SERVERS段描述部分有幾個(gè)參數(shù)控制著進(jìn)程和隊(duì)列的啟停方式。其中,MIN代表最少啟動(dòng)的進(jìn)程個(gè)數(shù),其缺省值為1。 MAX代表啟動(dòng)的進(jìn)程***個(gè)數(shù),其缺省等于MIN,如果設(shè)置了MAX值且大于MIN,則代表tuxedo可以在服務(wù)進(jìn)程忙時(shí)自動(dòng)啟動(dòng)最多到MAX個(gè)進(jìn)程實(shí)例。單進(jìn)程單隊(duì)列的模式中,由于沒(méi)有指定MIN和MAX參數(shù),因此MAX和MIN二參數(shù)取了缺省值1,即單服務(wù)進(jìn)程實(shí)例方式。
多進(jìn)程多隊(duì)列的UUBconfig配置舉例如下:
Simpserv SRVGRP=GROUP1 SRVID=1 MIN = 3 MAX = 5
CLOPT="-A -r -v -p 3,10:6,5"
如果沒(méi)有指定請(qǐng)求隊(duì)列名稱(chēng),每個(gè)simpserv進(jìn)程都會(huì)生成一個(gè)請(qǐng)求隊(duì)列,第二列就是該進(jìn)程對(duì)應(yīng)的隊(duì)列名,隊(duì)列名稱(chēng)的缺省值為GRPNO.SRVID,既“."前面是GRPNO,后面是SRVID,可以看出每個(gè)simpserv進(jìn)程有自己的請(qǐng)求隊(duì)列。CLOPT中的-p參數(shù)控制tuxedo根據(jù)系統(tǒng)負(fù)載情況可以自動(dòng)啟動(dòng)或停止一些simpserv進(jìn)程,本例表示,隊(duì)列等待請(qǐng)求大于6個(gè)且時(shí)間超過(guò) 5秒服務(wù)進(jìn)程自動(dòng)增加,隊(duì)列等待請(qǐng)求小于3個(gè)且時(shí)間超過(guò)20秒時(shí),服務(wù)服務(wù)進(jìn)程自動(dòng)減少,但實(shí)存的進(jìn)程個(gè)數(shù)限制在 MIN和MAX之間。相關(guān)的另一個(gè)參數(shù)就是UUBconfig中*RESOURCES段的LDBAL,表示是否啟動(dòng)負(fù)載均衡機(jī)制,默認(rèn)是“N"(不啟動(dòng)),你可以通過(guò)設(shè)置成“Y"來(lái)啟動(dòng)。這里需要注意的是,為“N"的時(shí)候并不表示多個(gè)服務(wù)進(jìn)程不能分擔(dān)負(fù)載。主要的差別是為“Y"時(shí),TUXEDO在接收到請(qǐng)求時(shí)會(huì)按照它的負(fù)載均衡的算法來(lái)找到合適的服務(wù)進(jìn)程來(lái)處理,而設(shè)置成“N"時(shí),總是由***個(gè)可用的進(jìn)程來(lái)處理。通過(guò)這種方法可以讓多個(gè)進(jìn)程來(lái)處理大量并發(fā)的請(qǐng)求,就達(dá)到了改善性能的目的。SRVID取值介于SRVID和SRVID+MAX-1,系統(tǒng)自動(dòng)賦值。