一種api服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及的是一種API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法及其系統(tǒng)。
【背景技術(shù)】
[0002]傳統(tǒng)API (Applicat1n Programming Interface,即應(yīng)用程序編程接口)服務(wù)器處理API請(qǐng)求包含三個(gè)操作:接收請(qǐng)求、業(yè)務(wù)邏輯運(yùn)算、返回結(jié)果。這三個(gè)操作都是在同一個(gè)API,即同一個(gè)http請(qǐng)求中完成的。決定請(qǐng)求響應(yīng)速度的主要因素就是業(yè)務(wù)邏輯運(yùn)算耗時(shí)。
[0003]隨著大數(shù)據(jù)時(shí)代的到來(lái),服務(wù)器承載的運(yùn)算量越來(lái)越大,業(yè)務(wù)邏輯運(yùn)算耗時(shí)也越來(lái)越長(zhǎng)。要減少業(yè)務(wù)邏輯運(yùn)算耗時(shí),必須通過(guò)并行的方式進(jìn)行業(yè)務(wù)邏輯運(yùn)算,但創(chuàng)建、調(diào)度、管理線程是一項(xiàng)復(fù)雜而且容易出錯(cuò)的工作,所以往往需要借助像Storm這樣的分布式并行計(jì)算框架。
[0004]一般的做法是將API服務(wù)器業(yè)務(wù)邏輯運(yùn)算抽離出來(lái),放到Storm (分布式實(shí)時(shí)計(jì)算系統(tǒng),也即是Twitter開(kāi)源的一個(gè)分布式的實(shí)時(shí)計(jì)算系統(tǒng))中,API服務(wù)器通過(guò)DRPC(Distribute Remote Procedure Call Protocol,即分布式遠(yuǎn)程過(guò)程調(diào)用協(xié)議)的方式提交請(qǐng)求到Storm,然后等待請(qǐng)求返回。當(dāng)Client請(qǐng)求量較小的時(shí)候,通過(guò)Storm并行計(jì)算能力能減少業(yè)務(wù)邏輯運(yùn)算耗時(shí)。但是Storm運(yùn)算能力是有限的,當(dāng)客戶端并發(fā)請(qǐng)求數(shù)增大的時(shí)候,API服務(wù)器對(duì)Storm的DRPC并發(fā)請(qǐng)求數(shù)也會(huì)增大,當(dāng)它超過(guò)Storm的運(yùn)算能力時(shí),Storm就會(huì)讓DPRC請(qǐng)求進(jìn)入隊(duì)列排隊(duì),從而后面的DPRC請(qǐng)求的響應(yīng)時(shí)間就會(huì)變長(zhǎng)。API服務(wù)器的連接線程會(huì)被DRPC請(qǐng)求阻塞起來(lái),無(wú)法處理新的請(qǐng)求,很快當(dāng)連接線程池耗盡的時(shí)候,API服務(wù)器就會(huì)不可用,這對(duì)客戶端來(lái)說(shuō)是不友好的。
[0005]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述缺陷,提供一種API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法及其系統(tǒng),可有效解決現(xiàn)有技術(shù)中API服務(wù)器在處理大數(shù)據(jù)時(shí)存在的高延遲、低吞吐量的缺陷。
[0007]本發(fā)明解決技術(shù)問(wèn)題所采用的技術(shù)方案如下:
一種API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,其中,所述方法包括步驟:
A、客戶端接收用戶的操作指令,向API服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù);
B、所述API服務(wù)器接收所述請(qǐng)求數(shù)據(jù),并將所述請(qǐng)求數(shù)據(jù)發(fā)送至消息隊(duì)列集群緩沖,所述消息隊(duì)列集群再將所述請(qǐng)求數(shù)據(jù)發(fā)送至分布式實(shí)時(shí)計(jì)算系統(tǒng)集群;
C、所述分布式實(shí)時(shí)計(jì)算系統(tǒng)集群對(duì)所述請(qǐng)求數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,并將得到的運(yùn)算結(jié)果發(fā)送至數(shù)據(jù)庫(kù)存儲(chǔ);
D、當(dāng)客戶端接收到用戶的結(jié)果獲取指令時(shí),向API服務(wù)器發(fā)送所述結(jié)果獲取指令,所述API服務(wù)器據(jù)所述結(jié)果獲取指令在數(shù)據(jù)庫(kù)中查詢所述運(yùn)算結(jié)果并返回至客戶端。
[0008]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,其中,所述步驟B具體包括:
B1、所述API服務(wù)器接收所述數(shù)據(jù)請(qǐng)求,并生成一與所述請(qǐng)求數(shù)據(jù)相對(duì)應(yīng)的請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí);
B2、所述API將所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至客戶端,并將所述請(qǐng)求數(shù)據(jù)及所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至消息隊(duì)列集群緩沖;
B3、所述消息隊(duì)列集群接收所述請(qǐng)求數(shù)據(jù)及所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí),并將所述請(qǐng)求數(shù)據(jù)發(fā)送至分布式實(shí)時(shí)計(jì)算系統(tǒng)集群。
[0009]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,其中,所述數(shù)據(jù)庫(kù)為Redis數(shù)據(jù)庫(kù)。
[0010]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,其中,所述步驟D具體包括:
D1、當(dāng)客戶端接收到用戶的結(jié)果獲取指令時(shí),將所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至API服務(wù)器;
D2、所述API服務(wù)器接收所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí),并根據(jù)所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)在所述數(shù)據(jù)庫(kù)中查詢對(duì)應(yīng)的運(yùn)算結(jié)果;
D3、當(dāng)查詢到所述運(yùn)算結(jié)果時(shí),則將所述運(yùn)算結(jié)果發(fā)送至客戶端。
[0011]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,其中,所述步驟D3之后還包括:
D4、當(dāng)未查詢到所述運(yùn)算結(jié)果時(shí),所述客戶端再次發(fā)出結(jié)果獲取指令,并返回執(zhí)行步驟
D1
[0012]一種API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng),其中,包括:
請(qǐng)求發(fā)送模塊,用于客戶端接收用戶的操作指令,向API服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù);
緩存及發(fā)送模塊,用于所述API服務(wù)器接收所述請(qǐng)求數(shù)據(jù),并將所述請(qǐng)求數(shù)據(jù)發(fā)送至消息隊(duì)列集群緩沖,所述消息隊(duì)列集群再將所述請(qǐng)求數(shù)據(jù)發(fā)送至分布式實(shí)時(shí)計(jì)算系統(tǒng)集群;
運(yùn)算及存儲(chǔ)模塊,用于所述分布式實(shí)時(shí)計(jì)算系統(tǒng)集群對(duì)所述請(qǐng)求數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,并將得到的運(yùn)算結(jié)果發(fā)送至數(shù)據(jù)庫(kù)存儲(chǔ);
結(jié)果獲取模塊,用于當(dāng)客戶端接收到用戶的結(jié)果獲取指令時(shí),所述API服務(wù)器在數(shù)據(jù)庫(kù)中查詢所述運(yùn)算結(jié)果并返回至客戶端。
[0013]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng),其中,所述緩存及發(fā)送模塊具體包括: 標(biāo)識(shí)生成單元,用于所述API服務(wù)器接收所述數(shù)據(jù)請(qǐng)求,并生成一與所述請(qǐng)求數(shù)據(jù)相對(duì)應(yīng)的請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí);
數(shù)據(jù)及標(biāo)識(shí)發(fā)送單元,用于所述API將所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至客戶端,并將所述請(qǐng)求數(shù)據(jù)及所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至消息隊(duì)列集群緩沖;
緩存數(shù)據(jù)發(fā)送單元,用于所述消息隊(duì)列集群接收所述請(qǐng)求數(shù)據(jù)及所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí),并將所述請(qǐng)求數(shù)據(jù)發(fā)送至分布式實(shí)時(shí)計(jì)算系統(tǒng)集群。
[0014]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng),其中,所述數(shù)據(jù)庫(kù)為Redis數(shù)據(jù)庫(kù)。
[0015]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng),其中,所述結(jié)果獲取模塊具體包括: 標(biāo)識(shí)發(fā)送單元,用于當(dāng)客戶端接收到用戶的結(jié)果獲取指令時(shí),將所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)發(fā)送至API服務(wù)器;
結(jié)果查詢單元,用于所述API服務(wù)器接收所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí),并根據(jù)所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)在所述數(shù)據(jù)庫(kù)中查詢對(duì)應(yīng)的運(yùn)算結(jié)果;
結(jié)果反饋單元,用于當(dāng)查詢到所述運(yùn)算結(jié)果時(shí),則將所述運(yùn)算結(jié)果發(fā)送至客戶端。
[0016]所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng),其中,所述結(jié)果獲取模塊還包括:
重復(fù)查詢單元,用于當(dāng)未查詢到所述運(yùn)算結(jié)果時(shí),所述客戶端再次發(fā)出結(jié)果獲取指令,
并將所述請(qǐng)求數(shù)據(jù)身份標(biāo)識(shí)再次發(fā)送至API服務(wù)器。
[0017]本發(fā)明所提供的一種API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法及其系統(tǒng),方法包括:客戶端接收用戶的操作指令,向API服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù);所述API服務(wù)器接收所述請(qǐng)求數(shù)據(jù),并將所述請(qǐng)求數(shù)據(jù)發(fā)送至消息隊(duì)列集群緩沖,所述消息隊(duì)列集群再將所述請(qǐng)求數(shù)據(jù)發(fā)送至分布式實(shí)時(shí)計(jì)算系統(tǒng)集群;所述分布式實(shí)時(shí)計(jì)算系統(tǒng)集群對(duì)所述請(qǐng)求數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯運(yùn)算,并將得到的運(yùn)算結(jié)果發(fā)送至數(shù)據(jù)庫(kù)存儲(chǔ);當(dāng)客戶端接收到用戶的結(jié)果獲取指令時(shí),向API服務(wù)器發(fā)送所述結(jié)果獲取指令,所述API服務(wù)器據(jù)所述結(jié)果獲取指令在數(shù)據(jù)庫(kù)中查詢所述運(yùn)算結(jié)果并返回至客戶端。本發(fā)明提供了一種低延遲、高性能、易擴(kuò)展的兩步式API服務(wù)器實(shí)現(xiàn)方法,避免了 API服務(wù)器在處理大數(shù)據(jù)時(shí)出現(xiàn)的高延遲、低吞吐量的問(wèn)題。
【附圖說(shuō)明】
[0018]圖1是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法的較佳實(shí)施例的流程圖。
[0019]圖2是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法中緩存及發(fā)送請(qǐng)求數(shù)據(jù)的具體流程圖。
[0020]圖3是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法中運(yùn)算結(jié)果獲取的具體流程圖。
[0021]圖4是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng)的較佳實(shí)施例的結(jié)構(gòu)框圖。
[0022]圖5是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0024]請(qǐng)參見(jiàn)圖1,圖1是本發(fā)明所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法較佳實(shí)施例的流程圖。如圖1所示,所述API服務(wù)器處理大數(shù)據(jù)的運(yùn)算方法,包括以下步驟:
步驟S100、客戶端接收用戶的操作指令,向API服務(wù)器發(fā)送