国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RPC框架的輔料配盤信息管理系統(tǒng)*

2018-05-09 01:28段青娜王文才
微處理機 2018年2期
關鍵詞:序列化服務端調用

段青娜,王文才,翟 潔,程 倩

(紅云紅河煙草(集團)有限責任公司,昆明 650231)

1 引 言

在企業(yè)信息化飛速發(fā)展的今天,計算機技術、網(wǎng)絡通信技術、信息安全技術的不斷成熟,讓更多企業(yè)在新的時期以新的運營模式獲利;人們也越來越認識到信息化技術在傳統(tǒng)企業(yè)向信息化現(xiàn)代企業(yè)轉型過程中所起的重要作用。在現(xiàn)代企業(yè)管理中,信息系統(tǒng)是不可或缺的一部分。信息系統(tǒng)實現(xiàn)了企業(yè)重要數(shù)據(jù)的高效、精確的管理,讓數(shù)據(jù)可以安全存儲、合理使用、范圍共享,進而改善了企業(yè)的管理方式,增強了管理流程的合理性,提高了效率。高效的企業(yè)管理能讓一個企業(yè)在市場競爭中具有強大的競爭力。要建設企業(yè)的信息化,就必須使用信息系統(tǒng)來管理企業(yè)。采用數(shù)據(jù)分析、流程控制等模型,用數(shù)據(jù)為企業(yè)的決策提供依據(jù),使企業(yè)的設計、生產、銷售、管理更加合理有效,在市場競爭的洪流中贏得一席之地,讓企業(yè)走的更高更遠[1-2]。

根據(jù)業(yè)務需求,對涉及的業(yè)務、數(shù)據(jù)、數(shù)據(jù)流向進行分類歸納,并基于RPC框架,制定了一套與上下游系統(tǒng)對接的通信架構,從而提高共享業(yè)務數(shù)據(jù)的準確性、完整性、時效性。通信框架的信息交換主要是在上位機、電氣設備、上游系統(tǒng)之間進行的,開發(fā)一套高效的數(shù)據(jù)交換機制,可保證生產監(jiān)控、調度的時效性[3]。

2 RPC的基礎理論

2.1 RPC概念

在工業(yè)軟件中,為了保證在監(jiān)控、調度方面的時效性,常使用C/S結構來開發(fā)信息系統(tǒng)。而RPC(Remote Procedure Call,遠程過程調用)框架是采用了C/S結構的軟件中常用的一種通訊框架[4],它的結構原理圖如圖1所示。

圖1 RPC框架結構原理示意圖

RPC是基于Socket,并對Socket底層進行一次封裝的框架。它允許程序調用另一個地址空間(通常位于共享網(wǎng)絡中的另一臺機器上)的過程或函數(shù),而不用軟件開發(fā)者顯示這個遠程調用的編碼細節(jié)。即軟件開發(fā)者無論是調用本地的還是非本地的命令,從根本上來說,所調用執(zhí)行的代碼是完全一致的。

在傳統(tǒng)軟件的開發(fā)過程中,程序是在開發(fā)者的本地環(huán)境下編譯生成的,并且只能運行在本地環(huán)境,計算機與程序形成一種本地調用關系。但在網(wǎng)絡技術飛速發(fā)展的今天,這種傳統(tǒng)的軟件結構是無法滿足當前的實際需求的。

2.2 RPC封裝

傳統(tǒng)的本地調用模式無法充分利用同節(jié)點的其他主機的計算性能和資源,比如CPU、GPU、內存等,也無法讓代碼在不同的環(huán)境中進行共享,這使得主機資源不能得到充分使用。

針對該情況,運用RPC模式,就可以讓同局域網(wǎng)內的不同服務器之間共享處理環(huán)境和內存,隨之將應用程序分布在多臺服務器上。程序就像運行在一臺單一的服務器上一樣,可以通過方便的代碼實現(xiàn)遠程調用代碼來實現(xiàn)代碼共享,提高硬件設備的資源利用率,也可以將大量的計算處理放在性能較強的服務器上運行,從而降低前端對硬件設備的要求程度。

2.3 RPC的功能特點

RPC作為普遍的C/S開發(fā)方法,具有高效、可靠等特點。但RPC方法的基本原則是忽略通訊的集體形式,轉而通過最簡單的方式來調用程序模塊,讓開發(fā)者能夠專心實現(xiàn)業(yè)務邏輯,而不用去關心通訊過程。這就意味著RPC的傳輸數(shù)據(jù)包無法具有通用性。與Socket通訊方式相比,在傳輸相同的有效數(shù)據(jù)的情況下,RPC占用的網(wǎng)絡帶寬更大。

RPC模式從本質上來說也是一種C/S結構的通訊模式,比Socket通訊要高級一層。當RPC的通訊服務建立完成之后,客戶端通過TCP/IP協(xié)議傳輸調用參數(shù),并傳輸RPC的程序號到相應的服務器上,客戶端將持續(xù)等待服務端的應答,或直至超時。服務端接收到客戶端的調用請求后,會根據(jù)客戶端傳輸過來的RPC服務號來決定具體調用那一段函數(shù),并執(zhí)行相應的代碼,將執(zhí)行結果返回給客戶端。當服務端的RPC調用結束后,會發(fā)送相應的信號給客戶端,客戶端才會繼續(xù)運行。這樣一次完整的RPC調用就算結束了。在整個RPC調用過程中,通過程序號來確定具體調用的函數(shù)段,通過設備號來確定具體的執(zhí)行設備,通過版本號來確定調用不同版本的代碼段。

3 系統(tǒng)的層次結構

(1)傳輸協(xié)議(Protocol)

傳輸協(xié)議中各層都為上一層提供業(yè)務功能。為了實現(xiàn)數(shù)據(jù)在不同層次間進行傳遞,要對數(shù)據(jù)進行打包。通過向數(shù)據(jù)中加入包頭和包尾的方式,來將一段數(shù)據(jù)打包成一個規(guī)范的數(shù)據(jù)流,這個過程就叫做數(shù)據(jù)封裝。用戶的所有數(shù)據(jù)都要經過多次封裝,才能在網(wǎng)絡上進行傳輸。傳輸協(xié)議的語法構成如下:

其中,各變量的類型及含義如表1所示。

表1 傳輸協(xié)議變量說明

客戶端根據(jù)需要,調用服務端中的函數(shù)或過程,客戶端將數(shù)據(jù)打包,服務端接收到數(shù)據(jù)包后拆包,根據(jù)兩個標志位來判斷客戶端調用的函數(shù),并根據(jù)數(shù)據(jù)包內容來讀取客戶端所傳變量或數(shù)據(jù)。

(2)數(shù)據(jù)序列化層(Serialize)

序列化是將數(shù)據(jù)結構或對象轉換成二進制串的過程,也就是編碼的過程。為了數(shù)據(jù)在網(wǎng)絡中方便傳輸,將數(shù)據(jù)包序列化為二進制數(shù)據(jù),能夠有效減少丟包和重包的發(fā)生。實現(xiàn)數(shù)據(jù)序列化的語句如下:

序列化數(shù)據(jù)封裝的語句如下:

現(xiàn)今序列化的方案越來越多,各個方案都有其優(yōu)點和缺點,它們在設計之初也都各有自己獨特的應用場景。從RPC的角度來看,最感興趣的有以下三點:

通用性:比如是否能支持Map等復雜的數(shù)據(jù)結構[5-6];

性能:包括時間復雜度和空間復雜度,由于RPC框架將會被企業(yè)內幾乎所有服務使用,如果序列化上能節(jié)約一點時間,對整個企業(yè)的收益都將非??捎^,同理如果在序列化上能節(jié)約一點內存,網(wǎng)絡帶寬也能節(jié)省許多;

可擴展性:對互聯(lián)網(wǎng)公司而言,業(yè)務變化很快,如果序列化協(xié)議具有良好的可擴展性,支持自動增加新的業(yè)務字段,刪除老的字段,而不影響老的服務,將會大大有利于系統(tǒng)的健壯性。

(3)傳輸層(Transport)

消息數(shù)據(jù)結構被序列化為二進制串后,下一步就要進行網(wǎng)絡通信,Client和Server之間通過Socket長連接傳輸數(shù)據(jù),并為每個客戶端開啟線程,實現(xiàn)NIO傳輸。數(shù)據(jù)傳輸語句如下:

(4)鏈接層(Linking)

鏈接層負責建立服務端與數(shù)據(jù)庫以及UA服務器之間的鏈接。鏈接數(shù)據(jù)庫的語句如下:

鏈接UAServer的語句如下:

(5)遠程調用層

遠程調用層主要是處理和響應客戶端發(fā)送的請求,以及對數(shù)據(jù)的整合與處理。

4 系統(tǒng)的架構設計

4.1 系統(tǒng)結構

系統(tǒng)結構及連接情況如圖2所示。

圖2 系統(tǒng)結構圖

由圖可知,客戶端Client與服務端Server之間通過Socket長連接進行通訊,并伴有心跳檢測,客戶端下線后,服務端會自動斷開與客戶端的鏈接。

服務端與數(shù)據(jù)庫之間使用SqlConnection進行連接。服務端向數(shù)據(jù)庫發(fā)送Sql語句,數(shù)據(jù)庫執(zhí)行完畢后返回SqlDataReader給服務端。其具體通訊過程原理如圖3所示。

圖3 Server-DataBase之間通訊示意圖

系統(tǒng)中的Server與OPC_Server之間的通訊是指服務端需要與下位機的電氣設備通過PLC進行通訊,所以服務端需要通過OPC服務器進行數(shù)據(jù)中轉。服務端與OPC服務器之間采用OpcUA方式連接[7]。配置完成的UAServer如圖4所示。

圖4 配置好的UAServer

4.2 接口設計

RPC_Server與 UAServer之間通過 Profinet協(xié)議傳輸數(shù)據(jù),由于PLC內存地址有限,就要求接口通訊內容要精簡高效。

與編程語言類似,PLC中的數(shù)據(jù)類型也有String,bool,int,byte 之分,便于數(shù)據(jù)交互兼容。需要注意的是,PLC中的變量要設好讀寫權限,避免同一變量有雙重“寫權限”,不允許上位機與電氣設備對同一個變量寫入數(shù)據(jù),這樣能有效避免臟數(shù)據(jù)。PLC變量讀寫方式如圖5所示。

圖5 PLC變量讀寫方式

一般情況下企業(yè)都會同時擁有多個信息系統(tǒng),如上游MES系統(tǒng)下達任務,輔料配盤信息系統(tǒng)接收到任務后負責執(zhí)行。對于信息系統(tǒng)間的數(shù)據(jù)交互,可以搭建數(shù)據(jù)交互平臺,以中間數(shù)據(jù)庫的形式做數(shù)據(jù)交互。各個業(yè)務系統(tǒng)需要從其它業(yè)務系統(tǒng)抽取數(shù)據(jù),一般都是經過匯總的數(shù)據(jù)。為統(tǒng)一管理,要求各業(yè)務系統(tǒng)把能夠給其它系統(tǒng)提供的數(shù)據(jù)統(tǒng)一上傳至中間庫,由各業(yè)務子系統(tǒng)從中間庫下載所需的數(shù)據(jù)[8]。

中間數(shù)據(jù)庫的作用是為數(shù)據(jù)提供臨時存儲功能。在數(shù)據(jù)進行交互或采集的過程中,可將數(shù)據(jù)存儲至中間數(shù)據(jù)庫臨時存儲,并且能在轉存過程中提供數(shù)據(jù)一致性檢驗功能,進而保證了數(shù)據(jù)的準確性。中間數(shù)據(jù)庫還能實現(xiàn)全局數(shù)據(jù)共享,對不同的數(shù)據(jù)庫鏈接,以及復雜的數(shù)據(jù)進行查詢、檢索和管理。

5 結束語

輔卷煙輔料在配盤過程中,物料與信息的同步至關重要,為實現(xiàn)數(shù)據(jù)的完整性與時效性,對基于RPC框架的輔料配盤信息管理系統(tǒng)做了介紹和設計。根據(jù)業(yè)務需求,基于RPC框架制定了一套與上下游系統(tǒng)對接的通信架構,實現(xiàn)了數(shù)據(jù)在不同系統(tǒng)間與電氣設備進行數(shù)據(jù)交互。該設計可滿足各業(yè)務的信息共享需求,有助于消除信息孤島。

參考文獻:

[1]徐建明,呂漢泰,張貴軍,等.基于Web的工業(yè)機器人3D虛擬動態(tài)監(jiān)控系統(tǒng)[J].高技術通訊,2017,27(3):254-260.XU Jianming,LV Hantai,ZHANG Guijun,et al.3D virtual dynamic monitoring system for industrial robot based on Web[J].Chinese High Technology Letters,2017,27(3):254-260.

[2]梁明炯.基于Thrift框架的數(shù)據(jù)交換方案[J].科技創(chuàng)新與應用,2015(13):66-67.LIANG Mingjiong.Data exchange scheme based on Thrift framework[J].Technology Innovation and Application,2015(13):66-67.

[3]胡波,譚良.HBase架構中RPC客戶端的通信性能優(yōu)化[J].計算機科學,2016,43(4):97-101.HUBo,TANLiang.Communication performance optimization of RPC client in HBase architecture[J].Computer Science,2016,43(4):97-101.

[4]查駿.基于NIO的遠程調用框架的設計與實現(xiàn)[D].上海:復旦大學,2012.ZHA Jun.Design and implementation of remote call framework based on NIO[D].Shanghai:Fudan University,2012.

[5]蔡明章.基于OPC DA的OPC UA服務器研究[D].昆明:云南大學,2014.CAI Mingzhang.Research on OPC UA server based on OPC DA[D].Kunming:Yunnan University,2014.

[6]張艷軍,王劍,葉曉平,等.基于Netty框架的高性能RPC通信系統(tǒng)的設計與實現(xiàn)[J].工業(yè)控制計算機,2016,29(5):11-12.ZHANG Yanjun,WANG Jian,YE Xiaoping,et al.Design and implementation of high performance RPC communication system based on Netty framework[J].Industrial Control Computer,2016,29(5):11-12.

[7]葉文全,高衛(wèi)斌.基于AMF-RPC框架的.NET for flash網(wǎng)絡應用程序[J].無線互聯(lián)科技,2012(7):23-24.YE Wenquan,GAO Weibin..NET for flash network applications based on AMF-RPC framework[J].Wireless Internet Technology,2012(7):23-24.

[8]李勝軍.基于Web的數(shù)據(jù)庫技術探究[J].電子測試,2017(22).LI Shengjun.Research on database technology based on Web[J].Electronic Test,2017(22).

猜你喜歡
序列化服務端調用
基于FlatBuffers的機車通信數(shù)據(jù)序列化方法應用研究
如何建構序列化閱讀教學
核電項目物項調用管理的應用研究
新時期《移動Web服務端開發(fā)》課程教學改革的研究
基于系統(tǒng)調用的惡意軟件檢測技術研究
Java 反序列化漏洞研究
作文訓練微格化、序列化初探
利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
摸清黑客套路防范木馬侵入
C++語言中函數(shù)參數(shù)傳遞方式剖析