《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于Vert.x的實時Web監控系統
基于Vert.x的實時Web監控系統
2015年微型機與應用第12期
呂海東
(大連理工大學 城市學院,遼寧 大連 116600)
摘要: 創新性地使用最新的Vert.x框架,利用其異步、非阻塞、實時性、高并發的工作模式,對現有的工業過程監控系統進行全面改造,極大提升了系統的響應速度,實時性得到顯著提高,完全滿足大量客戶端并發的實時請求。
Abstract:
Key words :

  摘  要: 創新性地使用最新的Vert.x框架,利用其異步、非阻塞、實時性、高并發的工作模式,對現有的工業過程監控系統進行全面改造,極大提升了系統的響應速度,實時性得到顯著提高,完全滿足大量客戶端并發的實時請求。

  關鍵詞: Vert.x;過程監控;PLC;數據推送

0 引言

  工業生產監控系統的Web化[1]已成為標準,客戶端只使用瀏覽器即可實現對監控數據的實時顯示,不需要安裝各種監控組件,簡化了監控系統維護。實現監控數據的實時傳輸和顯示技術也在不斷地出現,從傳統HTTP請求/響應模式,到AJAX的Comet及HTML5的WebSocket,采用數據推送技術,使得Web監控系統的實時性得到極大提高。然而監控服務器在面對大量客戶連接的并發請求時,實時性難以滿足。無論JavaEE,還是NET都如此,它們的多線程工作模式是根源所在。為解決此問題,Vert.x框架[2-3]應運而生,它采用全新工作模式,特別適合開發實時性要求極高的系統。

  Vert.x是用于下一代異步、可伸縮、并發應用的框架,輕量級的高性能JVM應用平臺,適合開發各種移動及企業應用。它徹底解決了業界遭遇C10K問題,即當并發連接超過一萬以上時,傳統技術會引發暫停。以Tomcat為例,它在超過100個并發長請求就堵塞,而Vert.x可支持超10萬個并發請求。

  本文采用Vert.x對現有的供熱監控系統進行改造,對監控服務器端和客戶端進行重構。在服務器端使用Vert.x的Web服務器取代現有Tomcat7,采用Vert.x TCP讀取西門子PLC300的監控數據。用戶端采用Vert.x的Event Bus Bridge技術,實時接收服務器端監控數據,改造后的監控系統的性能和響應速度比原有系統有顯著的提高。

1 Vert.x框架概述

  Vert.x核心采用與Node.js相同的事件驅動的異步工作模式,使用單線程的事件循環機制實現高并發的請求處理,而不像傳統的服務器采用多線程的模式。

  Vert.x的核心組件是Verticle,運行在Vert.x實例中。Vert.x啟動后,根據服務器CPU的內核數,自動創建對應的Vert.x實例,并發運行Verticle。

  Vert.x采用事件驅動的異步編程模式,通過觸發事件以及注冊事件處理器完成所有編程任務。Verticle之間不能直接調用,只能發送和接收事件實現協作。

  Vert.x的核心是事件總線,Verticle在事件總線發送和接收事件。事件總線是分布式的,能連接服務器和客戶端。事件總線支持點對點和發布-訂閱模式的事件傳輸,監控系統中服務器向所有連接的客戶端發送監控數據就使用發布訂閱模式,使得所有客戶端瀏覽器都能實時接收到監控數據。

2 實時監控系統設計與實現

  大連柳樹供熱公司監控系統現場采用西門子PLC S7-300[4],通過屏蔽雙絞線連接到中心機房的核心交換機上,中心監控主機CPU采用志強8核服務器,可并發運行8個Vert.x實例,能支持十幾萬個并發請求。頁面采用最新的Bootstrap模版技術[5],自動適應不同尺寸的屏幕顯示,包括手機、平板等。

  2.1 讀取PLC監控數據TCP編程

  西門子S7-300采用TCP FETCH WRITE通信方式[6],該模式下通過TCP協議的Socket,主機可與PLC進行數據交換。

  Vert.x內置TCP Client方法,如下是TCP客戶端讀取PLC數據的代碼:

  var vertx=require(′vertx′);//獲得Vert.x運行實例

  var eb=require(′vertx/event_bus′)//獲得Event Bus對象

  var client=vertx.createNetClient();//創建TCP客戶端

  client.reconnectAttempts(1000);//設置連接嘗試次數

  client.reconnectInterval(500);//設置嘗試間隔時間

  //連接PLC Socket端口,并定義回調函數

  client.connect(config.port,config.ip,function(err,socket){//定義接收到PLC數據的事件處理器

  socket.dataHandler(function(buffer){

  var data=JSON.parse(buffer);

  //將接收的數據發布到Evnet Bus上

  eb.publish("rtdata.in.receive",{info:data},function(result){});

  //使用定時器,每間隔0.5 s發送請求數據指令到PLC

  var timer=vertx.setPeriodic(500,function(timerID){sock.write("datain");});

  }});

  客戶端定時發送數據指令,PLC數據到達后,Socket上的事件監聽器工作,從回調函數中取得監控數據,并轉換為JSON格式,使用總線方法publish發布事件。總線上監聽的Web客戶端都能同步接收監控數據。Vert.x采用推模式實現數據傳輸,由Vert.x服務器主動發送數據,不需客戶端請求,節省了網絡帶寬,提高了傳輸速度,滿足了監控系統實時性。監控系統的總體架構如圖1所示。

001.jpg

  在Vert.x服務器中,可啟動多個TCP客戶端Verticle,實現多路監測數據的并發讀取,如下代碼展示主服務器依次啟動Http Web Server和TCP Client監控Verticle等實例。

  //獲得Vert.x實例容器

  var container=require("vertx/container");

  //啟動Web服務器

  container.deployVerticle("HttpServer.js");

  //啟動PLC TCP客戶端

  container.deployVerticle("TCPClient.js",{port:2201,ip:192.168.1.101});

  2.2 監控Web服務器的編程

  系統采用Vert.x的服務器模塊web-server~2.0,實現功能強大的Web服務器,并使用異步模式接收客戶端瀏覽器的HTTP請求,支持客戶高并發的HTTP連接請求,示意代碼如下。

  var container=require("vertx/container");

  container.deployModule("io.vertx~mod-web-server~2.0.0-final",{port:80,host:"localhost",

  bridge:true,

  inbound_permitted:[

  {address:′rtdata.in.receive′},

  {address:′rtdata.out.receive′}

  ]);

  Vert.x通過deployModule載入Web模塊,Web模塊自動將目錄/web作為站點發布目錄,在/web目錄中存儲站點的頁面文件。

  代碼中bridge:true表示將服務器端的事件總線延伸到Web客戶端,實現服務器和客戶端的數據傳輸。每個Verticle都可以在Event Bus注冊事件處理器,以此實現數據的接收和發送。

  2.3 監控客戶端編程

  客戶端使用普通的HTML即可,不需要動態頁面。為實現與Vert.x服務器的Event Bus通信,客戶端頁面需要引入Vert.x的Event Bus Bridge的庫文件vertxbus-2.1.js。

  監控數據顯示使用<div>,使用Bootstrap框架布局,將<div>懸浮在圖片指定位置。監控客戶端頁面的數據接收和顯示代碼如下:

  $(document).ready(function(){

  var eb=new vertx.EventBus(′localhost/eventbus′);

  eb.onopen=function(){

  eb.registerHandler("rtdata.in.receive",function(args){var data=args.data;

  $("#rt1010").html(data);});

  };});

  代碼中關鍵是取得Vert.x的Event Bus對象,通過事件總線提供的vertx.EventBus,使用Javascript創建一個實例即可。如果與服務端的Event Bus連接成功,則eb.onopen回調函數工作。在此方法內,通過Event Bus的registerHandler對指定的地址進行監聽,當有此地址的事件event到達時,定義的回調函數function(args)開始運行,參數args為事件中包含的JSON數據,解析出JSON數據,使用jQuery的函數html()將數據顯示在指定的  <div>元素內,實現監控數據的實時顯示。實時監控系統監控界面如圖2所示。

002.jpg

  3 結論

  Vert.x具有的實時通信、全新的異步響應式工作模式和分布式Event Bus等特性,使其必將在實時系統開發中得到廣泛應用。與Node.js相比,Vert.x以其性能壓倒性的絕對優勢,必將推動實時Web的飛速發展,進而引起Web領域顛覆性的革命,徹底淘汰以AJAX為主的Web2.0,引領新的Web發展趨勢。

參考文獻

  [1] 李玉珠,吳敏,徐福倉.基于Web的煉焦實時監視系統設計與實現[J].自動化與儀表,2009(4):1-4.

  [2] PARVIAINEN T.Real-time Web application development using Vert.x 2.0[M]. Birmingham-Mumbai: Packt Publishing,2013.

  [3] Vert.x[EB/OL]. http://vertx.io/.

  [4] 潛立標,楊馬英,俞立,等.基于Web和S72300 PLC的遠程控制實驗室系統[J].浙江工業大學學報,2007(2):73-77.

  [5] 陳群.基于ASP.NET AJAX新型Web Scada的設計與實現[J].工業控制計算機,2009(6):42-44.

  [6] 趙佳寶,付羽.基于SVG的實時監控流程圖實現技術[J].工業控制計算機,2009(6):10-12.


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美大片在线观看一区二区| 久久精品国产69国产精品亚洲| 国产综合欧美在线看| 久久精品国产欧美亚洲人人爽| 亚洲欧美日韩高清| 国产精品久久久久久久第一福利| 亚洲一本大道在线| 亚洲免费视频在线观看| 国产一区二区三区在线观看免费视频 | 久久激情网站| 久久av一区二区| 亚洲黄色片网站| 国产精品老女人精品视频| 久久久精品国产免费观看同学| 亚洲丁香婷深爱综合| 亚洲欧洲精品一区二区三区不卡 | 欧美精品国产一区二区| 一区二区三区久久网| 亚洲一区二区精品| 狠狠色丁香婷婷综合影院| 欧美岛国激情| 亚洲欧美日韩另类| 亚洲国产成人在线| 99国产精品久久久| 国产一级一区二区| 欧美精品一区二区在线播放| 午夜精品久久久久久久久| 亚洲成人在线视频播放 | 久久福利毛片| 99在线热播精品免费| 国产一区二区日韩精品欧美精品 | 国产精品日韩在线观看| 你懂的一区二区| 亚洲女性喷水在线观看一区| 亚洲国产第一| 亚洲图片欧美午夜| 亚洲二区视频| 国产日韩精品视频一区| 欧美福利在线| 欧美在线一二三区| 亚洲精品字幕| 欧美一区二区三区久久精品茉莉花| 亚洲精品视频一区| 韩国欧美国产1区| 国产精品美女久久久久aⅴ国产馆| 欧美成人午夜77777| 久久精品国产精品| 亚洲一区二区免费视频| 亚洲激情在线观看视频免费| 亚洲欧美大片| 99综合视频| 亚洲娇小video精品| 国产一区二区三区在线免费观看 | 欧美一级视频精品观看| 99国产精品久久久久老师| 亚洲欧美日韩在线一区| 亚洲剧情一区二区| 亚洲国产一区二区精品专区| 国产亚洲福利社区一区| 国产精品成人一区二区| 欧美久久在线| 欧美成人高清| 久久视频一区二区| 久久精品视频导航| 性欧美1819性猛交| 亚洲主播在线观看| 中文亚洲字幕| 在线视频欧美一区| 99精品视频一区| 亚洲国产精品久久久久婷婷884 | 亚洲国产精品久久久| 一区二区三区自拍| 国产视频一区二区三区在线观看| 欧美色道久久88综合亚洲精品| 欧美成人精品影院| 男同欧美伦乱| 免费观看成人鲁鲁鲁鲁鲁视频 | 国产欧美va欧美不卡在线| 国产精品av久久久久久麻豆网| 欧美大片91| 免费观看日韩| 美女性感视频久久久| 久久久久国产精品厨房| 久久精品一区中文字幕| 欧美一区在线直播| 欧美在线999| 欧美在线免费观看亚洲| 欧美亚洲一区二区三区| 欧美一区二区啪啪| 久久xxxx| 久久躁日日躁aaaaxxxx| 久久女同精品一区二区| 久久视频在线视频| 蜜桃视频一区| 欧美激情亚洲自拍| 欧美精品一区二区三区蜜桃 | 欧美韩日视频| 欧美日韩网址| 国产精品久久久久国产精品日日| 国产精品美女| 国产女主播一区二区| 国产区在线观看成人精品| 国产欧美一区视频| 国产一区二区三区黄| 亚洲大片在线观看| 亚洲美女黄色| 亚洲一区二区三区乱码aⅴ| 亚洲欧美中文字幕| 亚洲高清久久久| 亚洲最快最全在线视频| 亚洲女女女同性video| 欧美在线播放高清精品| 久久午夜电影| 欧美久久在线| 国产精品私房写真福利视频| 国产亚洲亚洲| 亚洲激情网站| 亚洲手机在线| 久久激情综合| 一本色道久久综合亚洲二区三区| 亚洲欧美日韩精品久久久久| 久久久久国内| 欧美精品日本| 国产美女精品在线| 亚洲国产欧美日韩| 亚洲一区二区三区视频| 久久精品视频在线播放| 日韩午夜激情| 香蕉久久国产| 欧美成人亚洲成人日韩成人| 欧美少妇一区| 黄色成人片子| 亚洲视频自拍偷拍| 亚洲福利小视频| 亚洲一区二区在线观看视频| 久久久久九九视频| 欧美日韩在线不卡| 国产自产高清不卡| 日韩视频国产视频| 欧美专区18| 亚洲私人影吧| 老司机一区二区三区| 国产精品99免费看 | 亚洲美女网站| 欧美一区亚洲一区| 嫩模写真一区二区三区三州| 国产精品美女久久久久av超清 | 欧美在线视频一区二区| 欧美高清在线一区二区| 国产精品一级二级三级| 亚洲国产日韩一区| 欧美一区1区三区3区公司| 这里只有精品在线播放| 久久视频一区| 国产精品久久久久久久久搜平片| 在线成人欧美| 亚洲欧美在线一区二区| 一区二区三区产品免费精品久久75| 欧美在线视频网站| 欧美日韩视频在线一区二区| 一区二区三区在线高清| 亚洲中午字幕| 日韩视频一区二区在线观看| 久久久噜噜噜久噜久久| 欧美日韩免费看| 亚洲大胆视频| 久久激情五月婷婷| 欧美一级成年大片在线观看| 欧美日韩无遮挡| 亚洲电影免费在线观看| 午夜精品在线看| 午夜精品久久久久久99热软件| 欧美精品www在线观看| 狠狠色狠狠色综合日日tαg| 亚洲欧美中文在线视频| 亚洲专区在线| 欧美日韩精品在线| 亚洲人成精品久久久久| 最新69国产成人精品视频免费| 久久精品99| 国产欧美日韩一区| 亚洲少妇一区| 亚洲视频在线看| 欧美日韩一区二区三区| 亚洲精品中文字| 日韩亚洲视频| 欧美激情a∨在线视频播放| 影音先锋亚洲电影| 亚洲第一天堂无码专区| 久久久久成人精品免费播放动漫| 国产伦精品一区二区三区照片91| 在线中文字幕不卡| 亚洲一区尤物| 国产精品xxx在线观看www| 亚洲精品中文字幕在线| 99pao成人国产永久免费视频| 欧美成年人视频网站欧美| 在线精品一区| 亚洲每日更新| 欧美久久婷婷综合色|