1.一種基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,包括以下步驟:
S1.通過IOCP接入客戶端的請(qǐng)求;
S2.代理服務(wù)端對(duì)接入的客戶端請(qǐng)求進(jìn)行過濾處理;
S3.代理服務(wù)端利用負(fù)載均衡算法將過濾后的客戶端請(qǐng)求分發(fā)到負(fù)載最低的服務(wù)端進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,步驟S1中,所述客戶端,在發(fā)起請(qǐng)求時(shí),首先要將發(fā)送的數(shù)據(jù)按照協(xié)議規(guī)則封裝成數(shù)據(jù)包,然后使用Socket中的異步發(fā)送方法將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)中,如果收到應(yīng)答包且指示發(fā)送數(shù)據(jù)包正確則結(jié)束,否則重發(fā)。
3.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,步驟S2中,所述過濾處理是指代理服務(wù)端收到客戶端發(fā)來的數(shù)據(jù)包后驗(yàn)證數(shù)據(jù)包的完整性,如果無誤則將該數(shù)據(jù)包放入到等待隊(duì)列,然后選擇一個(gè)負(fù)載最低的服務(wù)端進(jìn)行請(qǐng)求轉(zhuǎn)發(fā);否則丟棄該數(shù)據(jù)包。
4.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,步驟S3中,所述負(fù)載均衡算法為動(dòng)態(tài)加權(quán)算法,代理服務(wù)端以當(dāng)前的負(fù)載情況為依據(jù),將每次每個(gè)服務(wù)節(jié)點(diǎn)的指標(biāo)信息進(jìn)行轉(zhuǎn)換得到服務(wù)端的負(fù)載量,由此確定負(fù)載最低的服務(wù)端。
5.根據(jù)權(quán)利要求4所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述指標(biāo)信息包括CPU占有率L(C1)、磁盤IO占有率L(D1)、內(nèi)存占有率L(M1),則服務(wù)器的負(fù)載量L(S1)計(jì)算公式如下:
其中r1、r2、r3分別為當(dāng)前服務(wù)類型下,CPU占有率L(C1)、磁盤IO占有率L(D1)、內(nèi)存占有率L(M1)的重要系數(shù)。
6.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述代理服務(wù)端會(huì)定時(shí)去與服務(wù)端進(jìn)行數(shù)據(jù)交換。
7.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述服務(wù)端收到代理服務(wù)端發(fā)來的請(qǐng)求之后進(jìn)行處理,處理完畢后將處理結(jié)果發(fā)回給代理服務(wù)端,同時(shí)上報(bào)服務(wù)端當(dāng)前的狀態(tài)。
8.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述客戶端、代理服務(wù)端、服務(wù)端采用的是C/S架構(gòu)模式,客戶端與代理服務(wù)端之間、代理服務(wù)端與服務(wù)端之間均通過Socket進(jìn)行網(wǎng)絡(luò)通信。
9.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述客戶端采用微軟的Winform桌面開發(fā)技術(shù),用于實(shí)現(xiàn)客戶端的業(yè)務(wù)邏輯,所述業(yè)務(wù)邏輯包括收發(fā)數(shù)據(jù)、數(shù)據(jù)展示、與用戶進(jìn)行交互;所述代理服務(wù)端采用微軟的C++語言開發(fā)的Windows服務(wù),在客戶端與服務(wù)端之間充當(dāng)代理角色,用于將客戶的請(qǐng)求接入并進(jìn)行相應(yīng)的轉(zhuǎn)發(fā);所述服務(wù)端是基于Linux操作系統(tǒng),使用C語言開發(fā)的ServerApp,用于處理代理服務(wù)端轉(zhuǎn)發(fā)過來的請(qǐng)求。
10.根據(jù)權(quán)利要求1所述基于IOCP機(jī)制實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)代理的方法,其特征在于,所述客戶端、代理服務(wù)端、服務(wù)端遵守相同的通信協(xié)議。