專利名稱:接續(xù)持續(xù)連接的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信網(wǎng)絡(luò),尤其涉及基于分組的網(wǎng)絡(luò)。
HTTP消息以TCP連接來傳送。通常,當(dāng)客戶機(jī)想訪問服務(wù)器時(shí),它利用眾所周知的HTTP端口(即TCP端口#80)或利用服務(wù)器的其他任何HTTP端口建立一個(gè)TCP連接,在連接建立后,通過該連接發(fā)送HTTP請求消息。TCP連接的建立要求在客戶機(jī)與服務(wù)器之間傳送三個(gè)分組,并可能需要少量的但可感到的時(shí)間。此外,建立連接消耗了服務(wù)器中的計(jì)算時(shí)間。在HTTP協(xié)議的早期版本中,各個(gè)HTTP請求消息通過單獨(dú)的TCP連接發(fā)送到服務(wù)器,其方式稱為持續(xù)方式。服務(wù)器通過接收請求消息時(shí)所用的TCP連接發(fā)送HTTP響應(yīng)消息,然后再終止該TCP連接。較新的HTTP版本(即HTTPv1.1)使客戶機(jī)與服務(wù)器之間所傳送的所有HTTP消息都可以可選擇地使用同一TCP連接。因此,單個(gè)TCP連接可以載送從客戶機(jī)發(fā)向服務(wù)器的HTTP請求消息流。利用這種方案可以縮短建立TCP連接所需的時(shí)間。但是,服務(wù)器仍必須花費(fèi)其一部分計(jì)算資源來管理TCP連接的建立和終止,尤其當(dāng)不采用持續(xù)方式時(shí),例如對于不支持新HTTP版本的客戶機(jī)(如瀏覽器、高速緩沖服務(wù)器)來說更浪費(fèi)計(jì)算資源。
由于要訪問Web站點(diǎn)的客戶機(jī)很多,要由Web站點(diǎn)來載送的信息量很大,和/或?yàn)榱艘獋溆?,因此,許多Web站點(diǎn)都是由多個(gè)服務(wù)器來主控的。負(fù)載均衡器接收發(fā)向Web站點(diǎn)的分組,并根據(jù)一個(gè)或多個(gè)參數(shù)將這些分組轉(zhuǎn)發(fā)到各自的服務(wù)器。負(fù)載均衡器還有其他用途,例如用于將HTTP請求改發(fā)到代理高速緩沖存儲(chǔ)器。
一些負(fù)載均衡器這樣來選擇分組所要轉(zhuǎn)發(fā)到的服務(wù)器,其方法是將分組負(fù)載基本上均勻地分配到主控Web站點(diǎn)的服務(wù)器中。在這些負(fù)載均衡器中,服務(wù)器的選擇與發(fā)向Web站點(diǎn)的消息內(nèi)容無關(guān)。通常,這些負(fù)載均衡器將帶有建立TCP連接請求的分組直接轉(zhuǎn)發(fā)到所選定的服務(wù)器,這樣,就可以在客戶機(jī)與所選定服務(wù)器之間建立TCP連接。
在另外一些負(fù)載均衡器中,服務(wù)器的選擇與發(fā)向Web站點(diǎn)的消息內(nèi)容有關(guān)。例如,Web站點(diǎn)的不同部分可以由不同的服務(wù)器來主控。在這些情況下,關(guān)于分組要轉(zhuǎn)發(fā)到哪個(gè)服務(wù)器的決定取決于該分組涉及到Web站點(diǎn)的哪一部分。通常,根據(jù)請求消息的URL來決定一連串分組涉及到Web站點(diǎn)的哪一部分。在其他情況下,根據(jù)分組的cookie字段和/或請求類型字段來決定。在這些負(fù)載均衡器中,在客戶機(jī)與負(fù)載均衡器之間建立TCP連接,這樣,負(fù)載均衡器就能接收請求消息的第一個(gè)分組并檢查URL。URL被檢查后,負(fù)載均衡器又在負(fù)載均衡器與所選定服務(wù)器之間建立TCP連接。于是,在稱為接續(xù)的過程中,負(fù)載均衡器起到了兩個(gè)TCP連接(即,客戶機(jī)與負(fù)載均衡器之間的連接和負(fù)載均衡器與所選定服務(wù)器之間的連接)之間的橋接器的作用。在建立負(fù)載均衡器與所選定服務(wù)器之間的TCP連接時(shí),必須將請求消息的第一個(gè)分組存儲(chǔ)到負(fù)載均衡器中。這就要求安排一個(gè)很大的存儲(chǔ)區(qū),供負(fù)載均衡器當(dāng)前正在為其選定服務(wù)器的那些連接的所有第一分組所使用。
在本發(fā)明的某些實(shí)施方式中,負(fù)載均衡器監(jiān)視它與服務(wù)器之間的TCP連接,這樣,基本上在任何時(shí)候,它與每個(gè)服務(wù)器之間的未使用的連接個(gè)數(shù)都在相應(yīng)服務(wù)器的預(yù)定允許范圍內(nèi)。
本發(fā)明的一些實(shí)施方式的一個(gè)方面涉及這樣一種負(fù)載均衡器,這種負(fù)載均衡器一直跟蹤它轉(zhuǎn)發(fā)到已接續(xù)的連接(包括將客戶機(jī)連接到負(fù)載均衡器的客戶機(jī)連接和將負(fù)載均衡器連接到服務(wù)器的服務(wù)器連接)中的業(yè)務(wù)量。必要時(shí),負(fù)載均衡器可根據(jù)流的變化來改變連接的接續(xù)(例如取代服務(wù)器連接)??蛇x地,當(dāng)負(fù)載均衡器接收到新請求消息時(shí),負(fù)載均衡器選擇服務(wù)器來為新請求服務(wù),而沒必要選用服務(wù)于前一請求的同一個(gè)服務(wù)器??蛇x地,在選擇新服務(wù)器時(shí),服務(wù)于前一請求的服務(wù)器優(yōu)先于其他服務(wù)器。注意,在現(xiàn)有技術(shù)中,根據(jù)HTTP請求中的信息(如URL)來選擇服務(wù)器的負(fù)載均衡器一般不允許多個(gè)請求使用單個(gè)TCP連接。例外情況很少,比如,當(dāng)單一IP地址代表多個(gè)由各自服務(wù)器主控的站點(diǎn)名而且負(fù)載均衡只用URL中的站點(diǎn)名時(shí)。
本發(fā)明的一些實(shí)施方式的一個(gè)方面涉及這樣一種負(fù)載均衡器,這種負(fù)載均衡器管理它與其相關(guān)服務(wù)器之間的TCP連接,該連接基本上是一直開放的??蛇x地,用于將消息從負(fù)載均衡器發(fā)送到服務(wù)器的TCP連接的選擇與該消息來自哪個(gè)客戶機(jī)無關(guān)。在本發(fā)明的一些實(shí)施方式中,將負(fù)載均衡器連接到服務(wù)器的同一個(gè)TCP連接可為來自不同客戶機(jī)的請求服務(wù)。針對多個(gè)不同客戶機(jī),該服務(wù)器使用相同的TCP連接減小了服務(wù)器在處理TCP連接時(shí)的負(fù)載。在本發(fā)明的一些實(shí)施方式中,實(shí)際上只有當(dāng)服務(wù)器的負(fù)載有很大的變化時(shí)和/或當(dāng)出錯(cuò)時(shí),服務(wù)器才需要建立和/或終止連接。
可選地,本發(fā)明的一個(gè)或多個(gè)方面由這樣的負(fù)載均衡器來實(shí)現(xiàn),這種負(fù)載均衡器根據(jù)HTTP請求消息中的信息(如URL或cookie字段)來選擇服務(wù)器。或者或此外,本發(fā)明的一個(gè)或多個(gè)方面由這樣的負(fù)載均衡器來實(shí)現(xiàn),這種負(fù)載均衡器選擇服務(wù)器時(shí)與HTTP請求消息中的信息無關(guān)。
可選地,根據(jù)本發(fā)明的一些實(shí)施方式,提供了一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的用于傳送分組的第一連接;選擇服務(wù)器來為客戶機(jī)服務(wù);和將第一連接同負(fù)載均衡器與所選定服務(wù)器之間的第二連接相接續(xù),該第二連接是在第一連接之前被建立的。
可選地,選擇服務(wù)器包括根據(jù)通過第一連接所發(fā)送的HTTP請求的內(nèi)容來選擇服務(wù)器。
或者或此外,選擇服務(wù)器包括根據(jù)負(fù)載均衡器與一個(gè)或多個(gè)與該負(fù)載均衡器相關(guān)的服務(wù)器之間的若干個(gè)可用連接來選擇服務(wù)器。或者或此外,選擇服務(wù)器包括選擇它與負(fù)載均衡器之間至少有一個(gè)可用連接的服務(wù)器??蛇x地,這種方法包括監(jiān)視負(fù)載均衡器與服務(wù)器中的至少一個(gè)之間的連接個(gè)數(shù),這樣,當(dāng)該服務(wù)器所處理的連接總數(shù)少于服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)在某一預(yù)定范圍內(nèi)。
可選地,這種方法包括斷開第一與第二連接之間的接續(xù),而將第二連接同負(fù)載均衡器與客戶機(jī)之間所建立的第三連接相接續(xù)。可選地,在負(fù)載均衡器與同一客戶機(jī)之間建立第一和第三連接。或者,在負(fù)載均衡器與不同客戶機(jī)之間建立第一和第三連接??蛇x地,這種方法包括幾乎在斷開第一與第二連接之間的接續(xù)的同時(shí)終止第一連接。
可選地,這種方法包括將第一連接與將負(fù)載均衡器連接到服務(wù)器的第四連接相接續(xù)??蛇x地,第四連接包括以前建立的連接??蛇x地,這種方法包括檢查通過第一連接發(fā)送的分組的內(nèi)容,以判斷何時(shí)通過第一連接發(fā)送新請求。可選地,這種方法包括選擇服務(wù)器來為新請求服務(wù),和將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)。
在本發(fā)明的一些實(shí)施方式中,將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)包括如果被接續(xù)到第一連接的當(dāng)前連接通向被選定服務(wù)于新請求的服務(wù)器,則繼續(xù)保持第一連接與當(dāng)前所接續(xù)的連接之間的接續(xù)。
或者或此外,將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)包括如果被接續(xù)到第一連接的當(dāng)前連接并沒有通向被選定服務(wù)于新請求的服務(wù)器,則斷開第一連接的當(dāng)前接續(xù)并將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)??蛇x地,斷開第一連接的當(dāng)前接續(xù)包括檢查通過第一連接發(fā)送的分組的內(nèi)容,以判斷何時(shí)通過該連接發(fā)送對前一請求的響應(yīng),只有當(dāng)整個(gè)響應(yīng)全被發(fā)送到客戶機(jī)后才斷開當(dāng)前接續(xù)。
可選地,斷開第一連接的當(dāng)前接續(xù)包括只有當(dāng)接收到來自客戶機(jī)的對整個(gè)響應(yīng)的接收確認(rèn)后才斷開當(dāng)前接續(xù)。在本發(fā)明的一些實(shí)施方式中,選擇服務(wù)于新HTTP請求的服務(wù)器優(yōu)先選擇當(dāng)前被接續(xù)到第一連接的那個(gè)連接所通向的服務(wù)器??蛇x地,第一和第二連接都包括TCP連接。
根據(jù)本發(fā)明的一些實(shí)施方式,還提供了一種對與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器進(jìn)行操作的方法,該方法包括建立與多個(gè)服務(wù)器中的至少一個(gè)之間的一個(gè)或多個(gè)連接;根據(jù)客戶機(jī)的連接到一個(gè)或多個(gè)服務(wù)器的請求,將一個(gè)或多個(gè)所建立的連接與客戶機(jī)連接相接續(xù);和監(jiān)視負(fù)載均衡器與多個(gè)服務(wù)器中的至少一個(gè)之間的連接個(gè)數(shù),這樣,當(dāng)這些服務(wù)器中的每一個(gè)所處理的連接總數(shù)少于服務(wù)器所允許的各自的預(yù)定最多連接個(gè)數(shù)時(shí),通向一個(gè)或多個(gè)服務(wù)器的連接中的至少一個(gè)連接沒有被接續(xù)到與客戶機(jī)之間的連接。
在本發(fā)明的一些實(shí)施方式中,監(jiān)視連接個(gè)數(shù)包括這樣進(jìn)行監(jiān)視,當(dāng)服務(wù)器所處理的連接總數(shù)少于該服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與到客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)在某一預(yù)定范圍內(nèi)。
或者,監(jiān)視連接個(gè)數(shù)包括這樣進(jìn)行監(jiān)視,當(dāng)服務(wù)器所處理的連接總數(shù)少于該服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)等于某一預(yù)定個(gè)數(shù)(短瞬變期間除外)。可選地,對于多個(gè)服務(wù)器中的至少兩個(gè)服務(wù)器,其預(yù)定范圍是不同的。
根據(jù)本發(fā)明的一些實(shí)施方式,還提供了一種將分組從負(fù)載均衡器發(fā)送到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與服務(wù)器之間的用于傳送分組的TCP連接;和通過同一TCP連接將負(fù)載均衡器接收到的來自多個(gè)不同客戶機(jī)的分組發(fā)送到該服務(wù)器。
可選地,通過該連接發(fā)送來自多個(gè)不同客戶機(jī)的分組包括將該連接與到第一客戶機(jī)的連接相接續(xù),用于發(fā)送來自第一客戶機(jī)的分組然后,將該連接與第二客戶機(jī)連接相接續(xù),用于發(fā)送來自第二客戶機(jī)的分組。可選地,保持所建立的TCP連接開放至少一小時(shí)或一整天。可選地,至少一些分組是由負(fù)載均衡器通過非持續(xù)HTTP連接接收的。
根據(jù)本發(fā)明的一些實(shí)施方式,還提供了一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的第一TCP連接;通過第一連接接收多個(gè)HTTP請求;至少部分地根據(jù)請求的內(nèi)容,選擇服務(wù)器來為各個(gè)HTTP請求服務(wù);將請求轉(zhuǎn)發(fā)到所選定的各自的服務(wù)器,所選定服務(wù)器包括至少兩個(gè)服務(wù)器;接收來自各自服務(wù)器的對所轉(zhuǎn)發(fā)請求的響應(yīng);和將接收到的響應(yīng)轉(zhuǎn)發(fā)到客戶機(jī),而負(fù)載均衡器無需為重復(fù)使用而存儲(chǔ)響應(yīng)。
可選地,建立第一連接包括建立一種HTTP持續(xù)連接。在本發(fā)明的一些實(shí)施方式中,選擇服務(wù)器包括根據(jù)請求中的URL和/或請求中的cookie字段進(jìn)行選擇。
根據(jù)本發(fā)明的一些實(shí)施方式,還提供了一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的第一TCP連接;將第一連接同負(fù)載均衡器與服務(wù)器之間的第二連接相接續(xù);通過所接續(xù)的第一和第二連接發(fā)送多個(gè)分組;和檢查通過這些連接發(fā)送的多個(gè)分組的應(yīng)用級內(nèi)容,以判斷何時(shí)斷開該接續(xù)。
可選地,檢查多個(gè)分組包括判斷響應(yīng)消息何時(shí)結(jié)束以及何時(shí)接收客戶機(jī)對響應(yīng)的最后一個(gè)字節(jié)的接收確認(rèn)。可選地,檢查多個(gè)分組包括判斷何時(shí)通過第一連接發(fā)送新請求??蛇x地,這種方法包括針對新請求,判斷是否可由第二連接所通向的服務(wù)器來處理該請求。
在本發(fā)明的一些實(shí)施方式中,多個(gè)客戶機(jī)26形成它與負(fù)載均衡器24之間的TCP連接28(在此稱為客戶機(jī)連接)。負(fù)載均衡器24管理它與至少一些服務(wù)器22之間的TCP連接30(在此稱為服務(wù)器連接,并標(biāo)記為30A和30B)。一些服務(wù)器連接30(標(biāo)記為30A)當(dāng)前被接續(xù)到各自的連接28。其他TCP服務(wù)器連接30(標(biāo)記為30B)當(dāng)前未在使用,而當(dāng)客戶機(jī)建立了它與負(fù)載均衡器24之間的另一個(gè)連接時(shí)可立刻投入使用。
在本發(fā)明的一些實(shí)施方式中,負(fù)載均衡器24確信,基本上在任何時(shí)候,負(fù)載均衡器24與每個(gè)服務(wù)器22之間的可用連接30B的個(gè)數(shù)都在某一預(yù)定范圍內(nèi)或等于某一預(yù)定個(gè)數(shù)??蛇x地,允許可用連接30B的個(gè)數(shù)在短時(shí)間內(nèi)(例如在現(xiàn)有連接被接續(xù)時(shí)與形成另一個(gè)連接時(shí)之間的瞬變時(shí)間內(nèi))多于或少于該預(yù)定個(gè)數(shù)或范圍。可選地,當(dāng)服務(wù)器22的連接個(gè)數(shù)接近該服務(wù)器所處理的最多連接個(gè)數(shù)時(shí),允許可用連接30B的個(gè)數(shù)降到少于預(yù)定個(gè)數(shù)。進(jìn)一步可選地,當(dāng)服務(wù)器22的連接30的個(gè)數(shù)達(dá)到服務(wù)器的最大容量時(shí),不再保持該服務(wù)器的可用連接30B。
可選地,每當(dāng)可用連接30B被接續(xù)到相應(yīng)的連接28,負(fù)載均衡器24就開始建立它與同一服務(wù)器22之間的另一個(gè)連接30B。此外,每當(dāng)所接續(xù)的服務(wù)器連接30A從其接續(xù)中被釋放時(shí),連接30A就被終止。
在本發(fā)明的一些實(shí)施方式中,預(yù)定個(gè)數(shù)或范圍實(shí)際上對所有服務(wù)器22來說都是相同的?;蛘撸绺鶕?jù)服務(wù)器22接收新請求的速率,一些或所有服務(wù)器22對于所需要的可用連接30B的個(gè)數(shù)而言可具有不同的預(yù)定范圍。在本發(fā)明的一些實(shí)施方式中,可根據(jù)建立與服務(wù)器22之間的新連接的速率,選擇所需要的可用連接30B的個(gè)數(shù)的預(yù)定范圍?;蛘呋虼送?,可以選擇該預(yù)定范圍,以便最大限度地減小服務(wù)器22上建立和終止連接和/或管理連接所要求的負(fù)載。在本發(fā)明的一些實(shí)施方式中,可用連接30B的個(gè)數(shù)是群20上的負(fù)載的函數(shù),這樣,當(dāng)該群忙于處理客戶機(jī)請求時(shí),可用連接30B的個(gè)數(shù)很小或?yàn)榱?。尤其是,?dāng)服務(wù)器22達(dá)到其能服務(wù)的連接30的最大容量時(shí),服務(wù)器22不再管理未使用的連接30B。
在本發(fā)明的一些實(shí)施方式中,一些服務(wù)器22在某些時(shí)間段沒有可用連接30B??蛇x地,當(dāng)兩個(gè)或兩個(gè)以上的服務(wù)器22能夠處理相同的請求組時(shí),只有其中的一個(gè)服務(wù)器具有通向它的可用服務(wù)器連接30B。在本發(fā)明的一些實(shí)施方式中,每個(gè)服務(wù)器22的可用連接30B的個(gè)數(shù)取決于服務(wù)器的負(fù)載,這樣,相對負(fù)載較大的服務(wù)器其可用連接30B較少或沒有,而負(fù)載較小的服務(wù)器22其可用連接30B較多。
圖2是根據(jù)本發(fā)明的一種實(shí)施方式的負(fù)載均衡器24在處理HTTP客戶機(jī)請求時(shí)所執(zhí)行的步驟的流程圖。在圖2的實(shí)施方式中,假定,服務(wù)器22支持使用持續(xù)連接方式(即一種將單個(gè)連接用于多個(gè)HTTP請求的方式),還假定,從客戶機(jī)26發(fā)送到服務(wù)器22的請求消息包含有客戶機(jī)支持使用持續(xù)方式的指示。不過,應(yīng)當(dāng)注意,實(shí)現(xiàn)本發(fā)明并不要求這種假定,后面將描述這樣一些實(shí)施方式,其中,至少一些服務(wù)器22和/或客戶機(jī)26不支持持續(xù)連接。在持續(xù)方式中,服務(wù)器在其響應(yīng)中發(fā)送響應(yīng)結(jié)束的指示(例如響應(yīng)的長度)。因此,在持續(xù)方式中,不需要終止服務(wù)器與客戶機(jī)之間的TCP連接就可以指示響應(yīng)結(jié)束。
一旦接收(50)到請求建立與由服務(wù)器群20主控的Web站點(diǎn)之間的連接的TCP分組,負(fù)載均衡器24就通過各自的TCP分組來響應(yīng),以便建立(52)客戶機(jī)與負(fù)載均衡器24之間的連接28。檢查(54)通過所建立的連接接收到的一個(gè)或多個(gè)分組(例如,HTTP請求消息的第一分組或者一個(gè)或多個(gè)包含有URL的分組),相應(yīng)地,選擇(56)處理客戶機(jī)的請求的服務(wù)器22。然后,將所選定服務(wù)器22的可用連接30B同負(fù)載均衡器24與客戶機(jī)之間的連接28相接續(xù)(58),再根據(jù)接續(xù)情況,將檢查后的分組轉(zhuǎn)發(fā)到所選定服務(wù)器22。
然后,負(fù)載均衡器24所進(jìn)行的對連接的處理進(jìn)至轉(zhuǎn)發(fā)狀態(tài)60,在該轉(zhuǎn)發(fā)狀態(tài)中,根據(jù)接續(xù)情況來轉(zhuǎn)發(fā)通過所接續(xù)的連接接收到的分組。在本發(fā)明的一些實(shí)施方式中,在轉(zhuǎn)發(fā)狀態(tài)60期間,負(fù)載均衡器24監(jiān)視通過所接續(xù)的連接發(fā)送的分組,以判斷何時(shí)接收新HTTP請求的第一分組。當(dāng)接收(64)到新請求的第一分組時(shí),檢查該分組以便選擇(66)服務(wù)器22來為新請求服務(wù)。
如果(67)處理前一請求的服務(wù)器將處理新請求,那么,負(fù)載均衡器24返回到轉(zhuǎn)發(fā)狀態(tài)60。而如果(67)選擇了不同的服務(wù)器22,那么,可能在一段等待時(shí)間(例如,可使前一請求的響應(yīng)完全被客戶機(jī)接收到的一段等待時(shí)間)后,取消(68)客戶機(jī)連接28與原來所選定服務(wù)器22的服務(wù)器連接30之間的接續(xù)。然后,將客戶機(jī)連接28與新選定服務(wù)器22的可用服務(wù)器連接30B相接續(xù)(58),如后面所詳述。或者,建立到所選定服務(wù)器22的新服務(wù)器連接30(例如,如果沒有可用連接30的話),再將客戶機(jī)連接28與新建立的服務(wù)器連接30相接續(xù)。如果例如到那個(gè)特定服務(wù)器22已有足夠多的可用連接30B,那么,被釋放的服務(wù)器連接30要么在可用連接30B的連接庫中一直保持有效,要么被終止。然后,新接續(xù)的組合連接的處理進(jìn)至轉(zhuǎn)發(fā)狀態(tài)60。
將連接28與可用連接30B相接續(xù)時(shí),負(fù)載均衡器24通過消除建立連接30所需的等待時(shí)間,從而縮短了接收來自群20的響應(yīng)的等待時(shí)間。除了節(jié)省時(shí)間本身之外,負(fù)載均衡器24無需特殊要求就可以存儲(chǔ)超出交換機(jī)為了存儲(chǔ)被處理時(shí)的分組按標(biāo)準(zhǔn)所用的那些分組之外的分組,而且,還無需中等大小的存儲(chǔ)量(例如接收到確認(rèn)之前的存儲(chǔ)量)。因此,隨著等待時(shí)間的縮短,減少了為了緩沖分組直到這些分組被轉(zhuǎn)發(fā)到服務(wù)器之前所需的存儲(chǔ)空間。
在本發(fā)明的一些實(shí)施方式中,每個(gè)所選定服務(wù)器22總是有至少一個(gè)可能立即投入使用的可用連接30B?;蛘?,如果所選定服務(wù)器22沒有可用連接30B,那么,負(fù)載均衡器24建立與所選定服務(wù)器22的連接30,同時(shí)存儲(chǔ)分組??蛇x地,這樣來進(jìn)行服務(wù)器22的選擇和/或可用連接30B的管理,從而最大限度地減少選擇沒有通向它的可用連接30B的服務(wù)器22的可能性。
當(dāng)客戶機(jī)接收到對它所發(fā)送的所有HTTP請求的響應(yīng)時(shí),客戶機(jī)就開始終止與負(fù)載均衡器24的TCP連接28。因此,連接28被終止(74),且服務(wù)器連接30與所終止的連接28之間的接續(xù)也被取消(76)。在本發(fā)明的一些實(shí)施方式中,服務(wù)器連接30被返回給可用連接30B的連接庫,以便其他客戶機(jī)使用。
如果服務(wù)器例如由于連接空閑了很長一段時(shí)間而開始終止所接續(xù)的連接,那么,負(fù)載均衡器24作出響應(yīng),允許服務(wù)器連接30終止,此外,還開始終止所接續(xù)的客戶機(jī)連接28。可選地,建立另一個(gè)連接30B以取代所終止的服務(wù)器連接30?;蛘撸鐚τ诰哂懈逹oS的客戶機(jī),負(fù)載均衡器24允許服務(wù)器連接30終止并立即將客戶機(jī)連接與通向同一服務(wù)器的未使用的連接30B相接續(xù)。因此,即使當(dāng)該服務(wù)器試圖斷開連接時(shí),客戶機(jī)也接收連續(xù)的業(yè)務(wù)。或者,當(dāng)服務(wù)器開始終止連接時(shí),服務(wù)器連接被終止而客戶機(jī)連接不與服務(wù)器連接30相接續(xù)。當(dāng)通過客戶機(jī)連接接收到新請求時(shí),選擇服務(wù)器來處理該請求,并將客戶機(jī)連接與通向所選定服務(wù)器的服務(wù)器連接相接續(xù)。
在本發(fā)明的一些實(shí)施方式中,除非在服務(wù)器和/或負(fù)載均衡器啟動(dòng)時(shí)或者當(dāng)出錯(cuò)時(shí),否則不被建立和/或終止服務(wù)器連接30。可選地,當(dāng)一個(gè)或多個(gè)服務(wù)器22的負(fù)載有很大的變化時(shí),才建立和/或終止服務(wù)器連接30。在本發(fā)明的一些實(shí)施方式中,在服務(wù)器負(fù)載減小一段預(yù)定時(shí)間后,執(zhí)行因服務(wù)器負(fù)載減小而進(jìn)行的服務(wù)器連接終止,以免因短時(shí)間內(nèi)負(fù)載減小和增大就終止和建立連接30。因此,大大減小了服務(wù)器22建立和終止連接30時(shí)所需的開銷。建立和終止TCP連接的任務(wù)由可以專門定制來執(zhí)行這一任務(wù)的負(fù)載均衡器24來完成。
在本發(fā)明的一些實(shí)施方式中,在正常操作中,同一連接30可以使用幾小時(shí)、幾天甚至幾個(gè)月。注意,在本發(fā)明的一些實(shí)施方式中,連接30可以在不同的時(shí)候與通向不同客戶機(jī)的連接28相接續(xù)。
在本發(fā)明的一些實(shí)施方式中,即使當(dāng)在與請求的第一分組的內(nèi)容無關(guān)的情況下來選擇(56)處理用戶的請求的服務(wù)器時(shí),也可以采用本發(fā)明的方法。在這些實(shí)施方式中,可以不執(zhí)行選擇服務(wù)器22之前的分組的檢查(54)和/或在轉(zhuǎn)發(fā)狀態(tài)60期間的分組的監(jiān)視。注意,當(dāng)在與請求的內(nèi)容無關(guān)的情況下選擇服務(wù)器22時(shí),可以建立直接與所選定服務(wù)器22而不是與負(fù)載均衡器24的TCP連接。這種直接連接可以無需負(fù)載均衡器24的接續(xù),但會(huì)失去由服務(wù)器22建立和終止TCP連接的開銷小的優(yōu)點(diǎn)。
下面來詳述選擇(56)服務(wù)器22的步驟,在本發(fā)明的一些實(shí)施方式中,根據(jù)HTTP請求的一個(gè)或多個(gè)字段的內(nèi)容來選擇服務(wù)器??蛇x地,根據(jù)請求中涉及的URL和/或請求中的cookie字段進(jìn)行選擇?;蛘呋虼送猓梢圆捎帽绢I(lǐng)域中已知的選擇服務(wù)器的其他任何方法,包括上述與請求的內(nèi)容無關(guān)的方法。在本發(fā)明的一些實(shí)施方式中,根據(jù)不同服務(wù)器22的可用連接30B的個(gè)數(shù),來選擇(56)為特定客戶機(jī)服務(wù)的服務(wù)器22。在本發(fā)明的一例實(shí)施方式中,當(dāng)兩個(gè)或兩個(gè)以上服務(wù)器22都同等地有資格處理客戶機(jī)時(shí),選擇具有更多可用連接30B的服務(wù)器。
注意,在某些情況下,請求中的用來選擇(56)服務(wù)器22的信息并沒有完全包含在請求的第一分組中,而還包含在下一分組中,或者包含在多個(gè)分組中??蛇x地,在這些情況下,負(fù)載均衡器24一直保存通過該連接接收到的先行分組,直到接收到含有所需信息的那個(gè)分組(或所有分組)為止?;蛘呋虼送?,如果該請求是通過新建立的連接接收到的,那么負(fù)載均衡器24選擇服務(wù)器22時(shí)不用所需信息,因而要冒可能出錯(cuò)的風(fēng)險(xiǎn)。如果該請求是通過以前所用的連接接收到的,那么負(fù)載均衡器24可以選擇該連接目前所通向的服務(wù)器。或者或此外,負(fù)載均衡器24將請求的分組轉(zhuǎn)發(fā)到多個(gè)服務(wù)器(可選地具有較小的TCP窗或大小為0的TCP窗)。根據(jù)較后接收到的請求的分組和/或根據(jù)響應(yīng)的內(nèi)容,負(fù)載均衡器24選擇向客戶機(jī)返回響應(yīng)的負(fù)載均衡器,其余響應(yīng)被丟棄。
下面來詳述將客戶機(jī)連接與所選定服務(wù)器連接相接續(xù)(58)的步驟,基本上可以采用本領(lǐng)域中已知的任何接續(xù)方法。例如,接續(xù)可以包括改變該連接的一個(gè)或多個(gè)IP地址、TCP端口、TCP序列號和/或分組的校驗(yàn)和。在本發(fā)明的一些實(shí)施方式中,接續(xù)到一個(gè)或多個(gè)服務(wù)器22可以包括改變例如HTTP請求的內(nèi)容,以便將規(guī)范的HTTP請求變成代理請求格式??蛇x地,對于不同的服務(wù)器22,采用不同的接續(xù)方法。
下面來詳述轉(zhuǎn)發(fā)狀態(tài)60期間所進(jìn)行的監(jiān)視,在本發(fā)明的一些實(shí)施方式中,負(fù)載均衡器24檢查從客戶機(jī)發(fā)送到服務(wù)器群20的每個(gè)分組,以判斷該分組是否是HTTP請求的第一分組??蛇x地,根據(jù)分組的HTTP字段的起點(diǎn)進(jìn)行判斷?;蛘?,負(fù)載均衡器24檢查分組的整個(gè)HTTP字段,以便尋找HTTP命令關(guān)鍵字,如“GET”、“SET”?;蛘呋虼送?,負(fù)載均衡器24檢查從所選定服務(wù)器22發(fā)送到客戶機(jī)的響應(yīng)消息。例如,負(fù)載均衡器24從響應(yīng)的第一分組確定響應(yīng)長度并據(jù)此判斷何時(shí)發(fā)送響應(yīng)的最后一個(gè)分組。
在本發(fā)明的一些實(shí)施方式中,在前一請求的響應(yīng)完全被接收到之前,客戶機(jī)26可以發(fā)送另一個(gè)請求。如果由不同的服務(wù)器而非原請求的服務(wù)器來處理新請求,那么負(fù)載均衡器24保存新請求,直到對前一請求的響應(yīng)完全被客戶機(jī)26接收到并且可選地將接收的確認(rèn)轉(zhuǎn)發(fā)到提供響應(yīng)的服務(wù)器22為止。可選地,負(fù)載均衡器24檢查響應(yīng)的起點(diǎn)以確定其長度,然后檢查從客戶機(jī)26轉(zhuǎn)發(fā)到服務(wù)器22的確認(rèn)以判斷該響應(yīng)何時(shí)完全被接收到。在前一請求的響應(yīng)被轉(zhuǎn)發(fā)到客戶機(jī),并且可選地客戶機(jī)將確認(rèn)分組發(fā)送到負(fù)載均衡器24(由它將確認(rèn)轉(zhuǎn)發(fā)到服務(wù)器)之后,客戶機(jī)連接與處理前一連接的服務(wù)器之間的接續(xù)被斷開,而將客戶機(jī)連接與通向被選擇用來處理新請求的服務(wù)器的連接相接續(xù)。然后,再將所保存的新請求轉(zhuǎn)發(fā)到所選定服務(wù)器。
注意,在本發(fā)明的一些實(shí)施方式中,負(fù)載均衡器24不需要長期的存儲(chǔ)空間(即用于存儲(chǔ)重復(fù)使用的和/或接收到確認(rèn)之后的分組的存儲(chǔ)量)或者或此外,如果由不同的服務(wù)器而非原請求的服務(wù)器來處理新請求,那么負(fù)載均衡器24在接收到新請求后等待一段預(yù)定時(shí)間,然后斷開原來的接續(xù)。該預(yù)定時(shí)間段這樣來選定在原來的接續(xù)被斷開之前,對原請求的響應(yīng)基本上總是(利用確認(rèn))完全被提供。或者或此外,負(fù)載均衡器24一直等到在一個(gè)預(yù)定的時(shí)間段上沒有分組通過該連接被發(fā)送為止,然后斷開原來的接續(xù)?;蛘呋虼送?,在斷開與前一服務(wù)器的接續(xù)之前,利用長度有限的TCP窗(例如大小為0的TCP窗)將新請求轉(zhuǎn)發(fā)到新選定服務(wù)器??蛇x地,在斷開原服務(wù)器的連接之后,將從新選定服務(wù)器接收到的數(shù)據(jù)存儲(chǔ)到緩沖器中以便傳送給客戶機(jī)。在完全接收到對前一請求的響應(yīng)之后,將客戶機(jī)連接與通向新選定服務(wù)器的連接相接續(xù)并擴(kuò)大TCP窗。
在本發(fā)明的一些實(shí)施方式中,負(fù)載均衡器24周期性地通過當(dāng)前未投入使用的連接30B發(fā)送保活(keep alive)分組,以免這些連接因長時(shí)間空閑而被斷開?;蛘呋虼送?,負(fù)載均衡器24允許至少一些長時(shí)間空閑的連接30B被終止,從而利用這些空閑時(shí)間作為監(jiān)視未使用的連接30B的個(gè)數(shù)的方式。
下面來詳述選擇(66)新請求所用的服務(wù)器22的步驟,在本發(fā)明的一些實(shí)施方式中,優(yōu)先選擇服務(wù)于同一客戶機(jī)連接的前一請求的服務(wù)器??蛇x地,除非根本不可能,否則,選用處理前一請求的同一服務(wù)器。或者,選擇(66)新請求所用的服務(wù)器22作為客戶機(jī)的服務(wù)器的第一選擇(56),而不優(yōu)先選擇原來選擇的服務(wù)器22。
在本發(fā)明的一些實(shí)施方式中,當(dāng)負(fù)載均衡器24接收到?jīng)]有指示支持持續(xù)方式的客戶機(jī)請求時(shí),按照與以上針對指示支持持續(xù)方式的請求所述相同的方式將分組轉(zhuǎn)發(fā)到服務(wù)器??蛇x地,負(fù)載均衡器24不檢查它接收到的分組是否支持持續(xù)方式。當(dāng)所選定服務(wù)器22發(fā)送完對沒有指示支持持續(xù)方式的請求的響應(yīng)后,服務(wù)器22終止接收該請求所用的連接30。在本發(fā)明的一些實(shí)施方式中,隨著連接30的終止,負(fù)載均衡器24終止與所終止的連接30相接續(xù)的連接28??蛇x地,除此之外,負(fù)載均衡器24建立服務(wù)器22的新連接30B,以取代所終止的服務(wù)器連接。因此,盡管服務(wù)器22在每個(gè)請求被處理之后終止了連接,但可用連接30B的個(gè)數(shù)仍保持不變。
或者或此外,負(fù)載均衡器24將支持持續(xù)方式的指示加到轉(zhuǎn)發(fā)到服務(wù)器22的客戶機(jī)請求中。當(dāng)接收到對加有支持持續(xù)方式的指示的請求的響應(yīng)消息時(shí),負(fù)載均衡器24一直跟蹤響應(yīng)的進(jìn)程,并在響應(yīng)結(jié)束時(shí)終止從客戶機(jī)接收請求所用的連接28(例如通過發(fā)送設(shè)置了TCP FIN標(biāo)志的分組的方式)??蛇x地,負(fù)載均衡器24還從響應(yīng)消息中刪除以持續(xù)方式操作的任何指示(例如某些HTTP版本中的響應(yīng)長度)?;蛘?,也可將任何這類指示仍留在響應(yīng)中,因?yàn)榭蛻魴C(jī)通常不理會(huì)這些指示。因此,即使當(dāng)一些或所有客戶機(jī)不支持持續(xù)HTTP連接時(shí),服務(wù)器22也可以用同一服務(wù)器連接30來接收和應(yīng)答多個(gè)請求。
在本發(fā)明的一些實(shí)施方式中,當(dāng)服務(wù)器22不支持持續(xù)方式時(shí),服務(wù)器在發(fā)送完對請求的響應(yīng)后就終止接收請求所用的連接30。隨著服務(wù)器連接30的終止,負(fù)載均衡器24終止與所終止的連接30相接續(xù)的連接28?;蛘呋虼送?,負(fù)載均衡器24對每個(gè)連接28跟蹤請求是否指示支持持續(xù)連接。如果連接28的請求指示支持持續(xù)連接,那么,隨著其所接續(xù)到的服務(wù)器連接30的終止,服務(wù)器22可以不終止連接28。而是,負(fù)載均衡器24將連接28與通向處理前一請求的服務(wù)器22的未使用的連接30相接續(xù)?;蛘?,在接收到新請求后,負(fù)載均衡器24才使客戶機(jī)連接28被接續(xù),然后,根據(jù)請求的內(nèi)容,選擇服務(wù)器連接30與客戶機(jī)連接28相接續(xù)。
即使當(dāng)處理HTTP請求的服務(wù)器22的選擇(56)取決于請求的內(nèi)容時(shí),對在轉(zhuǎn)發(fā)狀態(tài)60操作期間通過負(fù)載均衡器24轉(zhuǎn)發(fā)的分組的監(jiān)視也允許采用持續(xù)方式。當(dāng)必須由不同的服務(wù)器22來處理的HTTP請求通過同一客戶機(jī)連接28時(shí),負(fù)載均衡器24分別識(shí)別每個(gè)請求,并通過各自的服務(wù)器連接30將請求傳送到各自的能處理該特定請求的服務(wù)器22。
注意,本發(fā)明的一些實(shí)施方式可以執(zhí)行比上述任務(wù)更少的任務(wù)。具體地說,在本發(fā)明的一種實(shí)施方式中,負(fù)載均衡器24不支持使用持續(xù)連接。在該實(shí)施方式中,為了判斷何時(shí)接收到新請求和/或何時(shí)完成對請求的響應(yīng),并不需要監(jiān)視請求和響應(yīng)的內(nèi)容。利用這種實(shí)施方式便于使用預(yù)建立的服務(wù)器連接30B,而且基本上不會(huì)增加負(fù)載均衡器24的復(fù)雜性。使用預(yù)建立的服務(wù)器連接可以減小負(fù)載均衡器24所需的存儲(chǔ)量,這是因?yàn)?,?fù)載均衡器在建立與分組所轉(zhuǎn)發(fā)到的服務(wù)器之間的連接之后,才需要存儲(chǔ)來自客戶機(jī)的分組。
注意,負(fù)載均衡器24可以用硬件方式、軟件方式或它們的任意綜合方式來實(shí)現(xiàn)??蛇x地,負(fù)載均衡器24包括這樣的硬件單元,它可以處理正常分組并將特殊分組發(fā)送到運(yùn)行軟件模塊的處理器。這些特殊分組包括例如含有TCP或IP選項(xiàng)的分組和/或在請求的第一分組中不包括整個(gè)URL的請求。
在本發(fā)明的一種實(shí)施方式中,負(fù)載均衡器24包括一個(gè)緩沖器,當(dāng)負(fù)載均衡器24等待附加信息時(shí)(例如當(dāng)為一個(gè)請求選擇服務(wù)器22所需的信息不在該請求的第一分組中時(shí)),用該緩沖器來存儲(chǔ)分組。緩沖器的大小可以小于存儲(chǔ)在與所選定服務(wù)器建立連接之前所接收到的所有請求分組所需的存儲(chǔ)量的大小,如同本領(lǐng)域中已知的負(fù)載均衡器那樣。
注意,盡管以上所述一般涉及一種為一群服務(wù)器服務(wù)的負(fù)載均衡器,然而,本發(fā)明還可以適用于其他負(fù)載均衡器,比如執(zhí)行高速緩沖存儲(chǔ)器重定向的負(fù)載均衡器。這些負(fù)載均衡器可以與一個(gè)或多個(gè)代理一起操作,這種代理在本發(fā)明中和在權(quán)利要求書中被認(rèn)為是一種服務(wù)器。
還應(yīng)注意,盡管本發(fā)明是根據(jù)TCP/IP協(xié)議組來描述的,然而,本發(fā)明的一些實(shí)施方式還可以根據(jù)其他基于分組的傳輸協(xié)議(比如,IPX、DECENT和ISO協(xié)議)來實(shí)現(xiàn)。再者,盡管以上描述涉及HTTP協(xié)議,然而,本發(fā)明的原理還可以適用于其他應(yīng)用協(xié)議(如HTTPS協(xié)議)。
顯然,上述方法可以有各種變化,包括改變步驟的順序以及相應(yīng)所采用的精確實(shí)現(xiàn)方式。更顯然,上述方法和設(shè)備的描述應(yīng)理解為包括實(shí)現(xiàn)這些方法的設(shè)備和利用這些設(shè)備的方法。
本發(fā)明是利用其所舉例的實(shí)施方式的非限定性詳述進(jìn)行描述的,而并非要限定本發(fā)明的范圍。應(yīng)當(dāng)理解,針對一種實(shí)施方式所描述的一些特征和/或步驟可以適用于其他實(shí)施方式,而并非本發(fā)明的所有實(shí)施方式都具有特定圖中所示的或針對其中一種實(shí)施方式所描述的特征和/或步驟。對本領(lǐng)域技術(shù)人員而言,所述實(shí)施方式可以有各種變形。
注意,上述實(shí)施方式描述了本發(fā)明人所認(rèn)為的最佳方式,并因此涉及一些結(jié)構(gòu)、操作或者說這些結(jié)構(gòu)和操作的細(xì)節(jié),所有這些對本發(fā)明而言并不重要,只是為了舉例說明。如本領(lǐng)域中所知,這里所述的結(jié)構(gòu)和操作可以用能完成相同功能的等效結(jié)構(gòu)和操作來取代,即使這些結(jié)構(gòu)或操作不同也無妨。因此,本發(fā)明的范圍只局限于中所述的要素和限制。當(dāng)在權(quán)利要求書中使用“包括”、“包含”、“具有”等詞及其變形詞時(shí),都表示“包括而并不局限于此”。
權(quán)利要求
1.一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的用于傳送分組的第一連接;選擇服務(wù)器來為客戶機(jī)服務(wù);和將第一連接同負(fù)載均衡器與所選定服務(wù)器之間的第二連接相接續(xù),該第二連接是在第一連接之前被建立的。
2.如權(quán)利要求1所述的方法,其中,選擇服務(wù)器包括根據(jù)通過第一連接所發(fā)送的HTTP請求的內(nèi)容來選擇服務(wù)器。
3.如權(quán)利要求1所述的方法,其中,選擇服務(wù)器包括根據(jù)負(fù)載均衡器與一個(gè)或多個(gè)與該負(fù)載均衡器相關(guān)的服務(wù)器之間的若干個(gè)可用連接來選擇服務(wù)器。
4.如權(quán)利要求3所述的方法,其中,選擇服務(wù)器包括選擇與負(fù)載均衡器之間至少有一個(gè)可用連接的服務(wù)器。
5.如權(quán)利要求1所述的方法,包括監(jiān)視負(fù)載均衡器與服務(wù)器中的至少一個(gè)之間的連接個(gè)數(shù),從而當(dāng)該服務(wù)器所處理的連接總數(shù)少于服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)在某一預(yù)定范圍內(nèi)。
6.如權(quán)利要求1所述的方法,包括斷開第一與第二連接之間的接續(xù),而將第二連接同負(fù)載均衡器與客戶機(jī)之間所建立的第三連接相接續(xù)。
7.如權(quán)利要求6所述的方法,其中,在負(fù)載均衡器與同一客戶機(jī)之間建立第一和第三連接。
8.如權(quán)利要求6所述的方法,其中,在負(fù)載均衡器與不同客戶機(jī)之間建立第一和第三連接。
9.如權(quán)利要求6所述的方法,包括幾乎在斷開第一與第二連接之間的接續(xù)的同時(shí)終止第一連接。
10.如權(quán)利要求6所述的方法,包括將第一連接與將負(fù)載均衡器連接到服務(wù)器的第四連接相接續(xù)。
11.如權(quán)利要求10所述的方法,其中,第四連接包括以前建立的連接。
12.如權(quán)利要求1所述的方法,包括檢查通過第一連接發(fā)送的分組的內(nèi)容,以判斷何時(shí)通過第一連接發(fā)送新請求。
13.如權(quán)利要求12所述的方法,包括選擇服務(wù)器來為新請求服務(wù),和將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)。
14.如權(quán)利要求13所述的方法,其中,將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)包括如果被接續(xù)到第一連接的當(dāng)前連接通向被選定服務(wù)于新請求的服務(wù)器,則繼續(xù)進(jìn)行第一連接與當(dāng)前所接續(xù)的連接之間的接續(xù)。
15.如權(quán)利要求13所述的方法,其中,將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)包括如果被接續(xù)到第一連接的當(dāng)前連接并沒有通向被選定服務(wù)于新請求的服務(wù)器,則斷開第一連接的當(dāng)前接續(xù)并將第一連接與通向被選定服務(wù)于新請求的服務(wù)器的連接相接續(xù)。
16.如權(quán)利要求15所述的方法,其中,斷開第一連接的當(dāng)前接續(xù)包括檢查通過第一連接發(fā)送的分組的內(nèi)容,以判斷何時(shí)通過該連接發(fā)送對前一請求的響應(yīng),只有當(dāng)整個(gè)響應(yīng)全被發(fā)送到客戶機(jī)后才斷開當(dāng)前接續(xù)。
17.如權(quán)利要求15所述的方法,其中,斷開第一連接的當(dāng)前接續(xù)包括只有當(dāng)接收到來自客戶機(jī)的對整個(gè)響應(yīng)的接收確認(rèn)后才斷開當(dāng)前接續(xù)。
18.如權(quán)利要求13所述的方法,其中,選擇服務(wù)于新HTTP請求的服務(wù)器優(yōu)先選擇當(dāng)前被接續(xù)到第一連接的那個(gè)連接所通向的服務(wù)器。
19.如權(quán)利要求1所述的方法,其中,第一和第二連接都包括TCP連接。
20.一種對與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器進(jìn)行操作的方法,該方法包括建立與多個(gè)服務(wù)器中的至少一個(gè)之間的一個(gè)或多個(gè)連接;根據(jù)客戶機(jī)的連接到一個(gè)或多個(gè)服務(wù)器的請求,將一個(gè)或多個(gè)已建立的連接與客戶機(jī)連接相接續(xù);和監(jiān)視負(fù)載均衡器與多個(gè)服務(wù)器中的至少一個(gè)之間的連接個(gè)數(shù),從而當(dāng)這些服務(wù)器中的每一個(gè)所處理的連接總數(shù)少于服務(wù)器所允許的各自的預(yù)定最多連接個(gè)數(shù)時(shí),通向一個(gè)或多個(gè)服務(wù)器的連接中的至少一個(gè)連接沒有被接續(xù)到與客戶機(jī)之間的連接。
21.如權(quán)利要求20所述的方法,其中,監(jiān)視連接個(gè)數(shù)包括這樣進(jìn)行監(jiān)視,從而當(dāng)服務(wù)器所處理的連接總數(shù)少于該服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)在某一預(yù)定范圍內(nèi)。
22.如權(quán)利要求21所述的方法,其中,監(jiān)視連接個(gè)數(shù)包括這樣進(jìn)行監(jiān)視,從而當(dāng)服務(wù)器所處理的連接總數(shù)少于該服務(wù)器所允許的預(yù)定最多連接個(gè)數(shù)時(shí),未與客戶機(jī)的連接相接續(xù)的連接個(gè)數(shù)等于某一預(yù)定個(gè)數(shù),短瞬變期間除外。
23.如權(quán)利要求21所述的方法,其中,預(yù)定范圍對于多個(gè)服務(wù)器中的至少兩個(gè)服務(wù)器是不同的。
24.一種將分組從負(fù)載均衡器發(fā)送到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與服務(wù)器之間的用于傳送分組的TCP連接;和通過同一TCP連接將負(fù)載均衡器接收到的來自多個(gè)不同客戶機(jī)的分組發(fā)送到該服務(wù)器。
25.如權(quán)利要求24所述的方法,其中,通過該連接發(fā)送來自多個(gè)不同客戶機(jī)的分組包括將該連接與用于發(fā)送來自第一客戶機(jī)的分組的第一客戶機(jī)連接相接續(xù),然后,將該連接與用于發(fā)送來自第二客戶機(jī)的分組的第二客戶機(jī)連接相接續(xù)。
26.如權(quán)利要求24所述的方法,其中,保持所建立的TCP連接開放至少一小時(shí)。
27.如權(quán)利要求24所述的方法,其中,保持所建立的TCP連接開放至少一整天。
28.如權(quán)利要求24所述的方法,其中,至少一些分組是由負(fù)載均衡器通過非持續(xù)HTTP連接接收的。
29.一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的第一TCP連接;通過第一連接接收多個(gè)HTTP請求;至少部分地根據(jù)請求的內(nèi)容,選擇服務(wù)器來為各個(gè)HTTP請求服務(wù);將請求轉(zhuǎn)發(fā)到所選定的各自的服務(wù)器,所選定服務(wù)器包括至少兩個(gè)服務(wù)器;接收來自各自服務(wù)器的對所轉(zhuǎn)發(fā)請求的響應(yīng);和將接收到的響應(yīng)轉(zhuǎn)發(fā)到客戶機(jī),而負(fù)載均衡器無需為重復(fù)使用而存儲(chǔ)響應(yīng)。
30.如權(quán)利要求29所述的方法,其中,建立第一連接包括建立一種HTTP持續(xù)連接。
31.如權(quán)利要求29所述的方法,其中,選擇服務(wù)器包括根據(jù)請求中的URL進(jìn)行選擇。
32.如權(quán)利要求29所述的方法,其中,選擇服務(wù)器包括根據(jù)請求中的cookie字段進(jìn)行選擇。
33.一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法,該方法包括建立負(fù)載均衡器與客戶機(jī)之間的第一TCP連接;將第一連接同負(fù)載均衡器與服務(wù)器之間的第二連接相接續(xù);通過所接續(xù)的第一和第二連接發(fā)送多個(gè)分組;和檢查通過這些連接發(fā)送的多個(gè)分組的應(yīng)用級內(nèi)容,以判斷何時(shí)斷開該接續(xù)。
34.如權(quán)利要求33所述的方法,其中,檢查多個(gè)分組包括判斷響應(yīng)消息何時(shí)結(jié)束以及何時(shí)接收到客戶機(jī)對響應(yīng)的最后一個(gè)字節(jié)的接收確認(rèn)。
35.如權(quán)利要求33所述的方法,其中,檢查多個(gè)分組包括判斷何時(shí)通過第一連接發(fā)送新請求。
36.如權(quán)利要求35所述的方法,包括為新請求判斷是否可由第二連接所通向的服務(wù)器來處理該請求。
全文摘要
一種由與多個(gè)服務(wù)器相關(guān)的負(fù)載均衡器將客戶機(jī)連接到服務(wù)器的方法。該方法包括:建立負(fù)載均衡器與客戶機(jī)之間的用于傳送分組的第一連接;選擇服務(wù)器來為客戶機(jī)服務(wù);和將第一連接同負(fù)載均衡器與所選定服務(wù)器之間的第二連接相接續(xù),該第二連接是在第一連接之前被建立的。
文檔編號G06F15/00GK1372405SQ0210511
公開日2002年10月2日 申請日期2002年2月22日 優(yōu)先權(quán)日2001年2月26日
發(fā)明者艾爾·阿米托, 丹·貝澤, 奧弗·弗萊德曼, 萊爾·莎比塔, 蓋伊·克羅寧托 申請人:阿瓦雅通信以色列有限公司