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