?

基于Netty的信息發布通信框架設計與實現

2021-10-15 03:33朱廣福
數字通信世界 2021年9期
關鍵詞:服務器端指令框架

朱廣福

(重慶城市管理職業學院信息中心,重慶 401331)

0 引言

信息發布系統架構通常由服務器端和播放終端構成,信息發布的流程是將服務器上的制作完成的節目信息按播放計劃通過網絡發送給播放終端,最終播放終端完成信息的展示。信息發布指信息從發送端到接收端的傳遞過程,這個過程有三個基本要素:發送端、接收端和傳輸渠道。從數據的傳輸方式看有兩種方式:單向傳輸和雙向傳輸。單向的傳輸是發送端單純的將信息發送出去,對接收端是否收到和是否有反饋不關心。雙向的傳輸是接收端將信息的反饋回傳給接受端,雙方存在信息交互和互動機制。在信息發布系統中,服務器與播放終端間會存在互動的情況,所以采用基于Netty技術的雙向的傳播方式是符合實際情況需要的技術。

1 Netty框架模型分析

Netty是基于異步事件驅動的一種網絡編程模型框架,該模型具有高擴展性、高性能和非阻塞異步傳輸性等特點。Netty框架是基于異步I/O復用模型,在讀寫過程中當發起請求后會立即返回,而不會阻塞業務調用線程。如果想要獲取請求的響應結果,也不需要業務調用線程使用阻塞的方式來等待,而是當響應結果出來時使用IO線程異步通知業務的方式,所以在整個的請求與響應過程中業務線程不會由于阻塞而等待,從而提升了I/O 線程的運行效率??傮w而言,Netty的高性能、異步通信和穩定性能適合作為信息發布系統中服務器與終端間的數據通信框架。

2 通信模型的設計

基于Netty技術的信息發布系統的數據通信模型由五個模塊組成,模塊包括終端注冊與授權模塊、日志記錄模塊、數據接收模塊、業務處理模塊、數據發送模塊。數據通信模型結構如圖1所示。

圖1 基于Netty的數據通信模型結構圖

終端注冊與授權模塊是服務器接收客戶端的注冊信息并完成對播放終端的授權,只有注冊并獲取授權信息的終端才能與服務器建立連接、接收數據和交換消息。日志記錄模塊只在服務器端存在,是為了在系統出現故障或者發生異常時,可以方便定位問題以快速解決問題。數據接收模塊的主要功能是適配終端與服務器間的協議并由多線程方式處理來自不同請求終端的數據請求,并且驗證數據的合法性和有效性,通過驗證后把合法的數據交給業務處理模塊進行業務操作。業務處理模塊是根據終端與服務器間約定的協議規則來實現對接收到的數據進行解析和處理,最終實現具體的業務邏輯處理功能。數據發送模塊主要功能是根據終端與服務器間約定的協議規則將需要發送的業務數據進行封裝和編碼并完成發送業務數據。

服務器端與播放終端的通信流程為如下:

(1)播放終端將本機機器編碼和注冊信息封裝后發送給服務器端完成注冊設備。

(2)服務器端接收注冊數據并驗證機器編碼,對于合法的播放終端授權并建立長連接(心跳機制),舍去非法終端的注冊請求數據。

(3)服務器按設備機器編碼向播放終端發送業務數據(指令數據)。

(4)播放終端接收到服務器發送的業務數據,按指令完成操作后將結果回傳給服務器。

(5)服務器端接收到終端回傳的結果數據后操作數據庫完成持久化操作。

3 通信模型的實現

根據上面的通信模型的設計,在具體實現基于Netty技術的模型中要解決很多技術問題,現對通信模型中的通信協議、心跳機制和斷線重連等關鍵技術細節進行實現。

(1)通信協議的實現。通信框架中設計了基于JSON格式的通信協議,通信雙方按照這個通讀協議即可完成會話。

基于JSON語法的通信協議格式如下:

{devCode:'',type:1,data:''}

上面協議中devCode為播放終端的機器編碼;type是數據類型(1:心跳數據;2:注冊數據;3:業務指令;4:結果返回);data為通信的數據。當數據類型為業務指令(type:3)時數據為業務指令數據,其格式如下:

{cmmdName:'',cmmdType:'MAdapter',cmmdArgs:[''] }

其中cmmdName為指令名稱;cmmdType為指令類型;cmmdArgs為指令參數。

(2)心跳機制的實現。在服務器端和播放終端之間通信時為了防止頻繁建立連接對系統資源的浪費而采用長連接機制。在此通信模型中并沒有使用Netty的IdleStateHandler和Ping-Pong機制實現心跳機制,而是服務器端定時執行心跳指令來查詢播放終端的狀態的機制實現心跳。心跳指令代碼如下:

{type:1,devCode:'1001',

data:{cmmdName:'HeartBeat',cmmdType:'MAdapter',cmmdArgs:[]}}

(3)斷線重連的實現。在信息發布系統在運行過程中,因為網絡通信過程中的復雜情況故網絡狀態是不可預知的,播放終端要能及時對網絡的變化作出反應,為了不影響系統的運行,當播放終端因為系統異?;蚓W絡故障原因和服務器失去連接后,播放終端要能及時檢測到與服務器的斷開狀態并立刻發起重新連接,實現快速與服務器端重新建立連接。在此通信模型中對Netty中對ChannelFutureListener下 的operationComplete()方法重寫實現監聽,當Channel關閉時播放終端進行重連,當終端與服務器間的重連失敗后系統則等待10秒之后重新發起連接,直到終端能連接上服務器為止。具體實現代碼如下:

4 結束語

根據信息發布系統中服務器端與播放終端間實現交互的需求,本文設計了基于netty技術的數據通信框架,并對通信協議、心跳機制和斷線重連等技術進行實現,此框架具有負載均衡、高實時性和可擴展性的特點。目前,基于Netty通信框架的信息發布系統已部署到多個應用項目中,滿足信息發布系統對信息下發、遠程終端控制、用戶交互等的功能,同時用戶體驗和服務器性能也很不錯。實踐證明,該通信框架的設計是一種可參考的通信設計方案。

猜你喜歡
服務器端指令框架
有機框架材料的后合成交換
框架
Linux環境下基于Socket的數據傳輸軟件設計
《單一形狀固定循環指令G90車外圓仿真》教案設計
基于Qt的安全即時通訊軟件服務器端設計
基于Qt的網絡聊天軟件服務器端設計
關于原點對稱的不規則Gabor框架的構造
基于C/S架構的嵌入式監控組態外設擴展機制研究與應用
中斷與跳轉操作對指令串的影響
我國在WYO框架下面對的貿易保護現狀及應對
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合