專(zhuān)利名稱(chēng):基于客戶(hù)、服務(wù)器模式的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)系統(tǒng)中基于客戶(hù)、服務(wù)器(Client/server)模式的報(bào)文發(fā)送方法。
本發(fā)明的目的在于提供一種有利于對(duì)數(shù)量較多的用戶(hù)進(jìn)行管理的基于客戶(hù)、服務(wù)器模式的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,使用該方法可以根據(jù)服務(wù)器處理能力動(dòng)態(tài)調(diào)節(jié)用戶(hù)請(qǐng)求報(bào)文的發(fā)送密度,防止服務(wù)器受到?jīng)_擊。
為達(dá)到上述目的,本發(fā)明提供的基于客戶(hù)、服務(wù)器模式的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,包括a.設(shè)置存放已經(jīng)發(fā)送給服務(wù)器正在等待響應(yīng)的請(qǐng)求報(bào)文的一級(jí)緩沖池,以及存放等待向一級(jí)緩沖池發(fā)送的請(qǐng)求報(bào)文的二極緩沖池,所述一級(jí)緩沖池用于存放請(qǐng)求報(bào)文的節(jié)點(diǎn)數(shù)小于或等于報(bào)文管理協(xié)議規(guī)定的用于標(biāo)識(shí)請(qǐng)求報(bào)文的最大值;b.當(dāng)客戶(hù)端生成請(qǐng)求報(bào)文時(shí),如果一級(jí)緩沖池有空閑節(jié)點(diǎn),則該請(qǐng)求報(bào)文申請(qǐng)得到報(bào)文發(fā)送標(biāo)識(shí),同時(shí)向服務(wù)器發(fā)送該報(bào)文并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中報(bào)文發(fā)送標(biāo)識(shí)對(duì)應(yīng)的節(jié)點(diǎn),否則將該請(qǐng)求報(bào)文存入二級(jí)緩沖池;c.當(dāng)一級(jí)緩沖池中有請(qǐng)求報(bào)文發(fā)送完成后,釋放該報(bào)文所占的節(jié)點(diǎn)及報(bào)文發(fā)送標(biāo)識(shí),同時(shí)從二級(jí)緩沖池中按序讀出一個(gè)請(qǐng)求報(bào)文利用上述釋放的報(bào)文發(fā)送標(biāo)識(shí)發(fā)送該報(bào)文,并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中上述釋放的節(jié)點(diǎn)中。
所述一級(jí)緩沖池采用數(shù)組結(jié)構(gòu),所述二級(jí)緩沖池采用雙向鏈表結(jié)構(gòu)。
所述一級(jí)緩沖池的每個(gè)節(jié)點(diǎn)均設(shè)置有用于定時(shí)重發(fā)存儲(chǔ)在該節(jié)點(diǎn)的請(qǐng)求報(bào)文的定時(shí)器。
步驟c還包括判斷一級(jí)緩沖池中是否有請(qǐng)求報(bào)文發(fā)送完成,該判斷通過(guò)判斷在指定的時(shí)間內(nèi)是否收到該報(bào)文的正確響應(yīng)或者判斷該報(bào)文的重發(fā)次數(shù)是否超過(guò)指定的次數(shù)實(shí)現(xiàn)。
由于本發(fā)明設(shè)置二級(jí)緩沖池,當(dāng)客戶(hù)端生成請(qǐng)求報(bào)文時(shí),如果一級(jí)緩沖池有空閑,則該請(qǐng)求報(bào)文申請(qǐng)得到報(bào)文發(fā)送標(biāo)識(shí)立即向服務(wù)器發(fā)送并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中報(bào)文發(fā)送標(biāo)識(shí)對(duì)應(yīng)的節(jié)點(diǎn),否則將該請(qǐng)求報(bào)文存入二級(jí)緩沖池;當(dāng)一級(jí)緩沖池中有請(qǐng)求報(bào)文發(fā)送完成后,從二級(jí)緩沖池中讀出請(qǐng)求報(bào)文發(fā)送,并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中;這樣,可以從容地實(shí)現(xiàn)對(duì)請(qǐng)求報(bào)文的管理,解決報(bào)文ID資源不足的問(wèn)題,從而使得對(duì)使用類(lèi)似RADIUS協(xié)議的大容量,高密度設(shè)備提供認(rèn)證授權(quán)計(jì)費(fèi)服務(wù)時(shí)仍然適用,不會(huì)造成發(fā)送報(bào)文的丟失或產(chǎn)生較大的延遲,同時(shí)可以通過(guò)動(dòng)態(tài)的配置,實(shí)現(xiàn)對(duì)客戶(hù)端發(fā)送報(bào)文強(qiáng)度的控制,適應(yīng)不同處理能力的服務(wù)器要求。
下面結(jié)合附圖以采用RADIUS協(xié)議的客戶(hù)端和服務(wù)器為例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述。
本發(fā)明在具體實(shí)施時(shí),首先設(shè)置存放已經(jīng)發(fā)送給服務(wù)器正在等待響應(yīng)的請(qǐng)求報(bào)文的一級(jí)緩沖池,以及存放等待向一級(jí)緩沖池發(fā)送的請(qǐng)求報(bào)文的二極緩沖池,所述一級(jí)緩沖池采用數(shù)組結(jié)構(gòu),所述二級(jí)緩沖池采用雙向鏈表結(jié)構(gòu)。由于RADIUS協(xié)議規(guī)定,計(jì)費(fèi)請(qǐng)求報(bào)文每次重發(fā),必須更換報(bào)文的ID,所以,一級(jí)緩沖池用于存放請(qǐng)求報(bào)文的節(jié)點(diǎn)數(shù)小于或等于報(bào)文管理協(xié)議規(guī)定的用于標(biāo)識(shí)請(qǐng)求報(bào)文的最大值,本例中一級(jí)緩沖池的節(jié)點(diǎn)數(shù)目最大為255,這樣可以確保,每一個(gè)一級(jí)緩沖池的報(bào)文都能夠申請(qǐng)到報(bào)文的ID,當(dāng)然所述一級(jí)緩沖池的節(jié)點(diǎn)數(shù)還可以根據(jù)服務(wù)器的數(shù)據(jù)處理能力,在小于255的范圍內(nèi)設(shè)置.同時(shí),一級(jí)緩沖池中的每個(gè)節(jié)點(diǎn)均設(shè)有相應(yīng)的定時(shí)器,用于在沒(méi)有收到RADIUS服務(wù)器的響應(yīng)的時(shí)候定時(shí)重發(fā)該節(jié)點(diǎn)的報(bào)文。
由于一級(jí)緩沖池中的各個(gè)節(jié)點(diǎn)的報(bào)文發(fā)送是各自獨(dú)立的,每一個(gè)節(jié)點(diǎn)都具備相應(yīng)的定時(shí)器來(lái)控制該節(jié)點(diǎn)的報(bào)文的重發(fā)操作。因而,一級(jí)緩沖池的大小也直接同向服務(wù)器發(fā)送的RADIUS報(bào)文的強(qiáng)度大小相關(guān)。在服務(wù)器處理能力強(qiáng)大的時(shí)候,可以配置大的一級(jí)緩沖池,使得更多的報(bào)文能夠得到同時(shí)發(fā)送,加快用戶(hù)認(rèn)證授權(quán)計(jì)費(fèi)的響應(yīng)時(shí)間;在服務(wù)器處理能力較弱時(shí),我們可以減小一級(jí)緩沖池的大小,控制設(shè)備側(cè)報(bào)文的強(qiáng)度,確保服務(wù)器能夠從容應(yīng)答。
所述二級(jí)緩沖池中的報(bào)文都沒(méi)有報(bào)文的ID。處在這個(gè)緩沖池中的報(bào)文等待轉(zhuǎn)移到一級(jí)緩沖池中,才能得到發(fā)送。二級(jí)緩沖池的大小可以根據(jù)實(shí)際情況而定義,同樣可以動(dòng)態(tài)的配置。本例采用的報(bào)文兩級(jí)緩沖池的示意圖參考圖3。
圖1是本發(fā)明所述方法實(shí)施例的客戶(hù)端報(bào)文發(fā)送流程圖。按照?qǐng)D1,當(dāng)客戶(hù)端在步驟11生成新的請(qǐng)求報(bào)文時(shí),由統(tǒng)一入口進(jìn)入,在步驟12判斷一級(jí)緩沖池是否有空空閑節(jié)點(diǎn),如果一級(jí)緩沖池有空閑節(jié)點(diǎn),則在步驟13該請(qǐng)求報(bào)文申請(qǐng)得到報(bào)文發(fā)送ID,同時(shí)向RADIUS服務(wù)器發(fā)送該報(bào)文并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中報(bào)文發(fā)送標(biāo)識(shí)對(duì)應(yīng)的節(jié)點(diǎn),同時(shí)啟動(dòng)定時(shí)器,以便在配置的指定時(shí)間內(nèi)仍然沒(méi)有收到服務(wù)器對(duì)該報(bào)文的響應(yīng)的時(shí)候,重新發(fā)送該報(bào)文。如果一級(jí)緩沖池沒(méi)有空空閑節(jié)點(diǎn),則在步驟14將該請(qǐng)求報(bào)文存入二級(jí)緩沖池的尾部,等待著躍遷到一級(jí)緩沖池中發(fā)送。
圖2是本發(fā)明所述方法實(shí)施例的緩沖池報(bào)文發(fā)送流程圖。按照?qǐng)D2,首先在步驟21判斷一級(jí)緩沖池中是否有空閑節(jié)點(diǎn),即判斷一級(jí)緩沖池中是否有請(qǐng)求報(bào)文發(fā)送完成,該判斷通過(guò)判斷在指定的時(shí)間內(nèi)是否收到該報(bào)文的正確響應(yīng)或者判斷該報(bào)文的重發(fā)次數(shù)是否超過(guò)指定的次數(shù)實(shí)現(xiàn)。當(dāng)處于一級(jí)緩存池中有報(bào)文收到對(duì)應(yīng)的正確響應(yīng)報(bào)文或者該報(bào)文的重發(fā)次數(shù)超過(guò)限度時(shí),則一級(jí)緩沖池處于該節(jié)點(diǎn)的報(bào)文需要被刪除。即在步驟22刪除該節(jié)點(diǎn)的報(bào)文的同時(shí),釋放該報(bào)文所占的節(jié)點(diǎn)及報(bào)文發(fā)送標(biāo)識(shí),同時(shí)從二級(jí)緩沖池中按序讀出一個(gè)請(qǐng)求報(bào)文,即獲得處于頭部的報(bào)文,利用上述釋放的報(bào)文發(fā)送標(biāo)識(shí)發(fā)送該報(bào)文,并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中上述釋放的節(jié)點(diǎn)中,然后回到步驟21繼續(xù)判斷;如果在步驟21判斷一級(jí)緩沖池中沒(méi)有空閑節(jié)點(diǎn),則要繼續(xù)步驟21繼續(xù)判斷。上述過(guò)程參考圖4。
在圖3和圖4中,為了方便數(shù)組中的節(jié)點(diǎn)和鏈表中的節(jié)點(diǎn)互相移動(dòng),對(duì)圖3、4中的數(shù)組中的節(jié)點(diǎn)定義了與鏈表節(jié)點(diǎn)相同的數(shù)據(jù)結(jié)構(gòu)。
二級(jí)緩沖池中的報(bào)文在加入一級(jí)緩沖池的同時(shí)也要申請(qǐng)報(bào)文的ID,這樣,可以同時(shí)記錄使用該ID的報(bào)文在一級(jí)緩沖池的位置,以在收到服務(wù)器的響應(yīng)報(bào)文的時(shí)候,能夠很容易的找到與之匹配的請(qǐng)求報(bào)文。
在本發(fā)明所述方法具體實(shí)施時(shí),可以一定的變化,以使本發(fā)明具有更好的實(shí)施效果,例如在基于RADIUS協(xié)議的客戶(hù)端/服務(wù)器模式中,對(duì)認(rèn)證報(bào)文和計(jì)費(fèi)報(bào)文分開(kāi)處理,每種報(bào)文都擁有自己獨(dú)立的報(bào)文二級(jí)緩沖池。由于這兩種報(bào)文的性質(zhì)不同,因此需要在上面描述的二級(jí)緩沖池進(jìn)行略微的變化,分別處理(1)認(rèn)證報(bào)文的處理對(duì)于認(rèn)證報(bào)文,報(bào)文要求得到響應(yīng)的時(shí)間上要求比較嚴(yán)格,因?yàn)橛脩?hù)可能無(wú)法容忍長(zhǎng)時(shí)間得不到認(rèn)證響應(yīng)。
首先,在認(rèn)證報(bào)文的一級(jí)緩存緩沖池的配置上,一般配置比較大的一級(jí)緩沖池,例如80;這樣,用戶(hù)的認(rèn)證報(bào)文立即加入到一級(jí)緩沖池中的機(jī)會(huì)增大,同時(shí)也縮小了滯留在二級(jí)緩沖池的時(shí)間。
其次,在報(bào)文的二級(jí)緩沖池的發(fā)送算法基礎(chǔ)上,作一些改進(jìn)。認(rèn)證報(bào)文在一級(jí)緩沖池中定時(shí)發(fā)送,如果發(fā)送次數(shù)超過(guò)配置次數(shù)(例如3次)仍然沒(méi)有收到響應(yīng),則認(rèn)為認(rèn)證失敗。處于在二級(jí)緩沖池中的報(bào)文躍遷到報(bào)文一級(jí)緩沖池的時(shí)候,需要計(jì)算該報(bào)文滯留在二級(jí)緩沖池中的時(shí)間,將該時(shí)間折算為發(fā)送次數(shù),如果折算出來(lái)的發(fā)送次數(shù)超過(guò)配置次數(shù),則不再發(fā)送,認(rèn)為認(rèn)證失??;這樣,就保證了認(rèn)證報(bào)文的認(rèn)證時(shí)間,滿(mǎn)足了認(rèn)證報(bào)文在及時(shí)性上的要求。
(2)計(jì)費(fèi)報(bào)文的處理計(jì)費(fèi)報(bào)文的要求同認(rèn)證報(bào)文的要求不同,在實(shí)時(shí)性上要求不如認(rèn)證報(bào)文嚴(yán)格,但在報(bào)文的安全性上要求更高,在服務(wù)器暫時(shí)出現(xiàn)故障的期間,計(jì)費(fèi)報(bào)文不能輕易拋棄,不能因?yàn)槭詹坏椒?wù)器的響應(yīng)就拋棄計(jì)費(fèi)報(bào)文。對(duì)應(yīng)這些要求,進(jìn)行如下處理
首先,在認(rèn)證報(bào)文的一級(jí)緩存緩沖池的配置上,一般配置比較小的一級(jí)緩沖池,例如2;這樣,用戶(hù)的計(jì)費(fèi)報(bào)文立即加入到一級(jí)緩沖池中的機(jī)會(huì)很小,計(jì)費(fèi)報(bào)文產(chǎn)生后一般加入到二級(jí)緩沖池中,等待一級(jí)緩沖池中的報(bào)文得到響應(yīng)后,才有機(jī)會(huì)得到發(fā)送;其次,處于一級(jí)緩沖池中的計(jì)費(fèi)報(bào)文,發(fā)送次數(shù)到達(dá)配置次數(shù)(例如3次)后仍然沒(méi)有收到響應(yīng),并不拋棄,而是將其從一級(jí)緩沖池中摘除,放置到二級(jí)緩沖池的尾部,等待再次躍遷到一級(jí)緩沖池的時(shí)候發(fā)送,如此反復(fù)3次后刪除。這樣,如果在服務(wù)器能夠正常響應(yīng)的時(shí)候,計(jì)費(fèi)報(bào)文同樣可以很快的發(fā)送。在Server出現(xiàn)故障的時(shí)候,由于一級(jí)緩沖池很小,大量的計(jì)費(fèi)報(bào)文存放在二級(jí)緩沖池中,形成很長(zhǎng)的鏈表。一個(gè)計(jì)費(fèi)報(bào)文需要經(jīng)歷三次從鏈表的尾部漸漸的移到鏈表的頭部,才能得到發(fā)送機(jī)會(huì)。這樣,大大的增加了計(jì)費(fèi)報(bào)文在設(shè)備內(nèi)的滯留時(shí)間,提高了計(jì)費(fèi)報(bào)文的安全性。
權(quán)利要求
1.一種基于客戶(hù)、服務(wù)器模式的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,包括a.設(shè)置存放已經(jīng)發(fā)送給服務(wù)器正在等待響應(yīng)的請(qǐng)求報(bào)文的一級(jí)緩沖池,以及存放等待向一級(jí)緩沖池發(fā)送的請(qǐng)求報(bào)文的二極緩沖池,所述一級(jí)緩沖池用于存放請(qǐng)求報(bào)文的節(jié)點(diǎn)數(shù)小于或等于報(bào)文管理協(xié)議規(guī)定的用于標(biāo)識(shí)請(qǐng)求報(bào)文的最大值;b.當(dāng)客戶(hù)端生成請(qǐng)求報(bào)文時(shí),如果一級(jí)緩沖池有空閑節(jié)點(diǎn),則該請(qǐng)求報(bào)文申請(qǐng)得到報(bào)文發(fā)送標(biāo)識(shí),同時(shí)向服務(wù)器發(fā)送該報(bào)文并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中報(bào)文發(fā)送標(biāo)識(shí)對(duì)應(yīng)的節(jié)點(diǎn),否則將該請(qǐng)求報(bào)文存入二級(jí)緩沖池;c.當(dāng)一級(jí)緩沖池中有請(qǐng)求報(bào)文發(fā)送完成后,釋放該報(bào)文所占的節(jié)點(diǎn)及報(bào)文發(fā)送標(biāo)識(shí),同時(shí)從二級(jí)緩沖池中按序讀出一個(gè)請(qǐng)求報(bào)文利用上述釋放的報(bào)文發(fā)送標(biāo)識(shí)發(fā)送該報(bào)文,并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中上述釋放的節(jié)點(diǎn)中。
2.根據(jù)權(quán)利要求1所述的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,其特征在于所述一級(jí)緩沖池采用數(shù)組結(jié)構(gòu),所述二級(jí)緩沖池采用雙向鏈表結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,其特征在于所述一級(jí)緩沖池的每個(gè)節(jié)點(diǎn)均設(shè)置有用于定時(shí)重發(fā)存儲(chǔ)在該節(jié)點(diǎn)的請(qǐng)求報(bào)文的定時(shí)器。
4.根據(jù)權(quán)利要求3所述的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,其特征在于所述一級(jí)緩沖池的節(jié)點(diǎn)數(shù)根據(jù)服務(wù)器的數(shù)據(jù)處理能力設(shè)置。
5.根據(jù)權(quán)利要求4所述的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,其特征在于步驟c還包括判斷一級(jí)緩沖池中是否有請(qǐng)求報(bào)文發(fā)送完成,該判斷通過(guò)判斷在指定的時(shí)間內(nèi)是否收到該報(bào)文的正確響應(yīng)或者判斷該報(bào)文的重發(fā)次數(shù)是否超過(guò)指定的次數(shù)實(shí)現(xiàn)。
全文摘要
本發(fā)明公開(kāi)了一種基于客戶(hù)、服務(wù)器模式的用戶(hù)請(qǐng)求報(bào)文的發(fā)送方法,該方法設(shè)置存放已經(jīng)發(fā)送給服務(wù)器正在等待響應(yīng)的請(qǐng)求報(bào)文的一級(jí)緩沖池,以及存放等待向一級(jí)緩沖池發(fā)送的請(qǐng)求報(bào)文的二極緩沖池,當(dāng)客戶(hù)端生成請(qǐng)求報(bào)文時(shí),如果一級(jí)緩沖池有空閑節(jié)點(diǎn),則向服務(wù)器發(fā)送該報(bào)文并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中報(bào)文發(fā)送標(biāo)識(shí)對(duì)應(yīng)的節(jié)點(diǎn),否則將該請(qǐng)求報(bào)文存入二級(jí)緩沖池;當(dāng)一級(jí)緩沖池中有請(qǐng)求報(bào)文發(fā)送完成后,從二級(jí)緩沖池中按序讀出一個(gè)請(qǐng)求報(bào)文發(fā)送,并將該報(bào)文存儲(chǔ)到一級(jí)緩沖池中的空閑節(jié)點(diǎn)中;采用上述方案,能夠解決報(bào)文ID資源不足的問(wèn)題,便于對(duì)客戶(hù)端發(fā)送報(bào)文強(qiáng)度的控制,以適應(yīng)不同處理能力的服務(wù)器和對(duì)大量用戶(hù)進(jìn)行管理的要求。
文檔編號(hào)H04L12/24GK1466311SQ0212113
公開(kāi)日2004年1月7日 申請(qǐng)日期2002年6月10日 優(yōu)先權(quán)日2002年6月10日
發(fā)明者方新, 方 新 申請(qǐng)人:華為技術(shù)有限公司