《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于NIO的高速數據傳輸技術的實現
基于NIO的高速數據傳輸技術的實現
2016年微型機與應用第13期
郭金磊,張玉生,胡愛蘭
(華北計算機系統工程研究所,北京 100083)
摘要: 隨著大數據技術的發展,多線程高并發等技術已經越來越成為大數據處理中的關鍵技術。非阻塞式I/O(new I/O,NIO)技術作為一種分布式高并發技術被廣泛應用,但對于大數據量的通信往往需要很多的時間才能完成。Google提出的Protocol Buffer序列化壓縮技術相對于傳統序列化效率高、時間短、使用簡單。文章將傳統NIO技術與Protocol Buffer相結合,在分布式系統不同節點通信中,極大地降低了分布式系統的網絡負載,大大節省了數據傳輸時間。
Abstract:
Key words :

  郭金磊,張玉生,胡愛蘭

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

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

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

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所示?! ?/p>

001.jpg

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

  

002.jpg

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

004.jpg

3簡單實例實現

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

003.jpg

  圖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<SelectionKey> 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("\\r\\n")){

  sct.read(tempBuf);

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

  tempBuf.clear();}//防止粘包

  byte[] data= dataStr.array();

  recoverData2List.handlerData(engine1Info, data); }

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

  List<RPCHah> pcList=request.getHahsList();

  for(RPCHah rpchah : rpcList){

  HTTPAPPHost hah = new HTTPAPPHost();

  hah.setCellid(rpchah.getCellid());

  hah.setAppType(rpchah.getAppType());

  Global.getDataQueue().put(hah);//將反序列化的對象存儲到dataQueue中,反序列化完成

  }

005.jpg

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

  本文在傳統NIO的基礎上結合了Proto Buffer,使得壓縮后的數據量大致是原來的1/9,壓縮時間上大致是原來表2實際環境序列化rpcList對象

  時間和大小對比ProtobufSerializable序列化時間/ns7466 687反序列化時間/ns95141 083數據大小/B2 084 93918 707 213的1/8,反序列化時間大致是原來的1/40,極大地提高了傳輸的效率,降低了網絡負載[4]。

4結論

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

  參考文獻

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

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

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

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

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


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          日韩视频在线一区二区| 欧美日产一区二区三区在线观看| 欧美精品v日韩精品v国产精品| 一区二区三区视频观看| 免费看亚洲片| 欧美激情免费在线| 欧美在线视频全部完| 蜜臀va亚洲va欧美va天堂| 国产精品视频1区| 欧美制服第一页| 国产精品久在线观看| 欧美大片网址| 一本综合精品| 久久视频国产精品免费视频在线| 欧美日韩日日骚| 玖玖综合伊人| 国产欧美一区二区三区在线看蜜臀| 99国产欧美久久久精品| 新67194成人永久网站| 国产精品视频免费| 久久九九热免费视频| 久久久久久久999| 欧美大片免费| 国产精自产拍久久久久久蜜| 你懂的视频欧美| 伊人精品在线| 欧美激情视频一区二区三区在线播放| 国产精品久线观看视频| 久久国产免费| 国产精品揄拍500视频| 久久国产精品久久久久久| 另类国产ts人妖高潮视频| 日韩一区二区久久| 91久久精品www人人做人人爽| 伊大人香蕉综合8在线视| 亚洲第一页在线| 久久亚洲色图| 欧美久久一区| 久久精品国产欧美亚洲人人爽| 欧美精品1区2区3区| 久久久久一本一区二区青青蜜月| 亚洲经典视频在线观看| 国产日韩欧美一区在线| 国产精品99久久久久久宅男| 久久精品亚洲精品国产欧美kt∨| 国产欧美在线| 午夜精品美女自拍福到在线| 亚洲国产日韩欧美在线图片| 欧美激情第8页| 免费日韩成人| 国产精品私房写真福利视频| 亚洲国产日韩欧美一区二区三区| 欧美精品一区二区三| 免费观看30秒视频久久| 亚洲一区二区三区乱码aⅴ| 亚洲特色特黄| 亚洲免费观看在线观看| 美腿丝袜亚洲色图| 欧美日韩在线三区| 亚洲片在线观看| 欧美mv日韩mv亚洲| 国产欧美日韩精品在线| 一区二区三区在线观看欧美| 欧美一区亚洲二区| 欧美一区二区久久久| 韩国精品主播一区二区在线观看| 欧美电影在线免费观看网站| 一区二区三区免费网站| 欧美在线地址| 欧美日韩成人精品| 激情视频一区二区三区| 国产一区二区中文字幕免费看| 一区二区三区精品视频在线观看| 亚洲午夜日本在线观看| 欧美成人免费一级人片100| 久久先锋资源| 亚洲第一视频网站| 一区二区日韩欧美| 午夜日韩在线观看| 黑人中文字幕一区二区三区| 久久久久国产精品麻豆ai换脸| 欧美在线视频免费播放| 日韩亚洲国产精品| 好男人免费精品视频| 亚洲欧洲一二三| 在线观看精品| 久久五月婷婷丁香社区| 久久精品中文字幕一区二区三区| 亚洲综合国产| 黄色在线一区| 欧美韩日一区二区| 欧美日韩成人在线视频| 国产一级精品aaaaa看| 亚洲午夜精品福利| 国产欧美一区二区精品婷婷| 久久综合九色综合网站| 亚洲福利国产精品| 亚洲午夜视频在线观看| 一区二区三区|亚洲午夜| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美久久一区| 国产模特精品视频久久久久| 在线一区亚洲| 欧美三级第一页| 亚洲精选一区| 裸体女人亚洲精品一区| 在线午夜精品| 欧美日韩精品国产| 国产亚洲午夜高清国产拍精品| 在线视频欧美日韩精品| 亚洲一区二区视频在线观看| 亚洲二区精品| 欧美视频一区二区在线观看| 亚洲大黄网站| 亚洲一区二区三区成人在线视频精品| 激情综合色综合久久| 免费成人av| 一区二区三区国产在线| 老色批av在线精品| 亚洲视频一二三| 欧美日韩视频第一区| 国产精品高清网站| 猛干欧美女孩| 一区二区久久| 好看的日韩av电影| 在线精品亚洲一区二区| 99精品热视频只有精品10| 在线精品亚洲一区二区| 欧美日韩麻豆| 国产精品日韩在线播放| 久久琪琪电影院| 欧美视频一区在线观看| 国产一区 二区 三区一级| 欧美在线观看一区二区| 国产乱肥老妇国产一区二| 狠狠入ady亚洲精品经典电影| 欧美日韩在线一区二区三区| 亚洲一区制服诱惑| 亚洲一区中文| 在线观看亚洲a| 99视频国产精品免费观看| 国产欧美日韩高清| 午夜精品久久一牛影视| 欧美色区777第一页| 亚洲一区二区三区在线看| 欧美国产日韩一区二区在线观看| 亚洲免费网站| 欧美一区二区在线免费播放| 极品尤物av久久免费看| 亚洲国产va精品久久久不卡综合| 亚洲视频图片小说| 免费亚洲一区二区| 国产精品免费视频xxxx| 国产人成精品一区二区三| 国精品一区二区三区| 欧美少妇一区| 国产日韩一区二区三区在线播放| 亚洲小少妇裸体bbw| 亚洲片国产一区一级在线观看| 亚洲人成在线播放网站岛国| 欧美成人在线影院| 欧美高清视频www夜色资源网| 欧美日韩亚洲一区三区| 狠狠色丁香久久综合频道| 亚洲一区二区三区免费在线观看| 老司机凹凸av亚洲导航| 国产欧美日韩视频| 翔田千里一区二区| 国产精品影院在线观看| 亚洲电影av| 亚洲激情网站免费观看| 欧美三级午夜理伦三级中文幕| 一区二区欧美日韩视频| 一区二区三区鲁丝不卡| 亚洲图中文字幕| 免费欧美日韩国产三级电影| 欧美日韩免费区域视频在线观看| 久久久久国内| 欧美一区二区三区免费视频| 国产精品videosex极品| 欧美成人中文字幕| 一区二区视频免费在线观看| 亚洲午夜视频| 香蕉久久一区二区不卡无毒影院| 欧美日韩一区二区三区在线看| 亚洲精品小视频| 国产乱人伦精品一区二区| 亚洲特色特黄| 欧美日韩亚洲在线| 亚洲人成网站在线观看播放| 亚洲一区欧美| 久久疯狂做爰流白浆xx| 国产精品狼人久久影院观看方式| 国产一区二区精品在线观看| 91久久中文字幕| 久久久久网站| 国产精品日日摸夜夜添夜夜av| 国产日产高清欧美一区二区三区| 国产精品亚洲综合一区在线观看| 欧美一区三区三区高中清蜜桃| 亚洲人体大胆视频| 国产精品久久久久久户外露出| 国产欧美日韩一区二区三区| 一区二区三区视频在线看| 美女任你摸久久| 亚洲黄色天堂| 国产一区二区剧情av在线| 久久综合色天天久久综合图片| 欧美一区二区精品在线| 久久久久一本一区二区青青蜜月| 麻豆91精品91久久久的内涵| 久久国产精品一区二区| 亚洲天堂成人| 99re6这里只有精品视频在线观看| 欧美日韩一区高清| 亚洲国产精品毛片| 久久av一区二区三区漫画| 亚洲欧美日韩另类精品一区二区三区| 亚洲一区二区少妇| 日韩一二三在线视频播| 国产日韩欧美在线播放不卡| 久久免费黄色| 日韩视频一区二区三区| 国产精品99久久久久久久vr| 亚洲黄色一区二区三区| 欧美成人资源| 亚洲色在线视频| 亚洲高清一二三区| 欧美久久久久久久| 日韩视频欧美视频| 亚洲视频第一页| 欧美大片免费观看在线观看网站推荐| 国产女主播一区二区三区| 欧美成ee人免费视频| 欧美精品在线极品| 国产乱人伦精品一区二区| 欧美日韩一区二区免费在线观看| 亚洲福利视频在线| 欧美破处大片在线视频| 欧美精品v日韩精品v国产精品| 国产一区二区精品在线观看| 亚洲女人小视频在线观看| 免费观看成人| 久久亚洲色图| 99视频热这里只有精品免费| 久久亚洲精品伦理| 日韩视频中文| 欧美伦理在线观看| 久久在线精品| 欧美精品手机在线| 国产情人综合久久777777| 欧美激情 亚洲a∨综合| 亚洲神马久久| 亚洲精品日韩综合观看成人91| 欧美国产日韩一区二区在线观看| 久久精品二区三区| 久久久久久高潮国产精品视| 欧美国产日韩一区| 日韩视频免费观看高清在线视频| 麻豆精品在线视频| 在线电影欧美日韩一区二区私密| 亚洲日本黄色| 欧美亚洲一区二区三区| 亚洲一级二级| 欧美一区视频在线| 激情伊人五月天久久综合| 欧美日本中文字幕| 国产欧美日韩综合一区在线播放| 免费观看成人www动漫视频| 国产精品久久国产三级国电话系列| 欧美性猛交xxxx乱大交退制版| 日韩午夜在线视频| 欧美88av| 欧美一区二区三区播放老司机| 狠狠久久五月精品中文字幕| 欧美精品高清视频| 国产精品乱子乱xxxx| 国产精品揄拍500视频| 亚洲精品综合久久中文字幕| 一区精品在线| 欧美激情免费观看| 欧美日韩一区二区在线播放| 国产婷婷色一区二区三区四区| 欧美.日韩.国产.一区.二区| 一区二区在线不卡| 久久综合伊人77777蜜臀| 久久夜色精品亚洲噜噜国产mv| 欧美电影免费观看高清完整版| 欧美日韩爆操| 欧美剧在线免费观看网站| 欧美一区二区免费| 极品尤物av久久免费看| 亚洲韩国青草视频| 久久精品国产69国产精品亚洲| 亚洲精品一区二区三区婷婷月| 欧美视频在线观看视频极品| 亚洲激情在线视频| 黄色一区二区三区| 韩国久久久久| 国产精品福利av| 欧美久久久久中文字幕| 亚洲激情精品| 国产综合色一区二区三区| 欧美第一黄色网| 亚洲欧美日韩一区二区在线| 亚洲欧洲视频在线| 国产精品久久久久久久7电影| 久久精品国产999大香线蕉| 欧美日韩理论| 免费在线看成人av| 国产精品一区二区三区免费观看| 欧美视频二区36p| 老鸭窝毛片一区二区三区| 国产精品久久久久永久免费观看| 亚洲女同性videos| 国产有码在线一区二区视频| 香蕉久久国产| 亚洲国产影院| 亚洲一区二区三区四区五区午夜| 国产精品天天摸av网| 久久精品一区二区三区中文字幕| 国产精品一卡| 亚洲国产精品美女| 狠狠色伊人亚洲综合网站色| 久久www成人_看片免费不卡| 久久久国产午夜精品| 国产精品一区二区三区久久久| 久久久久青草大香线综合精品|