999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NIO的高速數據傳輸技術的實現

2016-08-04 02:06:51郭金磊張玉生胡愛蘭
網絡安全與數據管理 2016年13期
關鍵詞:引擎

郭金磊,張玉生,胡愛蘭

(華北計算機系統工程研究所,北京 100083)

?

基于NIO的高速數據傳輸技術的實現

郭金磊,張玉生,胡愛蘭

(華北計算機系統工程研究所,北京 100083)

摘要:隨著大數據技術的發展,多線程高并發等技術已經越來越成為大數據處理中的關鍵技術。非阻塞式I/O(new I/O,NIO)技術作為一種分布式高并發技術被廣泛應用,但對于大數據量的通信往往需要很多的時間才能完成。Google提出的Protocol Buffer序列化壓縮技術相對于傳統序列化效率高、時間短、使用簡單。文章將傳統NIO技術與Protocol Buffer相結合,在分布式系統不同節點通信中,極大地降低了分布式系統的網絡負載,大大節省了數據傳輸時間。

關鍵詞:NIO(new I/O) ;Protocol Buffer ;分布式系統;序列化

引用格式:郭金磊,張玉生,胡愛蘭. 基于NIO的高速數據傳輸技術的實現[J].微型機與應用,2016,35(13):19-20,24.

0引言

隨著大數據技術的發展,多線程高并發等技術已經越來越成為大數據處理中的關鍵技術,同一個節點中的不同線程和不同節點的線程間的通信越來越密切。Java NIO作為一種分布式數據傳輸技術在多線程高并發[1]的實際應用中扮演著至關重要的角色。為減小網絡負載,加速分布式系統中網絡通信,迫切需要一種高效率壓縮序列化技術。

1研究現狀

Java NIO的核心是Channel、Buffer 和 Selector。NIO基于通道(Channel)和緩沖區(Buffer)進行操作,通道先在選擇器注冊讀寫事件,讀數據時,當選擇器發現該通道準備讀完成,通道直接將數據從底層網卡隊列讀進緩沖區。寫數據時,當選擇器發現該通道準備寫完成,通道將數據寫進緩沖區。通道可以實現在緩沖區中對每個字節類似于指針對數據操作,可以來回移動讀取數據。選擇器可以用一個單獨的線程同時監聽管理多個通道。

傳統的NIO[2]都是使用Java自帶的序列化形式對傳輸數據和對象進行序列化壓縮。這種情況下,數據壓縮率[3]較低,需要傳輸的對象數據流很大時,尤其在分布式系統中,容易造成網絡擁堵。本文在傳統NIO技術的基礎上結合Google Protocol Buffer技術實現了數據對象的高效序列化壓縮傳輸。

2Protocol Buffer優點

Google Protocol Buffer(簡稱Protobuf)是Google公司提出的混合語言數據標準,用于 RPC 系統和持續數據存儲系統。同時也可用于通信協議、數據存儲等領域的語言無關、平臺無關、可擴展的序列化結構數據格式。目前提供了C++、Java、Python三種語言的API。Protobuf 具有很多優點:實現簡單,壓縮速度快,傳輸速度快,存儲空間小。用Protobuf與Java自帶的序列化工具實現的對象壓縮相比,存儲空間大了一個數量級,時間上快了一個數量級,尤其是可以自動生成遠程過程調用協議(Remote Procedure Call Protocol, RPC)的數據結構,特別是service業務邏輯,是一種很好地實現RPC的自動化工具。Protobuf 編譯器會將.proto文件編譯生成對應的數據結構以對Protobuf數據進行序列化、反序列化操作。

以最簡單的一個對象Person(僅有三個屬性:姓名、年齡和住址)為例,用Java自帶的序列化工具與Protobuf來對比。使用Java自帶的序列化工具,經過壓縮后的數據是181 B,如圖1所示。

圖1 Java自帶壓縮Person大小

而當采用Protobuf時,如圖2所示,占用空間僅有20 B,而且實現簡單,壓縮速度快,傳輸速度快,反序列化也快。可以很好地實現分布式高并發式的數據傳輸,大大降低了網絡傳輸負載。

圖2 Protobuf壓縮Person對象大小圖

ProtobufSerializable序列化/ns16160反序列化/ns211002數據大小/B20180

壓縮person對象時間和大小對比如表1所示。

3簡單實例實現

本文根據Protobuf的優點在NIO的基礎上實現了一個分布式的高并發、高傳輸效率的項目。系統采用多個一級引擎來處理原始日志數據,讀取后進行分段,分段后采用Hash映射到多個二級引擎(可以任意臺Hash映射)中進行數據融合,融合后的數據再匯總到一臺服務器上,客戶端可以通過遠程Web訪問這個服務器上的數據。其中一級引擎與二級引擎之間的數據傳輸就是使用的NIO與Protobuf相結合的技術,如圖3所示。

圖3 分布式NIO結構示意圖

客戶端使用Protobuf對數據序列化壓縮發送。

ListrpcList = new ArrayList ();

//實例化發送數據

for(HTTPAPPHost hah : list){

RPCHah rpchah = RPCHah.newBuilder()

.setCellid(hah.getCellid()).setAppType(hah

.getAppType()).build();

rpcList.add(rpchah);

//將原始list轉化為RPCList完成

RPCReq req = RPCReq.newBuilder()

.addAllHahs(rpcList).build();

//序列化壓縮完成

if(e2info.getDataQueue().offer(req.toByteArray())){

//調用網絡模塊,將數據發送到二級引擎

NIOClientRunner.sendData(e2info); }

//發送數據

服務器端采用NIO接收數據并使用Protobuf反序列化及處理。

Selector selector=Selector.open();

//開啟選擇器

ServerSocketChannel ssc=

ServerSocketChannel.open();

ssc.configureBlocking(false);

//配置為非阻塞模式

ssc.register(selector, SelectionKey.OP_WRITE);

while(isRunning){

selector.select(1);

//阻塞延時1ns

Set set=selector.selectedKeys();

Iterator it=set.iterator();

while(it.hasNext()){

SelectionKey skey=it.next();

if(skey.isReadable()){

//選擇讀數據通道

SocketChannel sct = skey.channel();

ByteBuffer tempBuf=

ByteBuffer.allocate(1);

String dataStr="";

while(!dataStr.endsWith(" ")){

sct.read(tempBuf);

dataStr +=new String (tempBuf.array());

tempBuf.clear();}

//防止粘包

byte[] data= dataStr.array();

recoverData2List.handlerData(engine1Info, data); }

下面服務器端把data數據反序列化。

List pcList=request.getHahsList();

for(RPCHah rpchah : rpcList){

HTTPAPPHost hah = new HTTPAPPHost();

hah.setCellid(rpchah.getCellid());

hah.setAppType(rpchah.getAppType());

Global.getDataQueue().put(hah);

//將反序列化的對象存儲到dataQueue中,反序列化完成

}

表2是一級引擎向二級引擎發送17 980條實例HTTPAPPHost對象數據與Java自帶序列化的數據傳輸這些數據量的效率對比。

本文在傳統NIO的基礎上結合了Proto Buffer,使得壓

縮后的數據量大致是原來的1/9,壓縮時間上大致是原來

表2 實際環境序列化rpcList對象時間和大小對比

的1/8,反序列化時間大致是原來的1/40,極大地提高了傳輸的效率,降低了網絡負載[4]。

4結論

本文在傳統NIO的基礎上應用Protobuf后,能夠使得分布式高并發下性能極大提升,網絡負載大大減小,優化性能明顯,尤其在以Map Reduce[5]為核心技術的大數據處理應用中性能更為突出。

參考文獻

[1] GOETZ B,PEIERLS T,BIOCH J,等.Java并發編程實戰[M].童云蘭,譯.北京:機械工業出版社,2012.

[2] 李林鋒.Netty權威指南[M].北京:電子工業出版社,2014.

[3] 程超,楊風召.基于Java非阻塞I/O開發高性能網絡應用程序[J].電子工程師,2006,32(10):71-73.

[4] 徐忠勝,沈蘇彬.一種云計算資源的多目標優化的調度方法[J].微型機與應用, 2015, 34(13):17-20.

[5] 元二菊,郭進偉,皮建勇,等.基于MapReduce的序列規則在推薦系統中的研究[J].微型機與應用,2014,33(6):68-70,73.

中圖分類號:TP311

文獻標識碼:A

DOI:10.19358/j.issn.1674- 7720.2016.13.006

(收稿日期:2016-03-03)

作者簡介:

郭金磊(1987-),男,碩士研究生,主要研究方向:計算機網絡與大數據處理。

張玉生(1990-),男,碩士研究生,主要研究方向:實時數據庫處理。

胡愛蘭(1973-),女,碩士,高級工程師,主研究方向:通信,信息處理及計算機應用。

The implementation of high speed data transmission technology based on NIO

Guo Jinlei, Zhang Yusheng, Hu Ailan

(North China Computer System Engineering Research Institute, Beijing 100083, China)

Abstract:With the development of big data technology, multi-threaded high concurrency distributed system has become the main trend in large data processing. NIO as a distributed high concurrency technology is widely used, but for the data of large scale communication often requires a lot of time to complete. The Protocol Buffer serialization compression technology proposed by Google compared with traditional methods has the advantages of more high-efficiency, faster and easier to use. The article combines traditional NIO and Protocol Buffer to implement communications in distributed environment, which reduces the load of network and saves the data transfer time greatly.

Key words:NIO; Protocol Buffer; distributed system; serialization

猜你喜歡
引擎
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
江陰市“三個創新”打造危化品安全監管新引擎
新海珠,新引擎,新活力!
消費繼續發揮經濟增長第一引擎作用
消費導刊(2018年8期)2018-05-25 13:19:23
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
休閑垂釣 傳統漁業新引擎
中國水產(2017年2期)2017-02-25 07:56:29
信息化,“盛京”加速的新引擎
中國衛生(2015年4期)2015-11-08 11:16:18
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 亚洲综合激情另类专区| 久久久久88色偷偷| 日韩第九页| 免费国产好深啊好涨好硬视频| 国产无遮挡裸体免费视频| 99一级毛片| 久久这里只有精品国产99| 欧美啪啪网| a级毛片免费网站| 欧美在线天堂| 91偷拍一区| 国产成人综合欧美精品久久 | 狠狠色香婷婷久久亚洲精品| 成人福利在线看| 亚洲天堂视频网站| 91麻豆国产在线| 91日本在线观看亚洲精品| 久无码久无码av无码| 青青草欧美| 亚洲色图欧美在线| 911亚洲精品| 欧美性久久久久| 亚洲日韩在线满18点击进入| www.av男人.com| 免费在线国产一区二区三区精品| 亚洲成AV人手机在线观看网站| 久久人人爽人人爽人人片aV东京热| 亚洲精品天堂自在久久77| 国产99热| 午夜国产不卡在线观看视频| 亚洲天堂久久| 国产乱子伦无码精品小说| 亚洲人成人伊人成综合网无码| 亚洲欧洲天堂色AV| 国产在线视频福利资源站| 宅男噜噜噜66国产在线观看| 欧美日韩精品一区二区在线线| 亚洲中字无码AV电影在线观看| 亚洲第一极品精品无码| 老色鬼久久亚洲AV综合| 在线亚洲精品自拍| 韩日无码在线不卡| 孕妇高潮太爽了在线观看免费| 无码国产伊人| 美女被狂躁www在线观看| 中文字幕在线看| 色视频久久| 国产成人精品一区二区秒拍1o| julia中文字幕久久亚洲| 亚洲一区二区三区国产精华液| 免费高清a毛片| 亚洲V日韩V无码一区二区| 国产精品香蕉| 91综合色区亚洲熟妇p| 国产欧美在线观看一区| 国产中文一区a级毛片视频| av午夜福利一片免费看| 国产chinese男男gay视频网| 一本色道久久88| 国产在线自乱拍播放| 久久综合丝袜长腿丝袜| 免费看一级毛片波多结衣| 国产欧美高清| 亚洲一区毛片| 午夜福利亚洲精品| 秋霞国产在线| 中文字幕在线观看日本| www成人国产在线观看网站| 中文国产成人精品久久| 狠狠干欧美| 精品国产自| 国产哺乳奶水91在线播放| 一级香蕉人体视频| 不卡无码h在线观看| 全免费a级毛片免费看不卡| 国产精品自在自线免费观看| 国产精品19p| 国产a v无码专区亚洲av| www.国产福利| 色综合热无码热国产| 国产白丝av| a毛片免费看|