本發(fā)明實(shí)施例涉及分布式存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法及裝置。
背景技術(shù):
隨著云技術(shù)、大數(shù)據(jù)的興起及快速發(fā)展,用戶在客戶端的請(qǐng)求越來(lái)越多,當(dāng)客戶的多個(gè)客戶端同時(shí)向mds(metadataserver,元數(shù)據(jù)服務(wù)器)發(fā)送大量請(qǐng)求時(shí),會(huì)導(dǎo)致元數(shù)據(jù)服務(wù)器的會(huì)話map較大,出現(xiàn)異常,元數(shù)據(jù)服務(wù)器處于震蕩狀態(tài),從而會(huì)引起分布式集群系統(tǒng)中的集群無(wú)法使用,影響客戶端的正常工作。
鑒于此,如何防止因客戶端請(qǐng)求量太大,而導(dǎo)致元數(shù)據(jù)服務(wù)器出現(xiàn)異常,是本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的是提供一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法及裝置,以減小元數(shù)據(jù)服務(wù)器的壓力,提升客戶端的操作體驗(yàn)。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
本發(fā)明實(shí)施例一方面提供了一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法,包括:
當(dāng)接收到客戶端發(fā)送的數(shù)據(jù)請(qǐng)求時(shí),判斷所述客戶端標(biāo)記位是否存在設(shè)置值,根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)所述標(biāo)記位進(jìn)行設(shè)定;
當(dāng)判定所述標(biāo)記位存在設(shè)置值時(shí),將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,判斷所述客戶端已發(fā)的數(shù)據(jù)請(qǐng)求中未收到響應(yīng)的個(gè)數(shù)是否超過閾值;
當(dāng)判定所述個(gè)數(shù)未超過所述閾值時(shí),則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器,反之,將所述數(shù)據(jù)請(qǐng)求放入所述請(qǐng)求隊(duì)列中。
可選的,在所述將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中之后,還包括:
根據(jù)所述數(shù)據(jù)請(qǐng)求加入所述請(qǐng)求隊(duì)列的時(shí)間,對(duì)所述請(qǐng)求隊(duì)列中的各個(gè)數(shù)據(jù)請(qǐng)求進(jìn)行時(shí)間排序;
將所述數(shù)據(jù)請(qǐng)求與預(yù)先創(chuàng)建的定時(shí)器進(jìn)行關(guān)聯(lián),以使當(dāng)?shù)竭_(dá)相應(yīng)預(yù)設(shè)時(shí)間時(shí),自動(dòng)發(fā)送所述數(shù)據(jù)請(qǐng)求。
可選的,所述根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)所述標(biāo)記位進(jìn)行設(shè)定包括:
當(dāng)所述元數(shù)據(jù)服務(wù)器的會(huì)話map滿足預(yù)設(shè)條件時(shí),對(duì)所述元數(shù)據(jù)服務(wù)器的繁忙字段進(jìn)行設(shè)置,以用于表示當(dāng)前接收請(qǐng)求已達(dá)到上限,并將所述繁忙字段的狀態(tài)信息放于響應(yīng)請(qǐng)求信息發(fā)送至所述客戶端;
當(dāng)檢測(cè)到所述元數(shù)據(jù)服務(wù)器的繁忙字段被設(shè)置后,對(duì)所述客戶端的標(biāo)記位進(jìn)行設(shè)置。
可選的,還包括:
根據(jù)預(yù)設(shè)頻率判斷所述請(qǐng)求隊(duì)列中的各所述數(shù)據(jù)請(qǐng)求是否在各相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,自動(dòng)被發(fā)送至所述元數(shù)據(jù)服務(wù)器;
當(dāng)判定所述數(shù)據(jù)請(qǐng)求在相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,沒有被發(fā)送至所述元數(shù)據(jù)服務(wù)器,則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器。
可選的,在所述當(dāng)判定所述數(shù)據(jù)請(qǐng)求在相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,沒有被發(fā)送至所述元數(shù)據(jù)服務(wù)器之后,還包括:
向用戶進(jìn)行報(bào)警提示。
本發(fā)明實(shí)施例另一方面提供了一種客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置,包括:
狀態(tài)判斷模塊,用于當(dāng)接收到客戶端發(fā)送的數(shù)據(jù)請(qǐng)求時(shí),判斷所述客戶端標(biāo)記位是否存在設(shè)置值,根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)所述標(biāo)記位進(jìn)行設(shè)定;
數(shù)據(jù)請(qǐng)求處理模塊,用于當(dāng)判定所述標(biāo)記位存在設(shè)置值時(shí),將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,判斷所述客戶端已發(fā)的數(shù)據(jù)請(qǐng)求中未收到響應(yīng)的個(gè)數(shù)是否超過閾值;當(dāng)判定所述個(gè)數(shù)未超過所述閾值時(shí),則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器,反之,將所述數(shù)據(jù)請(qǐng)求放入所述請(qǐng)求隊(duì)列中。
可選的,還包括:
數(shù)據(jù)請(qǐng)求發(fā)送設(shè)置模塊,用于根據(jù)所述數(shù)據(jù)請(qǐng)求加入所述請(qǐng)求隊(duì)列的時(shí)間,對(duì)所述請(qǐng)求隊(duì)列中的各個(gè)數(shù)據(jù)請(qǐng)求進(jìn)行時(shí)間排序;將所述數(shù)據(jù)請(qǐng)求與預(yù)先創(chuàng)建的定時(shí)器進(jìn)行關(guān)聯(lián),以使當(dāng)?shù)竭_(dá)預(yù)設(shè)時(shí)間時(shí),自動(dòng)發(fā)送所述數(shù)據(jù)請(qǐng)求。
可選的,所述狀態(tài)判斷模塊為當(dāng)所述元數(shù)據(jù)服務(wù)器的會(huì)話map滿足預(yù)設(shè)條件時(shí),對(duì)所述元數(shù)據(jù)服務(wù)器的繁忙字段進(jìn)行設(shè)置,以用于表示當(dāng)前接收請(qǐng)求已達(dá)到上限,并將所述繁忙字段的狀態(tài)信息放于響應(yīng)請(qǐng)求信息發(fā)送至所述客戶端;當(dāng)檢測(cè)到所述元數(shù)據(jù)服務(wù)器的繁忙字段被設(shè)置后,對(duì)所述客戶端的標(biāo)記位進(jìn)行設(shè)置的模塊。
可選的,還包括:
數(shù)據(jù)請(qǐng)求發(fā)送檢測(cè)模塊,用于根據(jù)預(yù)設(shè)頻率判斷所述請(qǐng)求隊(duì)列中的各所述數(shù)據(jù)請(qǐng)求是否在各相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,自動(dòng)被發(fā)送至所述元數(shù)據(jù)服務(wù)器;當(dāng)判定所述數(shù)據(jù)請(qǐng)求在相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,沒有被發(fā)送至所述元數(shù)據(jù)服務(wù)器,則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器。
可選的,還包括:
提示模塊,用于向用戶進(jìn)行報(bào)警提示。
本發(fā)明實(shí)施例提供了一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法,當(dāng)接收到客戶端發(fā)送的數(shù)據(jù)請(qǐng)求時(shí),判斷客戶端標(biāo)記位是否存在設(shè)置值,根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)標(biāo)記位的設(shè)置值進(jìn)行設(shè)定;當(dāng)判定標(biāo)記位存在設(shè)置值時(shí),將數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,判斷所述客戶端已發(fā)的數(shù)據(jù)請(qǐng)求中未收到響應(yīng)的個(gè)數(shù)是否超過閾值;當(dāng)判定個(gè)數(shù)未超過閾值時(shí),則將數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器,反之,則數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中。
本申請(qǐng)?zhí)峁┑募夹g(shù)方案的優(yōu)點(diǎn)在于,通過客戶端的標(biāo)記位與元數(shù)據(jù)服務(wù)器反饋的響應(yīng)信息判斷當(dāng)前客戶端的數(shù)據(jù)請(qǐng)求的發(fā)送狀態(tài),當(dāng)元數(shù)據(jù)服務(wù)器繁忙時(shí),將數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,則進(jìn)行發(fā)送。有效的控制了客戶端發(fā)送數(shù)據(jù)請(qǐng)求的數(shù)量,有利于減緩元數(shù)據(jù)服務(wù)器的壓力,從而有效的避免了由于客戶端請(qǐng)求量太大導(dǎo)致元數(shù)據(jù)服務(wù)器出現(xiàn)異常,提升了元數(shù)據(jù)服務(wù)器的穩(wěn)定性與可靠性,不僅可提升分布式系統(tǒng)內(nèi)集群的使用效率,還有利于提升客戶端的操作體驗(yàn)。
此外,本發(fā)明實(shí)施例還針對(duì)客戶端與元數(shù)據(jù)服務(wù)器間的流控方法提供了相應(yīng)的實(shí)現(xiàn)裝置,進(jìn)一步使得所述方法更具有實(shí)用性,所述裝置具有相應(yīng)的優(yōu)點(diǎn)。
附圖說明
為了更清楚的說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的另一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的再一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置的一種具體實(shí)施方式結(jié)構(gòu)圖;
圖5為本發(fā)明實(shí)施例提供的客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置的另一種具體實(shí)施方式結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本申請(qǐng)的說明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”、“第三”“第四”等是用于區(qū)別不同的對(duì)象,而不是用于描述特定的順序。此外術(shù)語(yǔ)“包括”和“具有”以及他們?nèi)魏巫冃?,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可包括沒有列出的步驟或單元。
在介紹了本發(fā)明實(shí)施例的技術(shù)方案后,下面詳細(xì)的說明本申請(qǐng)的各種非限制性實(shí)施方式。
首先參見圖1,圖1為本發(fā)明實(shí)施例提供的一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法的流程示意圖,本發(fā)明實(shí)施例可包括以下內(nèi)容:
s101:當(dāng)接收到客戶端發(fā)送的數(shù)據(jù)請(qǐng)求時(shí),判斷所述客戶端標(biāo)記位是否存在設(shè)置值,根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)所述標(biāo)記位進(jìn)行設(shè)定。
具體的可為接收到上層應(yīng)用的請(qǐng)求或fuse_client內(nèi)部自發(fā)的請(qǐng)求,當(dāng)然,數(shù)據(jù)請(qǐng)求并不限于此。
客戶端標(biāo)記位例如可設(shè)置為busy_flags,具體可對(duì)標(biāo)記位進(jìn)行設(shè)置不同的值,以用于表示處于不同的狀態(tài),例如客戶端標(biāo)記位設(shè)置為1,表示當(dāng)前不可繼續(xù)發(fā)送數(shù)據(jù)請(qǐng)求,當(dāng)客戶端標(biāo)記位設(shè)置為0時(shí),表示可繼續(xù)執(zhí)行下述操作;當(dāng)然,也可進(jìn)行設(shè)置或不進(jìn)行設(shè)置,當(dāng)標(biāo)記位有設(shè)置值時(shí),可表示當(dāng)前不可繼續(xù)發(fā)送數(shù)據(jù)請(qǐng)求,當(dāng)標(biāo)記位沒有被設(shè)置時(shí),表示可繼續(xù)執(zhí)行下述操作。
對(duì)于客戶端標(biāo)記位的設(shè)置可根據(jù)下述方法進(jìn)行設(shè)置:
當(dāng)元數(shù)據(jù)服務(wù)器的會(huì)話map滿足預(yù)設(shè)條件時(shí),例如,當(dāng)然元數(shù)據(jù)服務(wù)器的會(huì)話map很大時(shí)(具體的程度,本領(lǐng)域技術(shù)人員可根據(jù)具體的實(shí)際情況進(jìn)行確定),表明當(dāng)前元數(shù)據(jù)服務(wù)器處理的數(shù)據(jù)請(qǐng)求較多,可對(duì)元數(shù)據(jù)服務(wù)器的繁忙字段進(jìn)行設(shè)置,以用于表示當(dāng)前接收請(qǐng)求是否已達(dá)到上限,可將繁忙字段的狀態(tài)設(shè)置為忙時(shí),或具體設(shè)置為預(yù)先協(xié)議好的數(shù)值,例如繁忙字段設(shè)置為1,表示當(dāng)前很忙,不可繼續(xù)接收處理數(shù)據(jù)請(qǐng)求,當(dāng)設(shè)置為0時(shí),表示可繼續(xù)接收數(shù)據(jù)請(qǐng)求,并正常對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行響應(yīng)。
然后將設(shè)置后的繁忙字段的狀態(tài)信息放于最近的響應(yīng)請(qǐng)求信息發(fā)送至客戶端。客戶端接收到響應(yīng)信息后,當(dāng)檢測(cè)該響應(yīng)信息中攜帶的繁忙字段時(shí),將本地的標(biāo)記位進(jìn)行設(shè)置。
s102:當(dāng)判定所述標(biāo)記位存在設(shè)置值時(shí),將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中。
當(dāng)標(biāo)記位存在設(shè)置值時(shí),也就是客戶端標(biāo)記位根據(jù)元數(shù)據(jù)服務(wù)器反饋的信息被設(shè)置了,表明當(dāng)前元數(shù)據(jù)服務(wù)器處理請(qǐng)求較多,不可繼續(xù)接收數(shù)據(jù)請(qǐng)求。故將客戶端發(fā)送的數(shù)據(jù)請(qǐng)求放于請(qǐng)求隊(duì)列中,直至元數(shù)據(jù)服務(wù)器可接收數(shù)據(jù)請(qǐng)求時(shí),在將其進(jìn)行發(fā)送。
請(qǐng)求隊(duì)列為預(yù)先創(chuàng)建的隊(duì)列,用于存放客戶端發(fā)送的數(shù)據(jù)請(qǐng)求,請(qǐng)求隊(duì)列中各個(gè)數(shù)據(jù)請(qǐng)求可按照放入的時(shí)間順序進(jìn)行排序,例如先放進(jìn)隊(duì)列的位于隊(duì)列的前端,當(dāng)可進(jìn)行發(fā)送時(shí),先發(fā)送隊(duì)列前端的數(shù)據(jù)請(qǐng)求(即先發(fā)送先放入隊(duì)列的數(shù)據(jù)請(qǐng)求);還也可根據(jù)數(shù)據(jù)請(qǐng)求的重要性進(jìn)行排序,重要級(jí)別越高放于隊(duì)列的前段,優(yōu)先進(jìn)行發(fā)送。當(dāng)然,也可采用其他方式對(duì)請(qǐng)求隊(duì)列中的數(shù)據(jù)請(qǐng)求進(jìn)行排序,或不對(duì)其進(jìn)行排序,這均不影響本申請(qǐng)的實(shí)現(xiàn)。
請(qǐng)求隊(duì)列可與定時(shí)裝置相關(guān)聯(lián),用于到達(dá)預(yù)設(shè)時(shí)間時(shí)將到期的數(shù)據(jù)請(qǐng)求發(fā)送至元數(shù)據(jù)服務(wù)器。
s103:當(dāng)判定所述標(biāo)記位不存在設(shè)置值時(shí),判斷所述客戶端已發(fā)的數(shù)據(jù)請(qǐng)求中未收到響應(yīng)的個(gè)數(shù)是否超過閾值。
當(dāng)標(biāo)記位沒有被設(shè)置時(shí),可能是由于元數(shù)據(jù)服務(wù)器不忙,可繼續(xù)處理響應(yīng)客戶端的數(shù)據(jù)請(qǐng)求,還有可能是當(dāng)前數(shù)據(jù)請(qǐng)求較多,還沒有及時(shí)將繁忙字段的設(shè)置信息隨著響應(yīng)信息反饋到客戶端。鑒于此,為了進(jìn)一步確保避免元數(shù)據(jù)服務(wù)器端的異常,對(duì)元數(shù)據(jù)服務(wù)器的實(shí)際處理請(qǐng)求情況進(jìn)行判斷,具體的可通過客戶端發(fā)送的數(shù)據(jù)請(qǐng)求中,未收到元數(shù)據(jù)服務(wù)器響應(yīng)的請(qǐng)求的個(gè)數(shù)的來(lái)判斷。
閾值可根據(jù)具體的實(shí)際情況進(jìn)行確定,本申請(qǐng)對(duì)此不做任何限定。例如客戶端已發(fā)的8條數(shù)據(jù)請(qǐng)求,但是僅有兩個(gè)數(shù)據(jù)請(qǐng)求收到響應(yīng),其他的都沒有收到元數(shù)據(jù)服務(wù)器的響應(yīng),此時(shí),可判定元數(shù)據(jù)服務(wù)器處理的數(shù)據(jù)請(qǐng)求較多,便可等一段時(shí)間進(jìn)行發(fā)送;而當(dāng)客戶端已發(fā)的8條數(shù)據(jù)請(qǐng)求,但是僅有兩個(gè)數(shù)據(jù)請(qǐng)求未收到響應(yīng),那么可判定當(dāng)前元數(shù)據(jù)服務(wù)器還可繼續(xù)處理數(shù)據(jù)請(qǐng)求,便可將當(dāng)前數(shù)據(jù)請(qǐng)求發(fā)送至元數(shù)據(jù)服務(wù)器進(jìn)行處理。
s104:當(dāng)判定所述個(gè)數(shù)未超過所述閾值時(shí),則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器。
s105:當(dāng)判定所述個(gè)數(shù)超過所述閾值時(shí),則將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中。
在本發(fā)明實(shí)施例提供的技術(shù)方案中,通過客戶端的標(biāo)記位與元數(shù)據(jù)服務(wù)器反饋的響應(yīng)信息判斷當(dāng)前客戶端的數(shù)據(jù)請(qǐng)求的發(fā)送狀態(tài),當(dāng)元數(shù)據(jù)服務(wù)器繁忙時(shí),將數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,則進(jìn)行發(fā)送。有效的控制了客戶端發(fā)送數(shù)據(jù)請(qǐng)求的數(shù)量,有利于減緩元數(shù)據(jù)服務(wù)器的壓力,從而有效的避免了由于客戶端請(qǐng)求量太大導(dǎo)致元數(shù)據(jù)服務(wù)器出現(xiàn)異常,提升了元數(shù)據(jù)服務(wù)器的穩(wěn)定性與可靠性,不僅可提升分布式系統(tǒng)內(nèi)集群的使用效率,還有利于提升客戶端的操作體驗(yàn)。
在一種具體的實(shí)施方式下,本發(fā)明實(shí)施例可應(yīng)用于分布式存儲(chǔ)系統(tǒng),基于上述實(shí)施例,本申請(qǐng)還提供另外一個(gè)實(shí)施例,請(qǐng)參閱圖2所示,具體可包括:
s106:根據(jù)所述數(shù)據(jù)請(qǐng)求加入所述請(qǐng)求隊(duì)列的時(shí)間,對(duì)所述請(qǐng)求隊(duì)列中的各個(gè)數(shù)據(jù)請(qǐng)求進(jìn)行時(shí)間排序;
s107:將所述數(shù)據(jù)請(qǐng)求與預(yù)先創(chuàng)建的定時(shí)器進(jìn)行關(guān)聯(lián),以使當(dāng)?shù)竭_(dá)相應(yīng)預(yù)設(shè)時(shí)間時(shí),自動(dòng)發(fā)送所述數(shù)據(jù)請(qǐng)求。
將新加入的數(shù)據(jù)請(qǐng)求在請(qǐng)求隊(duì)列中進(jìn)行排序,并與定時(shí)器相關(guān)聯(lián),以使其到達(dá)預(yù)設(shè)時(shí)間時(shí),自動(dòng)發(fā)送至元數(shù)據(jù)服務(wù)器,避免數(shù)據(jù)請(qǐng)求由于未設(shè)置而可能被遺漏。有利于提升系統(tǒng)的可靠性,保證客戶端與服務(wù)器間的有效交互,提升客戶端的操作體驗(yàn)。
在本發(fā)明實(shí)施例的一些具體實(shí)施方式中,請(qǐng)參閱圖3所示,還可包括:
s108:根據(jù)預(yù)設(shè)頻率判斷所述請(qǐng)求隊(duì)列中的各所述數(shù)據(jù)請(qǐng)求是否在各相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,自動(dòng)被發(fā)送至所述元數(shù)據(jù)服務(wù)器。
s109:當(dāng)判定所述數(shù)據(jù)請(qǐng)求在相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,沒有被發(fā)送至所述元數(shù)據(jù)服務(wù)器,則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器。
為了進(jìn)一步的確保請(qǐng)求隊(duì)列中存儲(chǔ)的各個(gè)數(shù)據(jù)請(qǐng)求按照預(yù)設(shè)時(shí)間,到期后發(fā)送至元數(shù)據(jù)服務(wù)器??啥〞r(shí)進(jìn)行查看請(qǐng)求隊(duì)列中的數(shù)據(jù)發(fā)送情況,及時(shí)將未發(fā)送的數(shù)據(jù)請(qǐng)求進(jìn)行發(fā)送。
為了確定未發(fā)送的原因,可將信息反饋給用戶,還可向用戶進(jìn)行報(bào)警提示未發(fā)送出的數(shù)據(jù)請(qǐng)求,以使用戶盡快進(jìn)行維修,有利于提升系統(tǒng)的穩(wěn)定性與可靠性,保證客戶端與服務(wù)器間的有效交互,提升客戶端的操作體驗(yàn)。
本發(fā)明實(shí)施例還針對(duì)客戶端與元數(shù)據(jù)服務(wù)器間的流控方法提供了相應(yīng)的實(shí)現(xiàn)裝置,進(jìn)一步使得所述方法更具有實(shí)用性。下面對(duì)本發(fā)明實(shí)施例提供的客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置進(jìn)行介紹,下文描述的客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置與上文描述的客戶端與元數(shù)據(jù)服務(wù)器間的流控方法可相互對(duì)應(yīng)參照。
請(qǐng)參見圖4,圖4為本發(fā)明實(shí)施例提供的客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置在一種具體實(shí)施方式下的結(jié)構(gòu)圖,該裝置可包括:
狀態(tài)判斷模塊401,用于當(dāng)接收到客戶端發(fā)送的數(shù)據(jù)請(qǐng)求時(shí),判斷所述客戶端標(biāo)記位是否存在設(shè)置值,根據(jù)元數(shù)據(jù)服務(wù)器響應(yīng)請(qǐng)求信息中繁忙字段的設(shè)置狀態(tài)對(duì)所述標(biāo)記位進(jìn)行設(shè)定;
數(shù)據(jù)請(qǐng)求處理模塊402,用于當(dāng)判定所述標(biāo)記位存在設(shè)置值時(shí),將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,判斷所述客戶端已發(fā)的數(shù)據(jù)請(qǐng)求中未收到響應(yīng)的個(gè)數(shù)是否超過閾值;當(dāng)判定所述個(gè)數(shù)未超過所述閾值時(shí),則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器,反之,將所述數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中。
在本實(shí)施例的一些實(shí)施方式中,所述狀態(tài)判斷模塊401為當(dāng)所述元數(shù)據(jù)服務(wù)器的會(huì)話map滿足預(yù)設(shè)條件時(shí),對(duì)所述元數(shù)據(jù)服務(wù)器的繁忙字段進(jìn)行設(shè)置,以用于表示當(dāng)前接收請(qǐng)求已達(dá)到上限,并將所述繁忙字段的狀態(tài)信息放于響應(yīng)請(qǐng)求信息發(fā)送至所述客戶端;當(dāng)檢測(cè)到所述元數(shù)據(jù)服務(wù)器的繁忙字段被設(shè)置后,對(duì)所述客戶端的標(biāo)記位進(jìn)行設(shè)置的模塊。
可選的,在本申請(qǐng)的一些實(shí)施方式中,請(qǐng)參閱圖5,所述裝置例如可以包括數(shù)據(jù)請(qǐng)求發(fā)送設(shè)置模塊403,用于根據(jù)所述數(shù)據(jù)請(qǐng)求加入所述請(qǐng)求隊(duì)列的時(shí)間,對(duì)所述請(qǐng)求隊(duì)列中的各個(gè)數(shù)據(jù)請(qǐng)求進(jìn)行時(shí)間排序;將所述數(shù)據(jù)請(qǐng)求與預(yù)先創(chuàng)建的定時(shí)器進(jìn)行關(guān)聯(lián),以使當(dāng)?shù)竭_(dá)預(yù)設(shè)時(shí)間時(shí),自動(dòng)發(fā)送所述數(shù)據(jù)請(qǐng)求。
可選的,在本申請(qǐng)的一些實(shí)施方式中,請(qǐng)參閱圖5,所述裝置例如可以包括數(shù)據(jù)請(qǐng)求發(fā)送檢測(cè)模塊404,用于根據(jù)預(yù)設(shè)頻率判斷所述請(qǐng)求隊(duì)列中的各所述數(shù)據(jù)請(qǐng)求是否在各相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,自動(dòng)被發(fā)送至所述元數(shù)據(jù)服務(wù)器;當(dāng)判定所述數(shù)據(jù)請(qǐng)求在相應(yīng)預(yù)設(shè)時(shí)間到達(dá)后,沒有被發(fā)送至所述元數(shù)據(jù)服務(wù)器,則將所述數(shù)據(jù)請(qǐng)求發(fā)送至所述元數(shù)據(jù)服務(wù)器。
還可包括提示模塊,用于向用戶進(jìn)行報(bào)警提示。
本發(fā)明實(shí)施例所述客戶端與元數(shù)據(jù)服務(wù)器間的流控裝置的各功能模塊的功能可根據(jù)上述方法實(shí)施例中的方法具體實(shí)現(xiàn),其具體實(shí)現(xiàn)過程可以參照上述方法實(shí)施例的相關(guān)描述,此處不再贅述。
由上可知,本發(fā)明實(shí)施例通過客戶端的標(biāo)記位與元數(shù)據(jù)服務(wù)器反饋的響應(yīng)信息判斷當(dāng)前客戶端的數(shù)據(jù)請(qǐng)求的發(fā)送狀態(tài),當(dāng)元數(shù)據(jù)服務(wù)器繁忙時(shí),將數(shù)據(jù)請(qǐng)求放入請(qǐng)求隊(duì)列中,反之,則進(jìn)行發(fā)送。有效的控制了客戶端發(fā)送數(shù)據(jù)請(qǐng)求的數(shù)量,有利于減緩元數(shù)據(jù)服務(wù)器的壓力,從而有效的避免了由于客戶端請(qǐng)求量太大導(dǎo)致元數(shù)據(jù)服務(wù)器出現(xiàn)異常,提升了元數(shù)據(jù)服務(wù)器的穩(wěn)定性與可靠性,不僅可提升分布式系統(tǒng)內(nèi)集群的使用效率,還有利于提升客戶端的操作體驗(yàn)。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(ram)、內(nèi)存、只讀存儲(chǔ)器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動(dòng)磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上對(duì)本發(fā)明所提供的一種客戶端與元數(shù)據(jù)服務(wù)器間的流控方法以及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說,在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。