ramework調(diào)用,即hsf調(diào)用,之后,server獲取api調(diào)用請(qǐng)求對(duì)應(yīng)的第一結(jié)果后通過callback將第一結(jié)果返回給mtop。例如,api調(diào)用請(qǐng)求是請(qǐng)求寶貝詳情的請(qǐng)求,則第一結(jié)果可以是寶貝詳情的具體內(nèi)容。
[0087]S309:mtop根據(jù)預(yù)先獲取的wjas的標(biāo)識(shí)信息和數(shù)據(jù)標(biāo)識(shí)信息,將第一結(jié)果和數(shù)據(jù)標(biāo)識(shí)信息發(fā)送給wjas的標(biāo)識(shí)信息對(duì)應(yīng)的wjas。
[0088]S310:wjas將第一結(jié)果和數(shù)據(jù)標(biāo)識(shí)信息通過spdy通道,推送給客戶端。
[0089]S311:客戶端監(jiān)聽到數(shù)據(jù)標(biāo)識(shí)信息和第一結(jié)果后,在監(jiān)聽的數(shù)據(jù)標(biāo)識(shí)信息與自身預(yù)先獲取的數(shù)據(jù)標(biāo)識(shí)信息一致時(shí),根據(jù)該第一結(jié)果處理對(duì)應(yīng)的業(yè)務(wù)。
[0090]例如,第一結(jié)果是寶貝詳情的具體內(nèi)容,則向用戶展示寶貝詳情的具體內(nèi)容。
[0091]上述給出了服務(wù)端根據(jù)客戶端的api調(diào)用請(qǐng)求獲取數(shù)據(jù)結(jié)果,另一實(shí)施例中,月艮務(wù)端還可以主動(dòng)推送數(shù)據(jù)結(jié)果給客戶端。服務(wù)端主動(dòng)推送的數(shù)據(jù)結(jié)果可以稱為第二結(jié)果,參見圖7,客戶端獲取第二結(jié)果的流程可以包括:
[0092]S71:所述接入層設(shè)備在與所述客戶端建立所述通道后,向所述推送服務(wù)器發(fā)送注冊(cè)信息,所述注冊(cè)信息中包括所述接入層設(shè)備的標(biāo)識(shí)信息。
[0093]當(dāng)接入層設(shè)備是wjas時(shí),接入層設(shè)備的標(biāo)識(shí)信息可以具體包括wjas的ip地址,協(xié)議、端口號(hào)等信息。
[0094]推送服務(wù)端可以具體是指圖4中的push server。
[0095]接入層設(shè)備與客戶端之間的通道可以具體是指spdy通道。
[0096]S72:服務(wù)提供設(shè)備接收應(yīng)用層設(shè)備發(fā)送的api調(diào)用請(qǐng)求,并根據(jù)所述api調(diào)用請(qǐng)求獲取第二結(jié)果和數(shù)據(jù)標(biāo)識(shí)信息。
[0097]如圖3所示實(shí)施例,mtop接收到api調(diào)用請(qǐng)求后,可以將api調(diào)用請(qǐng)求發(fā)送給服務(wù)提供設(shè)備server,api調(diào)用請(qǐng)求中包含數(shù)據(jù)標(biāo)識(shí)信息。
[0098]上一實(shí)施例中,服務(wù)提供設(shè)備可以根據(jù)api調(diào)用請(qǐng)求獲取第一結(jié)果,本實(shí)施例中,server還可以確定出主動(dòng)推送給客戶端的數(shù)據(jù),該數(shù)據(jù)可以稱為第二結(jié)果,例如,api調(diào)用請(qǐng)求是將物品加入購物車,如果物品庫存緊張,則可以主動(dòng)推送庫存緊張的數(shù)據(jù)結(jié)果。
[0099]S73:服務(wù)提供設(shè)備將第二結(jié)果和數(shù)據(jù)標(biāo)識(shí)信息發(fā)送給推送服務(wù)器。
[0100]S74:所述推送服務(wù)器根據(jù)預(yù)先獲取的所述接入層設(shè)備的標(biāo)識(shí)信息,將所述第二結(jié)果和數(shù)據(jù)標(biāo)識(shí)信息發(fā)送給所述接入層設(shè)備。
[0101]S75:所述接入層設(shè)備將所述第二結(jié)果和所述數(shù)據(jù)標(biāo)識(shí)信息,通過所述通道推送給所述客戶端。
[0102]本實(shí)施例通過在分配數(shù)據(jù)標(biāo)識(shí)信息后,釋放數(shù)據(jù)流占用的資源,可以實(shí)現(xiàn)對(duì)服務(wù)端資源的及時(shí)釋放,避免一直保持造成的資源浪費(fèi),該釋放的資源可以用于為其他客戶端提供服務(wù),因此可以降低服務(wù)端資源浪費(fèi),提高服務(wù)端資源利用率,提升服務(wù)端吞吐量。另夕卜,本實(shí)施例通過spdy的長(zhǎng)連通道和客戶端以及服務(wù)端的配合,可以實(shí)現(xiàn)對(duì)api調(diào)用請(qǐng)求的完全異步化調(diào)用。在中間返回?cái)?shù)據(jù)標(biāo)識(shí)信息,客戶端發(fā)起監(jiān)聽后,spdy通道上當(dāng)前api調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)流可以完全釋放,減少服務(wù)端的內(nèi)存消耗,充分利用了服務(wù)端的資源,提升服務(wù)端的吞吐能力。
[0103]圖8是本申請(qǐng)另一實(shí)施例提出的異步調(diào)用裝置的結(jié)構(gòu)示意圖,該裝置80包括接收模塊81、處理模塊82以及獲取模塊83。
[0104]接收模塊81用于在與客戶端連接的通道上新建數(shù)據(jù)流,并通過所述數(shù)據(jù)流接收所述客戶端發(fā)送的調(diào)用請(qǐng)求。
[0105]本實(shí)施例的裝置可以位于服務(wù)端。
[0106]服務(wù)端可以具體包括接入層設(shè)備、應(yīng)用層設(shè)備、服務(wù)提供設(shè)備以及推送服務(wù)器。
[0107]服務(wù)端與客戶端連接的通道可以是spdy通道或者HTTP協(xié)議通道或者基于tcp/ip的套接字(socket)長(zhǎng)連通道。其中,spdy是Google開發(fā)的基于傳輸控制協(xié)議(Transmiss1n Control Protocol, TCP)的應(yīng)用層協(xié)議。
[0108]數(shù)據(jù)流(stream)是一種虛擬通道,該虛擬通道位于服務(wù)端與客戶端連接的通道內(nèi),該數(shù)據(jù)流可以傳輸調(diào)用請(qǐng)求。具體的,數(shù)據(jù)流可以是雙向字節(jié)流,每個(gè)調(diào)用請(qǐng)求用一個(gè)數(shù)據(jù)流傳輸,不同調(diào)用請(qǐng)求用不同數(shù)據(jù)流傳輸,數(shù)據(jù)流可以在服務(wù)端與客戶端連接的通道中并行傳輸調(diào)用請(qǐng)求。
[0109]調(diào)用請(qǐng)求可以是指定的應(yīng)用程序編程接口(Applicat1n ProgrammingInterface, api)的調(diào)用請(qǐng)求,例如電子商務(wù)系統(tǒng)中實(shí)現(xiàn)下單的業(yè)務(wù)操作的api。
[0110]處理模塊82用于接收到所述調(diào)用請(qǐng)求后,向所述客戶端發(fā)送與所述調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)信息,并釋放所述數(shù)據(jù)流占用的資源。
[0111]其中,不同調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)信息不同。所述客戶端可以根據(jù)所述數(shù)據(jù)標(biāo)識(shí)信息對(duì)所述通道進(jìn)行監(jiān)聽以獲取所述數(shù)據(jù)標(biāo)識(shí)信息對(duì)應(yīng)的結(jié)果數(shù)據(jù)。
[0112]其中,每個(gè)調(diào)用請(qǐng)求對(duì)應(yīng)唯一的數(shù)據(jù)標(biāo)識(shí)信息,相應(yīng)的,調(diào)用請(qǐng)求對(duì)應(yīng)的結(jié)果數(shù)據(jù)與該調(diào)用請(qǐng)求對(duì)應(yīng)相同的一個(gè)數(shù)據(jù)標(biāo)識(shí)信息。通過數(shù)據(jù)標(biāo)識(shí)信息,客戶端可以監(jiān)聽到其發(fā)送的調(diào)用請(qǐng)求對(duì)應(yīng)的結(jié)果數(shù)據(jù)。
[0113]相關(guān)技術(shù)中,在服務(wù)端向客戶端返回結(jié)果之前,數(shù)據(jù)流占用的資源是一直被保持的,這種方式會(huì)浪費(fèi)服務(wù)端資源,降低服務(wù)端吞吐量。
[0114]而本實(shí)施例中,服務(wù)端向客戶端返回?cái)?shù)據(jù)標(biāo)識(shí)信息后,就釋放用于傳輸客戶端發(fā)送的調(diào)用請(qǐng)求的數(shù)據(jù)流占用的資源而不是一直保持,釋放的資源可以用于為其他客戶端提供服務(wù),因此,可以提高服務(wù)端資源利用率,提高服務(wù)端吞吐量。
[0115]一個(gè)實(shí)施例中,如圖9所示,所述服務(wù)端還包括應(yīng)用層設(shè)備,所述處理模塊82包括第一單元821、第二單元822以及第三單元823。
[0116]第一單元821用于所述接入層設(shè)備在自身開啟推送模式時(shí),分配所述數(shù)據(jù)標(biāo)識(shí)信息,并向所述應(yīng)用層設(shè)備轉(zhuǎn)發(fā)所述調(diào)用請(qǐng)求。
[0117]其中,wjas和mtop可以選擇開啟或關(guān)閉推送(push)模式,推送模式也可以稱為異步模式。
[0118]wjas和mtop之間的通道可以是spdy通道或者h(yuǎn)ttp通道,參見圖4,以http通道為例。
[0119]wjas發(fā)送給mtop的api調(diào)用請(qǐng)求中包含所述接入層設(shè)備wjas的標(biāo)識(shí)信息和所述數(shù)據(jù)標(biāo)識(shí)信息。
[0120]標(biāo)識(shí)信息具體可以包括接入層設(shè)備wjas的IP地址、協(xié)議號(hào)和端口號(hào)。
[0121]數(shù)據(jù)標(biāo)識(shí)信息與api調(diào)用請(qǐng)求對(duì)應(yīng),每個(gè)api調(diào)用請(qǐng)求可以唯一對(duì)應(yīng)一個(gè)數(shù)據(jù)標(biāo)識(shí)信息,該api調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)結(jié)果也同樣對(duì)應(yīng)該數(shù)據(jù)標(biāo)識(shí)信息。
[0122]第二單元822用于所述接入層設(shè)備接收所述應(yīng)用層設(shè)備發(fā)送的用于標(biāo)識(shí)所述應(yīng)用層設(shè)備已接受異步調(diào)用請(qǐng)求的信息,所述用于標(biāo)識(shí)所述應(yīng)用層設(shè)備已接受異步調(diào)用請(qǐng)求的信息是所述應(yīng)用層設(shè)備接收到所述調(diào)用請(qǐng)求并確定所述接入層設(shè)備和所述應(yīng)用層設(shè)備都已開啟推送模式后發(fā)送的。
[0123]具體地,mtop可以向wjas返回http的statscode為202,該編碼202表示已接受api調(diào)用請(qǐng)求。mtop接受api調(diào)用請(qǐng)求后可以進(jìn)行對(duì)api調(diào)用請(qǐng)求進(jìn)行異步調(diào)用。
[0124]另一方面,當(dāng)wjas和mtop中的至少一個(gè)沒有開啟push模式時(shí),可以執(zhí)行正常的http請(qǐng)求應(yīng)答模式。
[0125]正常的http請(qǐng)求應(yīng)答模式包括http輪循和spdy調(diào)用,參見圖5、6,分別示出了http輪循、spdy調(diào)用過程示意圖。
[0126]第三單元823用于所述接入層設(shè)備接收到所述用于標(biāo)識(shí)所述應(yīng)用層設(shè)備已接受異步調(diào)用請(qǐng)求的信息后,向所述客戶端發(fā)送與所述調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)信息,并釋放所述數(shù)據(jù)流占用的資源。
[0127]獲取模塊83用于對(duì)所述調(diào)用請(qǐng)求進(jìn)行處理,獲取結(jié)果數(shù)據(jù),并將所述結(jié)果數(shù)據(jù)通過所述通道推送給所述客戶端。
[0128]其中,服務(wù)端接收到調(diào)用請(qǐng)求后,可以從服務(wù)提供商獲取調(diào)用請(qǐng)求對(duì)應(yīng)的服務(wù),例如,在購物時(shí),調(diào)用請(qǐng)求是獲取寶貝詳情的api請(qǐng)求,那么服務(wù)端可以獲取寶貝詳情的頁面作為結(jié)果數(shù)據(jù)返回給客戶端。
[0129]具體的,服務(wù)端在獲取結(jié)果數(shù)據(jù)后,采用主動(dòng)推送的方式將結(jié)果數(shù)據(jù)發(fā)送給客戶端。服務(wù)端在推送結(jié)果數(shù)據(jù)時(shí),還可以同時(shí)包含與調(diào)用請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)信息,客戶端通過該數(shù)據(jù)標(biāo)識(shí)信息可以查找到其請(qǐng)求的結(jié)果數(shù)據(jù)。
[0130]另一個(gè)實(shí)施例中,所述接入層設(shè)備轉(zhuǎn)發(fā)的所述調(diào)用請(qǐng)求中包含所述接入層設(shè)備的標(biāo)識(shí)信息和所述數(shù)據(jù)標(biāo)識(shí)信息,所述結(jié)果數(shù)據(jù)包括響應(yīng)所述調(diào)用請(qǐng)求的第一結(jié)果,所述獲取模塊83具體用于:
[0131]所述應(yīng)用層設(shè)備接收到所述調(diào)用請(qǐng)求后,根據(jù)所述調(diào)用請(qǐng)求進(jìn)行調(diào)用,獲取與所述數(shù)據(jù)標(biāo)識(shí)信息對(duì)應(yīng)的第一結(jié)果;
[0132]具體的,