亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Thrift框架的數(shù)據(jù)交換方案

        2015-05-04 07:48:28梁明炯
        科技創(chuàng)新與應用 2015年13期
        關鍵詞:數(shù)據(jù)交換

        梁明炯

        摘 要:在實際應用中,異構(gòu)系統(tǒng)之間經(jīng)常需要進行數(shù)據(jù)的交換。Facebook公司開發(fā)的Thrift框架通過強大的代碼生成引擎,可快速構(gòu)建數(shù)據(jù)交換接口。文章基于Thrift技術闡述異構(gòu)系統(tǒng)間的數(shù)據(jù)交換方案,從而實現(xiàn)跨語言跨平臺的數(shù)據(jù)傳輸。

        關鍵詞:Thrift框架;異構(gòu)系統(tǒng);數(shù)據(jù)交換

        前言

        系統(tǒng)間的數(shù)據(jù)交換方案是軟件構(gòu)建中的重要組成部分。數(shù)據(jù)交換的常用方式包括Web Service、消息中間件以及遠程過程調(diào)用(RPC,Remote Procedure Call)等。其中,Web Service和消息中間件方式是通過消息報文的形式直接或者間接地實現(xiàn)數(shù)據(jù)的交換。在此方式下,數(shù)據(jù)在傳輸前需封裝成特定格式的消息報文,而傳輸完成后又需對該消息報文進行解封裝以獲得實際數(shù)據(jù)。這在進行大量的數(shù)據(jù)傳輸時效率并不高。RPC方式通過本地客戶端的過程聲明來調(diào)用遠程服務端的方法實現(xiàn)數(shù)據(jù)的交換。面向?qū)ο蟮南到y(tǒng)構(gòu)建中,RPC方式的優(yōu)點是可將交換數(shù)據(jù)以對象的形式進行傳輸,因此效率更高。在實際中,進行數(shù)據(jù)傳輸?shù)南到y(tǒng)大多是異構(gòu)系統(tǒng),如何通過RPC方式構(gòu)建適合異構(gòu)系統(tǒng)間的數(shù)據(jù)交換方案是個重要問題。文章將基于開源的Thrift框架,闡述一種跨語言跨平臺的數(shù)據(jù)交換方案。

        1 Thrift框架

        Thrift軟件框架最初由Facebook開發(fā),2008年5月成為Apache子項目。它支持跨語言服務的開發(fā),通過功能強大的軟件堆棧和代碼生成引擎,可構(gòu)建基于C++、Java、Python、PHP、Ruby、Perl、C#、Cocoa、JavaScript等編程語言的客戶端和服務器端。

        Thrift實際上實現(xiàn)了RPC模式,通過代碼生成引擎將接口定義文件生成客戶端和服務器端代碼,從而實現(xiàn)通信系統(tǒng)間的跨語言支持。通過特定的描述語言定義好接口文件中的數(shù)據(jù)類型和服務接口,并以此作為輸入文件,編譯器則會生成RPC的客戶端和服務器端實現(xiàn)。另外,由生成的代碼負責RPC協(xié)議層和傳輸層的實現(xiàn)。因此,對于異構(gòu)系統(tǒng),用戶只需維護統(tǒng)一的接口文件,無需手動為特定的語言重新編寫該文件。

        用戶只需在Thrift接口文件中聲明自己的服務,這些服務經(jīng)過編譯后會生成相應語言的代碼文件,用戶只需實現(xiàn)這些服務。

        2 數(shù)據(jù)交換方案

        本節(jié)闡述基于Thrift框架的數(shù)據(jù)交換方案。以Java語言為例,通過定義數(shù)據(jù)交換的數(shù)據(jù)結(jié)構(gòu)以及接口方法,構(gòu)建服務端和客戶端服務代碼,從而實現(xiàn)數(shù)據(jù)交換功能。

        2.1 數(shù)據(jù)交換架構(gòu)

        進行數(shù)據(jù)交換的系統(tǒng)分為客戶端和服務器端。服務器端響應客戶端的請求??蛻舳藙t通過調(diào)用服務器端的方法向服務器端接收或者發(fā)送數(shù)據(jù)。客戶端和服務器端的數(shù)據(jù)結(jié)構(gòu)與接口是一致的,然后通過Thrift的特定代碼生成引擎編譯出不同的語言版本,從而實現(xiàn)跨語言跨平臺的調(diào)用。圖1描述了數(shù)據(jù)交換的框架圖。從圖可以看出,兩方系統(tǒng)通過Thrift自動生成的數(shù)據(jù)交換接口實現(xiàn)數(shù)據(jù)交換。

        圖1 數(shù)據(jù)交換的框架圖

        2.2 數(shù)據(jù)交換流程

        基于Thrift技術的數(shù)據(jù)交換流程主要分三步。首先要定義交換數(shù)據(jù)的格式;其次定義接收或者發(fā)送數(shù)據(jù)的接口;然后,通過Thrift代碼生成引擎為各系統(tǒng)生成數(shù)據(jù)接口的底層實現(xiàn)。最后,實現(xiàn)具體的數(shù)據(jù)交換的業(yè)務功能。定義數(shù)據(jù)格式和數(shù)據(jù)接口是通過thrift文件來描述的,在該文件定義數(shù)據(jù)的各項信息以及接口函數(shù)的原型。Thrift根據(jù)該文件會生成特點版本的數(shù)據(jù)接口實現(xiàn)。開發(fā)者只需關心數(shù)據(jù)交換的業(yè)務功能。

        2.3 數(shù)據(jù)交換實現(xiàn)

        本節(jié)將假設C系統(tǒng)(客戶端)向S系統(tǒng)(服務器端)傳輸一個包含姓名、性別、身份證號碼信息的報文來闡述實現(xiàn)方案。

        首先,為所傳輸?shù)膱笪亩x數(shù)據(jù)結(jié)構(gòu)格式以及接口調(diào)用方法,其定義文件如表1所示。該文件需定義結(jié)構(gòu)以及服務。在表1中,Message結(jié)構(gòu)包括ID、sex以及name這三項信息,而MessageStorage服務中定義了saveMessage方法。值得指出的是,這里定義的函數(shù)方法只需定義原型,其具體實現(xiàn)由開發(fā)者根據(jù)業(yè)務功能編寫。該文件以.thrift后綴名保存,如message.thrift。

        表1 Thrift的定義文件

        接下來需根據(jù)該文件通過Thrift代碼生成引擎生成數(shù)據(jù)交換接口代碼。本例生成Java版本。具體是運行thrift-r-gen java message.thrift 命令。由于message.thrift文件中有一個結(jié)構(gòu)體Message和一個服務MessageStorage,Thrift引擎會生成兩個java文件:Message.java和MessageStorage.java。

        然后,根據(jù)業(yè)務功能編寫代碼。在項目工程中需引入上述步驟生成的兩個java文件以及相應的lib包。這里,服務器端首先要實現(xiàn)Thrift定義文件中所定義的service,即MessageStorage方法。在本例的MessageStorage方法中,先打印接收到的報文中的姓名信息,然后再持久化保存,如表2所示。

        表2 Thrift服務器端核心代碼

        服務器端的流程如下:

        (1)創(chuàng)建模型類型(Handler);(2)基于Handler創(chuàng)建數(shù)據(jù)處理器(Processor);(3)創(chuàng)建數(shù)據(jù)傳輸方式(Transport);(4)創(chuàng)建數(shù)據(jù)傳輸協(xié)議(Protocol);(5)基于Processor、Transport和Protocol創(chuàng)建服務器模型(Server);(6)運行Server。

        其中,Transport定義數(shù)據(jù)傳輸方式,可以為TCP/IP傳輸、內(nèi)存共享或者文件共享等。如TFileTransport是文件(日志)傳輸類、THttpTransport采用Http傳輸協(xié)議進行數(shù)據(jù)傳輸、TSocket則用TCP Socket進行數(shù)據(jù)傳輸、TZlibTransport會壓縮后對數(shù)據(jù)進行傳輸,支持二進制或者XML。Protocol定義傳輸?shù)臄?shù)據(jù)格式,包括使用二進制格式的TBinaryProtocol、使用壓縮格式的TCompactProtocol、使用JSON格式的TJSONProtocol等。

        服務器端的核心代碼如表2所示。

        表3 Thrift客戶端核心代碼

        這里選擇TThreadPoolServer線程池服務模型,使用標準的阻塞式IO,預先創(chuàng)建一組線程處理請求。當有客戶端連接過來時,從線程池里分配可用的連接處理客戶端請求。常用的TServer子類還包括:

        TSimpleServer:簡單的單線程服務模型,常用于測試;TThreadedServer:多線程服務模型,使用阻塞式IO,為每個請求創(chuàng)建一個線程。

        TNonblockingServer:多線程服務模型,使用非阻塞式IO。

        如果服務需要處理大量更新,則主要選擇TThreadedServer和TNonblockingServer。TNonblockingServer能夠使用少量線程處理大量并發(fā)連接,但延遲較高;相比之下,TThreadedServer的延遲較低。實際中,TThreadedServer的吞吐量可能會比TNonblockingServer高,但它的CPU占用率也比TNonblockingServer高很多。

        客戶端通過調(diào)用服務端的方法傳輸定義好的Message對象。具體的步驟為:(1)創(chuàng)建數(shù)據(jù)傳輸方式(Transport);(2)創(chuàng)建數(shù)據(jù)傳輸協(xié)議(Protocol);(3)創(chuàng)建客戶模型(Client);(4)調(diào)用Client的相應方法。

        核心代碼見表3。

        3 結(jié)束語

        Thrift實現(xiàn)了異構(gòu)系統(tǒng)間的數(shù)據(jù)傳輸方案。并且數(shù)據(jù)結(jié)構(gòu)定義簡單,適合快速生成系統(tǒng)的數(shù)據(jù)交換接口。此外,Thrift結(jié)合了功能強大的軟件堆棧,可方便地生成不同開發(fā)語言的RPC客戶端和服務器端,能統(tǒng)一構(gòu)建底層框架。因此,Thrift可以有效地解決跨平臺的數(shù)據(jù)傳輸問題,確保異構(gòu)系統(tǒng)間穩(wěn)定高效地進行數(shù)據(jù)交換。

        參考文獻

        [1]蘇沫涵.一種基于XML的通用數(shù)據(jù)交換機制[J].科技創(chuàng)新與應用,2011(21).

        [2]暢育超.基于XML的數(shù)據(jù)交換技術[J].電腦編程技巧與維護,2014(17).

        [3]楊閣.電子政務平臺數(shù)據(jù)交換系統(tǒng)研究[J].企業(yè)科技與發(fā)展:下半月,2014(5).

        猜你喜歡
        數(shù)據(jù)交換
        信息系統(tǒng)數(shù)據(jù)共享與交換方法設計構(gòu)想
        中國新通信(2017年3期)2017-03-11 08:20:09
        XBRL在財務報表網(wǎng)絡數(shù)據(jù)交換中的應用
        中職學校教學資源管理系統(tǒng)的設計與實現(xiàn)
        基于XML的輸變電設備狀態(tài)數(shù)據(jù)交換模型研究
        計算機時代(2016年9期)2016-10-28 09:25:43
        數(shù)據(jù)抽取及交換工具的設計與實現(xiàn)
        軟件(2015年8期)2015-12-25 08:05:30
        基于XML的數(shù)據(jù)交換技術研究
        基于SQL語句的通用數(shù)據(jù)交換方法研究與應用
        軟件導刊(2015年5期)2015-06-01 13:14:00
        跨平臺移動應用中間件的設計與實現(xiàn)
        國際物流客戶服務平臺架構(gòu)與實現(xiàn)
        軟件導刊(2015年1期)2015-03-02 12:23:01
        国产精品一区二区久久精品| 亚洲国产精品久久精品| 国产乱人激情h在线观看| 国产山东熟女48嗷嗷叫| a午夜国产一级黄片| 精品亚洲国产亚洲国产| 日本三级片在线观看| 亚洲色大成网站www久久九| 亚洲自拍另类欧美综合| 国内精品嫩模av私拍在线观看| 文字幕精品一区二区三区老狼| 亚洲精品无amm毛片| 亚洲婷婷五月综合狠狠爱| 天天操夜夜操| 91久国产在线观看| 麻婆视频在线免费观看| 尤物在线精品视频| 欧美性猛交xxxx乱大交蜜桃| 精品人妻免费看一区二区三区| 婷婷丁香开心五月综合| 热久久美女精品天天吊色| 亚洲AV无码一区二区三区人| 亲少妇摸少妇和少妇啪啪| 亚洲一区二区三区中文字幕网| 性无码免费一区二区三区在线| 久久成年片色大黄全免费网站| 亚洲av影片一区二区三区 | 中文字幕午夜精品一区二区三区 | 亚洲欧美一区二区三区在线| 男人的天堂在线无码视频| 在线亚洲精品免费视频| 日韩欧美在线综合网另类| 国产网红主播无码精品| 日韩中文字幕中文有码| 综合人妻久久一区二区精品| 国产亚洲精品一区二区无| 久久久天堂国产精品女人| 亚洲欧洲AV综合色无码| 国产一区二区免费在线视频| 久久久久久亚洲av无码蜜芽| 波多野结衣在线播放一区|