遠(yuǎn)程調(diào)用方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種遠(yuǎn)程調(diào)用方法及系統(tǒng)。
【背景技術(shù)】
[0002] 遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)是基于特定的計(jì)算機(jī)通信協(xié)議,把 本地的方法調(diào)用透明轉(zhuǎn)化為跨機(jī)器的調(diào)用,是分布式服務(wù)的基本功能。遠(yuǎn)程過程調(diào)用總是 由客戶端對服務(wù)器發(fā)出一個(gè)請求,服務(wù)端根據(jù)請求執(zhí)行結(jié)果并返回給客戶端,以下簡稱遠(yuǎn) 程調(diào)用。
[0003] 隨著電子商務(wù)網(wǎng)站(例如,淘寶網(wǎng)、天貓等)的用戶數(shù)量和訪問量的不斷增長,應(yīng) 用系統(tǒng)的數(shù)量和復(fù)雜程度也急劇增加。諸多前臺(tái)系統(tǒng)都需要使用一些公共的業(yè)務(wù)邏輯,這 些業(yè)務(wù)邏輯通常具有共性的東西,比如,獲取用戶信息或查詢寶貝詳情等,如果將這些業(yè)務(wù) 邏輯在各個(gè)系統(tǒng)內(nèi)部都實(shí)現(xiàn)一遍,則大大增加了開發(fā)成本和后期維護(hù)成本;最大的問題是 所有業(yè)務(wù)維護(hù)在一個(gè)系統(tǒng)中,會(huì)讓這個(gè)系統(tǒng)的復(fù)雜性無法控制,導(dǎo)致協(xié)同的開發(fā)效率極其 低下。這時(shí)需要按照業(yè)務(wù)領(lǐng)域模型,并遵循高內(nèi)聚低耦合的標(biāo)準(zhǔn)對業(yè)務(wù)系統(tǒng)進(jìn)行垂直拆分, 因此服務(wù)系統(tǒng)應(yīng)運(yùn)而生,遠(yuǎn)程服務(wù)系統(tǒng)的基本功能就是把本地調(diào)用轉(zhuǎn)換給遠(yuǎn)程調(diào)用,服務(wù) 系統(tǒng)是客戶端和服務(wù)端之間的接口;實(shí)現(xiàn)基于軟負(fù)載中心的面向服務(wù)架構(gòu)的核心功能:月艮 務(wù)的分發(fā)(服務(wù)端把提供的服務(wù)分發(fā)出去,讓需要此服務(wù)的客戶調(diào)用)和查找(服務(wù)消費(fèi) 者按照功能需求找到所需服務(wù)的服務(wù)端提供者列表);此外還需要為服務(wù)之前的調(diào)用關(guān)系 提供各種配套管理功能。
[0004] 現(xiàn)有的遠(yuǎn)程調(diào)用系統(tǒng)有:高速服務(wù)系統(tǒng)(High-Speed Service Framework,HSF)和 分布式服務(wù)系統(tǒng)(Dubbo)等,由于它們之間的交互方式?jīng)]有定義同一個(gè)規(guī)范,而且軟負(fù)載 中心各自一套,導(dǎo)致不互相兼容,基于兩者的服務(wù)無法互聯(lián)互通。
[0005] 遠(yuǎn)程調(diào)用系統(tǒng)(High Speed Framework, HSF)是淘寶網(wǎng)的分布式服務(wù)系統(tǒng),是淘 網(wǎng)寶服務(wù)化架構(gòu)中的基礎(chǔ)組件,是基于傳輸控制協(xié)議(Transmission Control Protocol, TCP)長連接的遠(yuǎn)程調(diào)用系統(tǒng),可以幫助各個(gè)應(yīng)用系統(tǒng)將那些相似的業(yè)務(wù)邏輯抽離出來,單 獨(dú)部署,而前臺(tái)系統(tǒng)在需要調(diào)用這些業(yè)務(wù)邏輯時(shí),只需要通過服務(wù)系統(tǒng)遠(yuǎn)程調(diào)用即可,大大 節(jié)約了前端系統(tǒng)的開發(fā)成本,也提高了系統(tǒng)的可維護(hù)性和可擴(kuò)展性。因此,通過遠(yuǎn)程調(diào)用系 統(tǒng)可以使得前臺(tái)系統(tǒng)的客戶端與應(yīng)用系統(tǒng)的服務(wù)端之間進(jìn)行數(shù)據(jù)的交互。
[0006] 為了減少服務(wù)系統(tǒng)對應(yīng)用系統(tǒng)的影響和改造成本,現(xiàn)有HSF框架協(xié)議和Dubbo框 架協(xié)議,在對數(shù)據(jù)的處理上都一致地選擇了自描述的序列化方式。例如,在針對請求信息的 處理上是將服務(wù)名、方法名、參數(shù)類型作為java對象的屬性值后,再通過He SSian(-種二 進(jìn)制序列化)序列化,針對與屬性有關(guān)系的數(shù)據(jù),例如作為java對象的屬性值:服務(wù)名,方 法名,參數(shù)類型等(HSF是基于HSF的請求,Dubbo是基于Dubbo的請求)數(shù)據(jù),進(jìn)行序列化。 從而,通過這種自描述性的序列化方式將java對象的屬性值轉(zhuǎn)化為二進(jìn)制流,但是由于二 進(jìn)制流的體積大,導(dǎo)致HSF框架協(xié)議很難識(shí)別Dubbo框架協(xié)議。
[0007] 基于Dubbo框架協(xié)議和HSF框架協(xié)議的客戶端的請求信息包括:協(xié)議標(biāo)識(shí)、版本 號、請求標(biāo)識(shí)、序列化方式、保留字節(jié)、請求ID、請求編碼、超時(shí)時(shí)間、服務(wù)名的長度、方法的 長度、參數(shù)類型的長度、參數(shù)的個(gè)數(shù)、方法名和參數(shù)類型、服務(wù)名和請求數(shù)據(jù)。這樣客戶端發(fā) 送請求時(shí)都需要攜帶與客戶端相關(guān)的屬性數(shù)據(jù),占用了網(wǎng)絡(luò)流量。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的目的是提供一種遠(yuǎn)程調(diào)用方法及系統(tǒng),以解決現(xiàn)有技術(shù)中不同客戶端的 服務(wù)系統(tǒng)之間不能兼容時(shí)數(shù)據(jù)傳輸?shù)膯栴},以及在請求信息和響應(yīng)信息的傳輸中,請求信 息的部分屬性數(shù)據(jù)和第一服務(wù)屬性數(shù)據(jù)占據(jù)了大量網(wǎng)絡(luò)流量。
[0009] 為實(shí)現(xiàn)上述目的,本申請?zhí)峁┝巳缦路桨福?br>[0010] 一種遠(yuǎn)程調(diào)用方法,所述方法包括:
[0011] 將服務(wù)端的第一服務(wù)屬性修改后生成第二服務(wù)屬性,所述第二服務(wù)屬性與所述第 一服務(wù)屬性對應(yīng),保存于第二服務(wù)屬性數(shù)據(jù)表,并獲取所述第二服務(wù)屬性數(shù)據(jù)表;
[0012] 根據(jù)遠(yuǎn)程調(diào)用請求信息中的第一服務(wù)名,在所述第二服務(wù)屬性數(shù)據(jù)表中查找得到 第二服務(wù)屬性;
[0013] 將所述第二服務(wù)屬性發(fā)送給所述服務(wù)端,以調(diào)用所述服務(wù)端中所述第二服務(wù)屬性 對應(yīng)的響應(yīng)信息,并將所述響應(yīng)信息發(fā)送給客戶端。
[0014] 一種遠(yuǎn)程調(diào)用系統(tǒng),所述系統(tǒng)包括:
[0015] 獲取單元,用于將服務(wù)端的第一服務(wù)屬性修改后生成第二服務(wù)屬性,所述第二服 務(wù)屬性與所述第一服務(wù)屬性對應(yīng),保存于第二服務(wù)屬性數(shù)據(jù)表,并獲取所述第二服務(wù)屬性 數(shù)據(jù)表;
[0016] 查找單元,用于根據(jù)遠(yuǎn)程調(diào)用請求信息中的第一服務(wù)名,在所述第二服務(wù)屬性數(shù) 據(jù)表中查找得到第二服務(wù)屬性;
[0017] 調(diào)用單元,用于將所述第二服務(wù)屬性發(fā)送給所述服務(wù)端,以調(diào)用所述服務(wù)端中所 述第二服務(wù)屬性對應(yīng)的響應(yīng)信息,并將所述響應(yīng)信息發(fā)送給客戶端。
[0018] 根據(jù)本申請?zhí)峁┑木唧w實(shí)施例,本申請公開了以下技術(shù)效果:
[0019] 本申請?zhí)峁┑倪h(yuǎn)程調(diào)用方法及遠(yuǎn)程調(diào)用系統(tǒng),通過改進(jìn)后的服務(wù)系統(tǒng)能兼容不同 客戶端的服務(wù)系統(tǒng),從而實(shí)現(xiàn)了不同服務(wù)系統(tǒng)之間的數(shù)據(jù)傳輸,通過對請求信息的部分屬 性數(shù)據(jù)用編碼代替和第一服務(wù)屬性數(shù)據(jù)修改,以及直接調(diào)用服務(wù)端中第二服務(wù)屬性對應(yīng)的 響應(yīng)數(shù)據(jù),從而節(jié)省了網(wǎng)絡(luò)流量,且實(shí)現(xiàn)多協(xié)議的互聯(lián)互通,為服務(wù)融合奠定基礎(chǔ)。
【附圖說明】
[0020] 圖1為本申請實(shí)施例一的遠(yuǎn)程調(diào)用方法流程圖;
[0021] 圖2為本申請實(shí)施例二的遠(yuǎn)程調(diào)用系統(tǒng)示意圖。
【具體實(shí)施方式】
[0022] 下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
[0023] 在本申請中,由于多種服務(wù)系統(tǒng)同時(shí)存在,但互不兼容,造成了資源浪費(fèi),效率低, 維護(hù)成本和開發(fā)成本都比較高。例如:HSF協(xié)議服務(wù)系統(tǒng),Dubbo協(xié)議服務(wù)系統(tǒng)同時(shí)存在,但 互不兼容,多種服務(wù)系統(tǒng)之間不能進(jìn)行數(shù)據(jù)的傳輸。為了方便不同客戶端均能跨平臺(tái)遠(yuǎn)程 調(diào)用,本申請?zhí)岢隽烁倪M(jìn)后的HSF系統(tǒng),同時(shí)兼容了現(xiàn)有的HSF系統(tǒng)的協(xié)議和Dubbo系統(tǒng)的 協(xié)議,通過改進(jìn)后的HSF系統(tǒng)可以實(shí)現(xiàn)多種服務(wù)系統(tǒng)之間進(jìn)行數(shù)據(jù)的傳輸,有利于面向服 務(wù)架構(gòu)的互聯(lián)互通。
[0024] 同時(shí),改進(jìn)后的HSF系統(tǒng),不僅實(shí)現(xiàn)了多種服務(wù)系統(tǒng)之間進(jìn)行數(shù)據(jù)的傳輸,而且實(shí) 現(xiàn)了客戶端的遠(yuǎn)程調(diào)用請求信息的部分屬性數(shù)據(jù)編碼和服務(wù)端的響應(yīng)信息的服務(wù)屬性數(shù) 據(jù)編碼后再傳輸,從而節(jié)省了網(wǎng)絡(luò)流量。
[0025] 首先介紹本申請的應(yīng)用場景,本申請遠(yuǎn)程調(diào)用方法是基于遠(yuǎn)程調(diào)用系統(tǒng)實(shí)現(xiàn)的, 尤其是改進(jìn)后的HSF系統(tǒng),在整個(gè)系統(tǒng)里包括應(yīng)用系統(tǒng)和遠(yuǎn)程調(diào)用系統(tǒng),應(yīng)用系統(tǒng)可以包 括前端應(yīng)用系統(tǒng)和后端服務(wù)系統(tǒng),前端應(yīng)用系統(tǒng)(即前臺(tái)系統(tǒng))例如搜索系統(tǒng)、商品詳情系 統(tǒng)、商鋪系統(tǒng)等等,對應(yīng)于搜索系統(tǒng)服務(wù)器、商品詳情服務(wù)器、商品系統(tǒng)服務(wù)器等等;后端服 務(wù)系統(tǒng)(即現(xiàn)有的應(yīng)用系統(tǒng)的服務(wù)端)包括商品中心、用戶中心、交易中心等等,對應(yīng)于商 品中心服務(wù)器、用戶中心服務(wù)器、交易中心服務(wù)器等等。例如:在淘寶網(wǎng)前端應(yīng)用系統(tǒng)