亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法

文檔序號(hào):6605516閱讀:152來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法
技術(shù)領(lǐng)域
本發(fā)明涉及機(jī)群中負(fù)載均衡的方法,尤其涉及一種基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù)
隨著計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用的普及,計(jì)算機(jī)網(wǎng)絡(luò)用戶(hù)的數(shù)量在不斷膨脹,這對(duì)于服務(wù)提供商提出了更大的挑戰(zhàn)按照傳統(tǒng)的方法使用單臺(tái)服務(wù)器提供服務(wù)已經(jīng)遠(yuǎn)遠(yuǎn)不能滿(mǎn)足龐大的用戶(hù)請(qǐng)求的需求;現(xiàn)在通常都會(huì)使用多臺(tái)服務(wù)器向用戶(hù)提供服務(wù)。但是,如何才能把所有的用戶(hù)請(qǐng)求均衡地分布到后臺(tái)服務(wù)器上,則是負(fù)載均衡需要解決的問(wèn)題。
如果按照實(shí)施負(fù)載均衡策略組件所處的位置來(lái)劃分,可以將負(fù)載均衡分為兩類(lèi)基于域名服務(wù)器(Domain Name Server,簡(jiǎn)稱(chēng)DNS)的負(fù)載均衡和基于服務(wù)端應(yīng)用層與/或網(wǎng)際協(xié)議(Internet Protocol,簡(jiǎn)稱(chēng)IP)層的負(fù)載均衡?;贒NS的負(fù)載均衡通常使用DNS輪詢(xún)(round-robin)機(jī)制,在DNS上為一個(gè)名字設(shè)置多個(gè)IP地址,分別指向后臺(tái)實(shí)際提供服務(wù)的服務(wù)器。其機(jī)制十分簡(jiǎn)單,卻缺乏靈活性,而且有很多限制條件;例如后臺(tái)的服務(wù)器必須使用外部地址,能和客戶(hù)端直接進(jìn)行通信。而基于服務(wù)端應(yīng)用層與/或IP層的負(fù)載均衡則不同,它可以根據(jù)一定的策略,對(duì)請(qǐng)求數(shù)據(jù)的具體內(nèi)容進(jìn)行分析,適當(dāng)修改請(qǐng)求報(bào)文的內(nèi)容,將其發(fā)送到適當(dāng)?shù)姆?wù)節(jié)點(diǎn);例如專(zhuān)用的負(fù)載均衡器硬件、環(huán)球網(wǎng)(Web)服務(wù)器提供的萬(wàn)維網(wǎng)(World Wide Web,簡(jiǎn)稱(chēng)WWW)服務(wù)程序所用的超文本傳輸協(xié)議(Hypertext Transfer Protocol,簡(jiǎn)稱(chēng)HTTP)重定向功能等,都可以在服務(wù)端根據(jù)應(yīng)用的請(qǐng)求而實(shí)施負(fù)載均衡。
集群技術(shù)可以把多臺(tái)服務(wù)器封裝成一些服務(wù)器聚集,統(tǒng)一對(duì)外界提供服務(wù)。這種技術(shù)具有很多優(yōu)點(diǎn),例如可擴(kuò)展性好、對(duì)外界屏蔽內(nèi)部細(xì)節(jié)等。在集群中通常會(huì)為用戶(hù)提供一個(gè)唯一的單一登錄點(diǎn)(稱(chēng)為前置節(jié)點(diǎn)),它和集群中的所有服務(wù)器保持連通,這種特點(diǎn)決定了可以在集群中實(shí)施特殊的負(fù)載均衡機(jī)制。
集群中的前置節(jié)點(diǎn)通常就是為用戶(hù)提供的單一登錄點(diǎn),它負(fù)責(zé)轉(zhuǎn)發(fā)客戶(hù)端和服務(wù)器之間交互的數(shù)據(jù),并根據(jù)一定的策略,將客戶(hù)端的請(qǐng)求均衡地分發(fā)到各個(gè)服務(wù)節(jié)點(diǎn)上,并將服務(wù)節(jié)點(diǎn)的響應(yīng)轉(zhuǎn)發(fā)給客戶(hù)端,從而透明地為用戶(hù)提供強(qiáng)大的服務(wù)處理能力。
實(shí)際上,前置節(jié)點(diǎn)的主要任務(wù)有兩個(gè)報(bào)文轉(zhuǎn)發(fā)和均衡負(fù)載。報(bào)文轉(zhuǎn)發(fā)可以在兩個(gè)層次上進(jìn)行傳輸層和應(yīng)用層?;趥鬏攲拥膱?bào)文轉(zhuǎn)發(fā)可以使用網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)、目標(biāo)地址轉(zhuǎn)換、IP封裝、直接包轉(zhuǎn)發(fā)等技術(shù);這樣可以直接修改IP數(shù)據(jù)報(bào)的源地址、目的地址,或者另外附加一個(gè)IP數(shù)據(jù)報(bào)首部,或者直接修改數(shù)據(jù)報(bào)的以太網(wǎng)地址,最終將報(bào)文發(fā)送到目的地址。
由于上述的過(guò)程只需修改傳輸控制協(xié)議(Transfer Control Protocol,簡(jiǎn)稱(chēng)TCP)首部或IP首部,不涉及傳輸數(shù)據(jù)的變化,因此,能夠快速地轉(zhuǎn)發(fā)報(bào)文;其缺點(diǎn)是缺乏靈活性。而基于應(yīng)用層的包轉(zhuǎn)發(fā)方式則不同,它把接收到的數(shù)據(jù)報(bào)逐步解析,剝離IP首部和TCP首部,最終得到應(yīng)用數(shù)據(jù);然后根據(jù)應(yīng)用數(shù)據(jù)選擇適當(dāng)?shù)哪康牡刂?,重新封裝TCP首部和IP首部,通過(guò)網(wǎng)絡(luò)驅(qū)動(dòng)程序轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的目的地址。其優(yōu)點(diǎn)是可以根據(jù)請(qǐng)求的內(nèi)容選擇目標(biāo)節(jié)點(diǎn),并能對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行緩沖,同時(shí)可以屏蔽內(nèi)部節(jié)點(diǎn)的細(xì)節(jié)和故障,對(duì)終端用戶(hù)透明。由于應(yīng)用層是開(kāi)放式系統(tǒng)互聯(lián)參考模型(Open System InterconnectReference Model簡(jiǎn)稱(chēng)OSI模型)中的第七層,因此這種報(bào)文轉(zhuǎn)發(fā)技術(shù)通常就稱(chēng)為第七層轉(zhuǎn)發(fā)。
由于前置節(jié)點(diǎn)需要處理各種用戶(hù)請(qǐng)求,這涉及到報(bào)文分析、數(shù)據(jù)庫(kù)查詢(xún)等大量操作,不可能完全在內(nèi)核空間中完成,因此,前置節(jié)點(diǎn)一般都采用應(yīng)用層程序來(lái)實(shí)現(xiàn)報(bào)文轉(zhuǎn)發(fā)和負(fù)載均衡。
以用于電子郵件接收的(Point of Presence,also Post Office Protocol,簡(jiǎn)稱(chēng)POP3)服務(wù)為例如果只對(duì)外提供一臺(tái)POP3服務(wù)器,而且可以直接與客戶(hù)端連通,那么情況就非常簡(jiǎn)單客戶(hù)端只需要和POP3服務(wù)器的110端口建立一條TCP連接,并向服務(wù)器請(qǐng)求數(shù)據(jù)即可。而對(duì)于一個(gè)提供POP3服務(wù)的集群來(lái)說(shuō),情況就變得非常復(fù)雜通常大型的郵件服務(wù)器中的用戶(hù)都是分布式的,用戶(hù)的數(shù)據(jù)文件可能分布在多臺(tái)郵件服務(wù)器上,而客戶(hù)端對(duì)此并不知情。假設(shè)客戶(hù)端需要讀取“username@domain.com”的郵件,過(guò)程如圖1所示詳細(xì)步驟如下1、客戶(hù)端向前置節(jié)點(diǎn)(domain.com)的110端口發(fā)起請(qǐng)求,要求讀取用戶(hù)“username@domain.com”的郵件;2、前置節(jié)點(diǎn)的網(wǎng)卡接收到用戶(hù)請(qǐng)求之后,操作系統(tǒng)將其從內(nèi)核空間拷貝到用戶(hù)空間,交給應(yīng)用層的程序處理;3、應(yīng)用層程序?qū)τ脩?hù)請(qǐng)求進(jìn)行分析,確定是POP3請(qǐng)求,需要查詢(xún)郵件用戶(hù)數(shù)據(jù)庫(kù)LDAP/DB;4、返回查詢(xún)結(jié)果,確定用戶(hù)“username”的數(shù)據(jù)文件保存在郵件服務(wù)器Mail Server1上;5、將用戶(hù)空間中的數(shù)據(jù)拷貝到內(nèi)核空間,重新封裝報(bào)文;6、和郵件服務(wù)器Mail Server1建立套接字(socket)連接,發(fā)送請(qǐng)求數(shù)據(jù);7、郵件服務(wù)器Mail Server1接收到請(qǐng)求之后,讀取用戶(hù)“username”的郵件數(shù)據(jù),作為響應(yīng)報(bào)文發(fā)送回前置節(jié)點(diǎn);響應(yīng)報(bào)文沿著來(lái)路反向返回,直至發(fā)送到客戶(hù)端。
如果客戶(hù)端的請(qǐng)求是新建立一個(gè)“username@domain.com”的用戶(hù),那么上面的步驟3就不再是簡(jiǎn)單地查詢(xún)郵件用戶(hù)數(shù)據(jù)庫(kù);應(yīng)用層程序會(huì)搜集所有郵件服務(wù)器的負(fù)載、磁盤(pán)空間等信息,采用相應(yīng)的策略,將該用戶(hù)的請(qǐng)求分配到最合適的一個(gè)郵件服務(wù)器上,并在這臺(tái)郵件服務(wù)器上為該用戶(hù)建立數(shù)據(jù)文件,并將結(jié)果返回給前置節(jié)點(diǎn),由前置節(jié)點(diǎn)轉(zhuǎn)發(fā)給客戶(hù)端,這樣就能保證所有的郵件服務(wù)器之間的負(fù)載是均衡的。
TCP是面向連接的協(xié)議,普通的TCP連接的建立需要經(jīng)歷一個(gè)三次握手的過(guò)程首先,請(qǐng)求端(通常稱(chēng)為客戶(hù)端)向連接端(服務(wù)器)發(fā)送一個(gè)SYN報(bào)文,指明要打開(kāi)的端口,報(bào)文中包括客戶(hù)端的初始序號(hào)ISNC;接著,服務(wù)器返回一個(gè)命令正確應(yīng)答(ACK)報(bào)文進(jìn)行應(yīng)答,其中的應(yīng)答號(hào)等于ISNC+1,同時(shí)向客戶(hù)端發(fā)送一個(gè)SYN報(bào)文,其中包括服務(wù)器的初始序號(hào)ISNS;最后,客戶(hù)端將ISNS+1作為應(yīng)答號(hào)向服務(wù)器發(fā)送ACK報(bào)文進(jìn)行應(yīng)答,同時(shí)可以發(fā)送請(qǐng)求數(shù)據(jù)報(bào)文。
此后,客戶(hù)端和服務(wù)器之間就使用這個(gè)TCP連接進(jìn)行交互數(shù)據(jù),構(gòu)成一個(gè)完整的會(huì)話。
可以使用源IP地址、源端口號(hào)、目的IP地址以及目的端口號(hào)來(lái)唯一標(biāo)識(shí)一個(gè)會(huì)話;而每次會(huì)話的具體過(guò)程還需要另外兩個(gè)值進(jìn)行標(biāo)識(shí)序列號(hào)(SEQ)和應(yīng)答號(hào)(ACK)。其中源IP地址和目的IP地址位于IP數(shù)據(jù)報(bào)的首部中,而源端口號(hào)、目的端口號(hào)、序號(hào)、應(yīng)答號(hào)則位于TCP報(bào)文的首部中。
和基于傳輸層的報(bào)文轉(zhuǎn)發(fā)技術(shù)相比,第七層轉(zhuǎn)發(fā)有一個(gè)致命的缺點(diǎn)就是效率非常低,因?yàn)樗鼘鬏數(shù)膽?yīng)用數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間,未對(duì)其進(jìn)行任何修改,又拷貝回內(nèi)核空間,而且還引起了相應(yīng)的上下文切換的開(kāi)銷(xiāo)。FreeBSD中提供了一種轉(zhuǎn)移套接字(divert socket)機(jī)制,允許在用戶(hù)層直接處理TCP/用戶(hù)數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,簡(jiǎn)稱(chēng)UDP)報(bào)文,可以簡(jiǎn)化應(yīng)用層轉(zhuǎn)發(fā)報(bào)文的過(guò)程,但是仍然不可避免應(yīng)用數(shù)據(jù)進(jìn)出內(nèi)核空間的開(kāi)銷(xiāo)。
實(shí)際上,轉(zhuǎn)發(fā)節(jié)點(diǎn)和客戶(hù)端、服務(wù)器分別建立的兩個(gè)TCP連接并非毫不相干。這兩個(gè)連接一旦建立,在內(nèi)核空間中就可以得到這兩個(gè)連接各自的源地址、源端口號(hào)、目的地址和目的端口號(hào);而且請(qǐng)求和應(yīng)答的序列號(hào)之間也存在一定的對(duì)應(yīng)關(guān)系。分別以符號(hào)串SEQC-D、SEQD-S、SEQS-D、SEQD-C表示客戶(hù)端到轉(zhuǎn)發(fā)節(jié)點(diǎn)、轉(zhuǎn)發(fā)節(jié)點(diǎn)到服務(wù)器、服務(wù)器到轉(zhuǎn)發(fā)節(jié)點(diǎn)、轉(zhuǎn)發(fā)節(jié)點(diǎn)到客戶(hù)端之間報(bào)文中的序列號(hào),以ACKC-D、ACKD-S、ACKS-D、ACKD-C表示客戶(hù)端到轉(zhuǎn)發(fā)節(jié)點(diǎn)、轉(zhuǎn)發(fā)節(jié)點(diǎn)到服務(wù)器、服務(wù)器到轉(zhuǎn)發(fā)節(jié)點(diǎn)、轉(zhuǎn)發(fā)節(jié)點(diǎn)到客戶(hù)端之間報(bào)文中的應(yīng)答序列號(hào),并設(shè)ΔR=SEQD-S-SEQC-D=ACKD-S-ACKC-DΔA=SEQD-C-SEQS-D=ACKD-C-ACKS-D轉(zhuǎn)發(fā)節(jié)點(diǎn)在第一次對(duì)客戶(hù)端和服務(wù)器之間的請(qǐng)求/響應(yīng)信息進(jìn)行轉(zhuǎn)發(fā)之后,就可以計(jì)算出這兩個(gè)值,而且這兩個(gè)值在該會(huì)話的生存期內(nèi)保持不變;此后轉(zhuǎn)發(fā)節(jié)點(diǎn)就可以根據(jù)接收到的客戶(hù)端報(bào)文中的SEQC-D和服務(wù)器報(bào)文中的SEQS-D來(lái)計(jì)算出對(duì)應(yīng)的SEQD-S和SEQD-C。
圖2所示為使用基于內(nèi)核套接字對(duì)接機(jī)制對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)的示意圖,客戶(hù)端經(jīng)由轉(zhuǎn)發(fā)節(jié)點(diǎn)完成一次請(qǐng)求任務(wù)的過(guò)程為1、客戶(hù)端向轉(zhuǎn)發(fā)節(jié)點(diǎn)發(fā)送第一個(gè)SYN報(bào)文,其中包括32位的客戶(hù)端IP地址(簡(jiǎn)稱(chēng)SA)、32位的轉(zhuǎn)發(fā)節(jié)點(diǎn)的IP地址(簡(jiǎn)稱(chēng)DA)、16位的客戶(hù)端端口號(hào)(簡(jiǎn)稱(chēng)SP)、16位的轉(zhuǎn)發(fā)節(jié)點(diǎn)端口號(hào)(簡(jiǎn)稱(chēng)DP)、初始序列號(hào)(簡(jiǎn)稱(chēng)ISNC);2、轉(zhuǎn)發(fā)節(jié)點(diǎn)在傳輸層接收到SYN報(bào)文后,產(chǎn)生一個(gè)記錄,記下SA、DA、SP、DP、ISNC等值,并將該報(bào)文傳遞給上層等待接收的應(yīng)用層程序。應(yīng)用層程序產(chǎn)生一個(gè)初始序列號(hào)(簡(jiǎn)稱(chēng)ISND),并向客戶(hù)端發(fā)送應(yīng)答連接包;其中ACK=ISNC+1、SEQ=ISND;3、客戶(hù)端向轉(zhuǎn)發(fā)節(jié)點(diǎn)開(kāi)始請(qǐng)求數(shù)據(jù),SEQ=ISNC+1,ACK=ISND+1;4、轉(zhuǎn)發(fā)節(jié)點(diǎn)上的應(yīng)用層程序接收到數(shù)據(jù)后,對(duì)請(qǐng)求數(shù)據(jù)的內(nèi)容進(jìn)行分析,確定目標(biāo)服務(wù)器節(jié)點(diǎn);5、轉(zhuǎn)發(fā)節(jié)點(diǎn)重復(fù)1到3步,和真正提供服務(wù)的服務(wù)節(jié)點(diǎn)建立連接,并將請(qǐng)求數(shù)據(jù)發(fā)送給服務(wù)節(jié)點(diǎn);6、服務(wù)節(jié)點(diǎn)接收到請(qǐng)求之后,將響應(yīng)數(shù)據(jù)發(fā)送給轉(zhuǎn)發(fā)節(jié)點(diǎn);
7、轉(zhuǎn)發(fā)節(jié)點(diǎn)接收到服務(wù)節(jié)點(diǎn)的響應(yīng)數(shù)據(jù)之后,將響應(yīng)數(shù)據(jù)重新組裝,將其發(fā)送給客戶(hù)端;同時(shí)查找轉(zhuǎn)換映射表中的數(shù)據(jù),計(jì)算相應(yīng)的轉(zhuǎn)發(fā)前后的序號(hào)差值ΔR和ΔA,完成轉(zhuǎn)換映射表的構(gòu)造;8、轉(zhuǎn)發(fā)節(jié)點(diǎn)的應(yīng)用層程序確定可以進(jìn)行雙向轉(zhuǎn)發(fā)之后,通過(guò)輸入輸出控制(ioctl)系統(tǒng)調(diào)用通知內(nèi)核合并兩個(gè)socket,同時(shí)釋放對(duì)這兩個(gè)socket的控制權(quán);9、以后的數(shù)據(jù)轉(zhuǎn)發(fā),根據(jù)圖2所示的機(jī)制,在內(nèi)核中修改TCP報(bào)文首部、IP數(shù)據(jù)報(bào)首部中相應(yīng)的內(nèi)容,直接對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),所轉(zhuǎn)發(fā)的數(shù)據(jù)將不再進(jìn)出用戶(hù)空間,因此將極大提高轉(zhuǎn)發(fā)的效率;10、連接的雙方如果一方中斷,則釋放整個(gè)連接。

發(fā)明內(nèi)容
本發(fā)明的主要目的是提供一種基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,可以減少前置節(jié)點(diǎn)/服務(wù)器在轉(zhuǎn)發(fā)數(shù)據(jù)時(shí)由于數(shù)據(jù)在內(nèi)核空間和用戶(hù)空間之間拷貝,以及相應(yīng)的上下文切換等所引起的系統(tǒng)開(kāi)銷(xiāo),降低前置節(jié)點(diǎn)的負(fù)載,縮短用戶(hù)請(qǐng)求的響應(yīng)時(shí)間。
本發(fā)明的目的是這樣實(shí)現(xiàn)的一種基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,至少包括步驟10前置節(jié)點(diǎn)接收到客戶(hù)端的請(qǐng)求;步驟20修改請(qǐng)求報(bào)文的源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);步驟30接收服務(wù)節(jié)點(diǎn)的響應(yīng);步驟40修改響應(yīng)報(bào)文的源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);步驟50如果請(qǐng)求完成,則回收兩個(gè)套接字,更新轉(zhuǎn)換映射表;否則執(zhí)行步驟10。
在上述的步驟20之前還進(jìn)一步包括步驟11如果前置節(jié)點(diǎn)第一次接收到客戶(hù)端的請(qǐng)求,則將該請(qǐng)求數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間,交由應(yīng)用層程序處理;步驟12應(yīng)用層程序?qū)φ?qǐng)求數(shù)據(jù)進(jìn)行分析,并根據(jù)負(fù)載均衡策略和服務(wù)節(jié)點(diǎn)的狀態(tài),將本次服務(wù)請(qǐng)求交由相應(yīng)的服務(wù)節(jié)點(diǎn)處理;步驟13應(yīng)用層程序和選定的服務(wù)節(jié)點(diǎn)建立套接字連接,將用戶(hù)請(qǐng)求數(shù)據(jù)重新封裝,并將其轉(zhuǎn)發(fā)給選定的服務(wù)節(jié)點(diǎn);步驟14服務(wù)節(jié)點(diǎn)對(duì)用戶(hù)請(qǐng)求進(jìn)行處理,并將響應(yīng)報(bào)文發(fā)給前置節(jié)點(diǎn);步驟15前置節(jié)點(diǎn)的應(yīng)用層程序接收到響應(yīng)報(bào)文,構(gòu)建轉(zhuǎn)換映射表,通知內(nèi)核合并該兩個(gè)套接字,同時(shí)放棄對(duì)兩個(gè)套接字的控制權(quán)。
步驟12中所述的負(fù)載均衡策略至少為輪詢(xún)算法;或加權(quán)的輪詢(xún)算法;或最少連接數(shù)算法;或加權(quán)的最少連接數(shù)算法;或基于請(qǐng)求位置的最少連接數(shù)算法,即將相同客戶(hù)端IP的請(qǐng)求發(fā)送給相同的服務(wù)節(jié)點(diǎn)處理;或預(yù)先分配任務(wù)法,即根據(jù)承擔(dān)任務(wù)情況來(lái)選擇負(fù)載最輕的節(jié)點(diǎn);或加權(quán)的預(yù)先分配任務(wù)法,即根據(jù)承擔(dān)任務(wù)情況及節(jié)點(diǎn)的性能來(lái)綜合選擇負(fù)載最輕的節(jié)點(diǎn);或客戶(hù)端IP地址分區(qū)法,即將不同客戶(hù)端的IP地址分為多個(gè)區(qū),來(lái)自一個(gè)區(qū)的請(qǐng)求全部被分發(fā)到一個(gè)指定的節(jié)點(diǎn)。
本發(fā)明所提供的基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,可以充分利用傳輸層轉(zhuǎn)發(fā)和應(yīng)用層轉(zhuǎn)發(fā)的優(yōu)點(diǎn),既能提高報(bào)文轉(zhuǎn)發(fā)效率,又具有很大的靈活性,從而更快、更均衡地把客戶(hù)端的請(qǐng)求分發(fā)到服務(wù)節(jié)點(diǎn)上。
并且可以使用這種機(jī)制設(shè)計(jì)一種通用的中間件,實(shí)現(xiàn)所有端口上的報(bào)文轉(zhuǎn)發(fā)功能;也可以對(duì)報(bào)文進(jìn)行復(fù)雜的分析,應(yīng)用特殊的過(guò)濾規(guī)則,實(shí)現(xiàn)功能復(fù)雜的防火墻;甚至可以對(duì)現(xiàn)有TCP連接動(dòng)態(tài)地進(jìn)行遷移。


圖1為現(xiàn)有技術(shù)在集群中使用應(yīng)用層程序處理POP3服務(wù)請(qǐng)求的過(guò)程;圖2為本發(fā)明使用基于內(nèi)核套接字對(duì)接機(jī)制對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)的示意圖;圖3為使用基于內(nèi)核中套接字對(duì)接技術(shù)實(shí)現(xiàn)第七層負(fù)載均衡的流程圖;圖4為套接字對(duì)接之后的通信過(guò)程的流程圖。
具體實(shí)施例方式
以下結(jié)合具體的實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說(shuō)明參見(jiàn)圖3,本發(fā)明的方法首先接受客戶(hù)端建立連接的請(qǐng)求,完成初始化的工作,然后就接收客戶(hù)端的數(shù)據(jù)請(qǐng)求;根據(jù)該請(qǐng)求判斷轉(zhuǎn)換映射表中是否已有相應(yīng)的記錄,如果有記錄,則修改請(qǐng)求報(bào)文的源地址、目的地址及端口號(hào)等內(nèi)容,將報(bào)文直接轉(zhuǎn)發(fā)給服務(wù)節(jié)點(diǎn);然后接收服務(wù)節(jié)點(diǎn)的響應(yīng),接著修改響應(yīng)報(bào)文的源、目的地址及端口號(hào)等內(nèi)容,將報(bào)文直接轉(zhuǎn)發(fā)給服務(wù)節(jié)點(diǎn);再進(jìn)一步判斷請(qǐng)求是否完成;若未完成,則返回接收客戶(hù)端的數(shù)據(jù)請(qǐng)求,繼續(xù)循環(huán),接受客戶(hù)端建立連接的請(qǐng)求;若已完成,則回收兩個(gè)Socket,更新轉(zhuǎn)換映射表,結(jié)束。
如果上述的轉(zhuǎn)換映射表中沒(méi)有記錄,則將請(qǐng)求交給應(yīng)用層程序處理,應(yīng)用層程序按照負(fù)載均衡策略確定服務(wù)節(jié)點(diǎn),然后應(yīng)用層程序與服務(wù)節(jié)點(diǎn)建立連接,發(fā)送數(shù)據(jù)請(qǐng)求;接著接收服務(wù)節(jié)點(diǎn)的響應(yīng)并搜集負(fù)載等相關(guān)信息,接收到服務(wù)節(jié)點(diǎn)的響應(yīng)后,通知內(nèi)核合并兩個(gè)Socket,把響應(yīng)信息轉(zhuǎn)發(fā)給客戶(hù)端,再判斷請(qǐng)求是否完成,若未完成,則返回接收客戶(hù)端的數(shù)據(jù)請(qǐng)求,繼續(xù)循環(huán);若已完成,則回收兩個(gè)Socket,更新轉(zhuǎn)換映射表,結(jié)束。
由圖3可知,前置節(jié)點(diǎn)的應(yīng)用程序在接收到郵件服務(wù)器Mail Server1的響應(yīng)報(bào)文之后,就可以確定客戶(hù)端和服務(wù)節(jié)點(diǎn)之間可以相互轉(zhuǎn)發(fā)報(bào)文,因此通知內(nèi)核將兩個(gè)socket合并,此后前置節(jié)點(diǎn)在轉(zhuǎn)發(fā)客戶(hù)端和郵件服務(wù)器MailServer1之間的通信時(shí),就可以直接在內(nèi)核空間完成,在兩個(gè)socket合并之后,客戶(hù)端和服務(wù)節(jié)點(diǎn)之間的通信過(guò)程就如圖4所示,因此,大大減少了傳輸時(shí)間,極大地提高了效率。
最后所應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,其特征在于至少包括步驟10前置節(jié)點(diǎn)接收到客戶(hù)端的請(qǐng)求;步驟20修改請(qǐng)求報(bào)文的源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);步驟30接收服務(wù)節(jié)點(diǎn)的響應(yīng);步驟40修改響應(yīng)報(bào)文的源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);步驟50如果請(qǐng)求完成,則回收兩個(gè)套接字,更新轉(zhuǎn)換映射表;否則執(zhí)行步驟10。
2.根據(jù)權(quán)利要求1所述的基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,其特征在于步驟20之前還進(jìn)一步包括步驟11如果前置節(jié)點(diǎn)第一次接收到客戶(hù)端的請(qǐng)求,則將該請(qǐng)求數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間,交由應(yīng)用層程序處理;步驟12應(yīng)用層程序?qū)φ?qǐng)求數(shù)據(jù)進(jìn)行分析,并根據(jù)負(fù)載均衡策略和服務(wù)節(jié)點(diǎn)的狀態(tài),將本次服務(wù)請(qǐng)求交由相應(yīng)的服務(wù)節(jié)點(diǎn)處理;步驟13應(yīng)用層程序和選定的服務(wù)節(jié)點(diǎn)建立套接字連接,將用戶(hù)請(qǐng)求數(shù)據(jù)重新封裝,并將其轉(zhuǎn)發(fā)給選定的服務(wù)節(jié)點(diǎn);步驟14服務(wù)節(jié)點(diǎn)對(duì)用戶(hù)請(qǐng)求進(jìn)行處理,并將響應(yīng)報(bào)文發(fā)給前置節(jié)點(diǎn);步驟15前置節(jié)點(diǎn)的應(yīng)用層程序接收到響應(yīng)報(bào)文,構(gòu)建轉(zhuǎn)換映射表,通知內(nèi)核合并該兩個(gè)套接字,同時(shí)放棄對(duì)兩個(gè)套接字的控制權(quán)。
3.根據(jù)權(quán)利要求2所述的基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,其特征在于所述的負(fù)載均衡策略至少為輪詢(xún)算法;或加權(quán)的輪詢(xún)算法;或最少連接數(shù)算法;或加權(quán)的最少連接數(shù)算法;或基于請(qǐng)求位置的最少連接數(shù)算法,即將相同客戶(hù)端IP的請(qǐng)求發(fā)送給相同的服務(wù)節(jié)點(diǎn)處理;或預(yù)先分配任務(wù)法,即根據(jù)承擔(dān)任務(wù)情況來(lái)選擇負(fù)載最輕的節(jié)點(diǎn);或加權(quán)的預(yù)先分配任務(wù)法,即根據(jù)承擔(dān)任務(wù)情況及節(jié)點(diǎn)的性能來(lái)綜合選擇負(fù)載最輕的節(jié)點(diǎn);或客戶(hù)端IP地址分區(qū)法,即將不同客戶(hù)端的IP地址分為多個(gè)區(qū),來(lái)自一個(gè)區(qū)的請(qǐng)求全部被分發(fā)到一個(gè)指定的節(jié)點(diǎn)。
全文摘要
一種基于內(nèi)核中套接字對(duì)接的第七層負(fù)載均衡的方法,前置節(jié)點(diǎn)接收客戶(hù)端請(qǐng)求;修改請(qǐng)求報(bào)文源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);接收服務(wù)節(jié)點(diǎn)的響應(yīng);修改響應(yīng)報(bào)文的源、目的地址和端口號(hào),將報(bào)文直接發(fā)送給服務(wù)節(jié)點(diǎn);如果請(qǐng)求完成,則回收兩個(gè)套接字,更新轉(zhuǎn)換映射表;否則繼續(xù)接收客戶(hù)端的請(qǐng)求。本發(fā)明可充分利用傳輸層轉(zhuǎn)發(fā)和應(yīng)用層轉(zhuǎn)發(fā)的優(yōu)點(diǎn),既能提高報(bào)文轉(zhuǎn)發(fā)效率,又具有很大的靈活性,從而更快、更均衡地把客戶(hù)端的請(qǐng)求分發(fā)到服務(wù)節(jié)點(diǎn)上;并且可用該設(shè)計(jì)通用的中間件,實(shí)現(xiàn)所有端口上的報(bào)文轉(zhuǎn)發(fā)功能;也可對(duì)報(bào)文進(jìn)行復(fù)雜的分析,應(yīng)用特殊的過(guò)濾規(guī)則,實(shí)現(xiàn)功能復(fù)雜的防火墻;甚至可以對(duì)現(xiàn)有TCP連接動(dòng)態(tài)地進(jìn)行遷移。
文檔編號(hào)G06F15/16GK1512377SQ0215949
公開(kāi)日2004年7月14日 申請(qǐng)日期2002年12月31日 優(yōu)先權(quán)日2002年12月31日
發(fā)明者李電森, 馮銳, 許正華, 肖利民 申請(qǐng)人:聯(lián)想(北京)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1