当前位置:智城范文网>范文大全 > 征文 > 基于Netty高并发物联网服务器研究与设计

基于Netty高并发物联网服务器研究与设计

时间:2022-03-16 08:22:46 来源:网友投稿

zoޛ)j馒ZH8׭/׭/_b^erZrGxXH.:&q~%#~1PyL<׭方案。

2 系统架构

系统由物联网终端、物联网并发服务器、物联网业务服务器、数据存储服务器、物联网应用服务器以及用户展示控制端(智能手机、微信、网页端)如图1。物联网终端模块数据主要为两类:一是定时从物联网采集数据,此数据通常由物联网终端发起。二是从用户或其它控制模块发送给物联网终端,此方式也是目前物联网实现相对困难的技术。物联网业务服务器主要解决,物联网并发服务器接收数据后续处理,防止数据进入并发服务器后因数据存储时间长而影响系统整体性能,数据分发到多台业务服务器中进行数据库操作。数据存储服务器分为硬件数据与内存数据库,硬盘数据库主要存储持久化的数据,内存数据库存储实时性要求高但不持久化存储的数据。物联网应用服务器为用户提供智能手机、微信小程序及网页端展示数据与控制。本系统数据通道级别分为三级:第一级数据直接通过物联网并发服务器转发两端(用户终端、物联网终端)的实时数据。第二级是两端通过内存型数据库进行转发的准实时数据。第三级是两端的数据通过硬盘数据保存与转发。

3 系统设计

2007年JDKl.7发布,升级后的NI02.0提供了异步文件通道和异步套接字通道的实现,文件处理能力有了进一步的提升。尽管NIO的吞吐量和可靠性相对于传统的BIO(同步阻塞式IO)有了质的飞跃,但其类库和API十分繁杂,使用起来非常困难。再加上粘包拆包、断线重连等可靠性处理的工作量和复杂度都非常大,因此直接使用NIO开发复杂度增大,使用开发周期及成本上升,给后期物联网服务器升级维护带来困难。为了简化NIO网络编程,一些开源项目发布供用户使用、学习、修改。其中Netty、Mina是两个常用框架。其中Mina由于目前不再持续更新,使用风险升高。Netty的功能、性能、健壮性、可定制和可扩展性已经得到了大量商业项目的成功验证。包括阿里巴巴等知名公司使用Netty进行业务开发及扩展。本文基于Netty框架,开发并發高性能物联网服务器,使通信系统的性能和可靠性均得到了极大的提高。

TCP粘包拆包问题无法在传输层处理,需要通过用户自定义方式进行处理。依据网络传输数据特性常常使用的解决方法有三种:一是消息保持固定长度;二是在每一帧消息的尾部使用特殊字符如$$等类型的字符串;三是将消息分为消息头和消息体,在消息头中存储包括消息长度字段。文献[6]比较三种方式的特点,由于受到物联网终端成本、技术开发能力限制,有可能采用不同方式。本系统考虑适配性能,设计采用可配置的方式支持三种方式。

public fin alstaticbooleanU SE_FIXEDLENGTH= false;//消息定长

publicfinalsraricbooleanUSE_DELIMITER= true,//特殊分割符

public finalstaticbooleanUSE_LENGTHFIELD= false;//消息头与消息体

以上三者是互斥,只能使用一种。每一种类型对应一种解码器,特殊分割符及消息头类型要继承LengthFieldBasedFrameDecoder和DelimiterBasedFrameDecoder并重写Decode方法。

并发服务器类图如图2。

以LengthFieldBasedFrameDecoder的子类为例:协议头设计如表l。

代码如下:

@Override

protected Object decode(ChannelHandlerContextctx, ByteBufin) throws Exception{

if (in==null){

returnnull,

}

if (in.readableBytes()<=headerSize){

//headerSize是表1中的头信息长度

returnnull;

}

in.markReaderlndex0∥记录数据读到当时位置

intrequestld= in.readlnt();

intnodeld= in.readlnt();

bytetype = in.readByte();

intframeld= in.readlnt();

shortlengrh= in.readShort();

if (in.readableBytes()

//如果数据缓存没有达到消息头中指定的消息体长度等待消息传送足够

in.resetReaderlndex();//回到上一次数据读取位置

returnnull,

}

经过解码器后保证每次返回的是一个完整的定义的数据对象。

(1)获取数据后按系统设计进行实时转发给其他连接于服務器的客户端

chx=SocketOnLineRegisterDevice.get(detID);

if (chx!= null&&chx.isActive(》{

chx.writeAndFlush(resp);)

(2)将数据存于内存数据库或硬盘数据库服务器中,物联网应用服务器可通过HTTP协调获取准实时或非实时数据。内存数据库本系统使用redis内存数据库平台。通过键值对的方式保存数据。持久化数据库平台支持Mysql及Oracle数据库。

对于第一种数据类型实时性控制高,常用于用户终端对物联网终端模块的控制,如:开关、终端设备实时控制等。此类数据不存储,只进行转发。第二种类型的数据存储于内存数据库,物联网应用服务器可读取内存数据库内容,也可依据需求进行持久化存储。第三种类型数据存储时间相对较长对需要持久化的数据进行保存。

微信及Web页面端是无法直接使用Socekt编程,在HTML5中提供了WebSocket方式,本系统并发物联网服务器开发支持WebSocket客户端支持数据收发。

4 结语

本文设计了基于Netty的并发物联网服务器,为物联网终端提供了可靠的服务保障。目前服务器己应用于多个物联网项目中,包括电力设备数据采集及农业智能项目数据采集。应用过程中发现数据安全性是未来研究与改进的方面,在物联网数据采集过程中保证数据有效、安全提出更高的要求。相信在发展过程中给物联网发展起到重要作用。

参考文献

[1]龚鹏,曾兴斌.基于Net ty框架的数据通讯服务系统的设计[J],无线通信技术,2016, 25; No. 97 (01): 49-52.

[2]梁明刚.Linux下基于epoll_线程池高并发服务器实现研究[J].武汉工业学院学报,2012 (03):54-59.

[3]姜景根,李祥,基于Java的多线程并发服务器的设计与应用[J].电脑与信息技术,2007:15-17,42.

[4]汪悦,管弋铭,李梦蓉等.基于物联网的智慧家庭健康医疗系统[J].光通信研究,2018,02 (205):1-5.

[5]谢佳佳.基于物联网的智能植物工厂电子商务系统设计[J],天津职业技术师范大学学报,2015 (04): 26-29.

[6]韩星,基于Netty的RPC通信系统的编解码技术研究[J].电脑知识与技术,2017 (26):104-107

推荐访问: 发物 联网 服务器 研究 设计

版权所有:智城范文网 2010-2025 未经授权禁止复制或建立镜像[智城范文网]所有资源完全免费共享

Powered by 智城范文网 © All Rights Reserved.。粤ICP备20058421号