APP下载

基于Netty的信息发布通信框架设计与实现

2021-10-15朱广福

数字通信世界 2021年9期
关键词:服务器端指令框架

朱广福

(重庆城市管理职业学院信息中心,重庆 401331)

0 引言

信息发布系统架构通常由服务器端和播放终端构成,信息发布的流程是将服务器上的制作完成的节目信息按播放计划通过网络发送给播放终端,最终播放终端完成信息的展示。信息发布指信息从发送端到接收端的传递过程,这个过程有三个基本要素:发送端、接收端和传输渠道。从数据的传输方式看有两种方式:单向传输和双向传输。单向的传输是发送端单纯的将信息发送出去,对接收端是否收到和是否有反馈不关心。双向的传输是接收端将信息的反馈回传给接受端,双方存在信息交互和互动机制。在信息发布系统中,服务器与播放终端间会存在互动的情况,所以采用基于Netty技术的双向的传播方式是符合实际情况需要的技术。

1 Netty框架模型分析

Netty是基于异步事件驱动的一种网络编程模型框架,该模型具有高扩展性、高性能和非阻塞异步传输性等特点。Netty框架是基于异步I/O复用模型,在读写过程中当发起请求后会立即返回,而不会阻塞业务调用线程。如果想要获取请求的响应结果,也不需要业务调用线程使用阻塞的方式来等待,而是当响应结果出来时使用IO线程异步通知业务的方式,所以在整个的请求与响应过程中业务线程不会由于阻塞而等待,从而提升了I/O 线程的运行效率。总体而言,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)断线重连的实现。在信息发布系统在运行过程中,因为网络通信过程中的复杂情况故网络状态是不可预知的,播放终端要能及时对网络的变化作出反应,为了不影响系统的运行,当播放终端因为系统异常或网络故障原因和服务器失去连接后,播放终端要能及时检测到与服务器的断开状态并立刻发起重新连接,实现快速与服务器端重新建立连接。在此通信模型中对Netty中对ChannelFutureListener下 的operationComplete()方法重写实现监听,当Channel关闭时播放终端进行重连,当终端与服务器间的重连失败后系统则等待10秒之后重新发起连接,直到终端能连接上服务器为止。具体实现代码如下:

4 结束语

根据信息发布系统中服务器端与播放终端间实现交互的需求,本文设计了基于netty技术的数据通信框架,并对通信协议、心跳机制和断线重连等技术进行实现,此框架具有负载均衡、高实时性和可扩展性的特点。目前,基于Netty通信框架的信息发布系统已部署到多个应用项目中,满足信息发布系统对信息下发、远程终端控制、用户交互等的功能,同时用户体验和服务器性能也很不错。实践证明,该通信框架的设计是一种可参考的通信设计方案。

猜你喜欢

服务器端指令框架
有机框架材料的后合成交换
框架
Linux环境下基于Socket的数据传输软件设计
《单一形状固定循环指令G90车外圆仿真》教案设计
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
关于原点对称的不规则Gabor框架的构造
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
中断与跳转操作对指令串的影响
我国在WYO框架下面对的贸易保护现状及应对