第29卷第3期 计算机应用研究 VoL 29 No.3 2012年3月 Applieation Research of Computers M 2012 一种面向物联网应用的底层网络通信模块设计术 杨丰玉,陈英,吴振华 (南昌航空大学软件学院软件工程系,南昌330063) 摘要:通过引入接收线程池、转发对象池、文件缓冲区等技术,构建了一个面向大规模物联网应用的底层网络 通信模型。实验结果表明,该模型的效率与稳定基本能满足大规模的底层通信,适用于物联网应用。 关键词:物联网应用;底层通信;线程池;对象池;缓冲区 中图分类号:TP'391.4 文献标志码:A 文章编号:1001.3695(2012)03.1057.03 doi:10.3969/j.issn.1001—3695.2012.03.070 ’ Design of underlying communication model for application in Internet of Things YANG Feng—yu,CHEN Ying,WU Zhen—hua (Dept.ofSoftware Engineering,School ofSotfware,Nanchang Hangkong University,Nanchang 330063,China) Abstract:This paper constructed a communication model adapted to large—scale applications in Internet of Things with follow- ing techniques,receiving thread pool,relaying object pool and ifle writing buffer.Plenty of experiments prove that the model is much efifcient and stable to work for large—scale applications in Interuet of Things. Key words:applications in Intemet of Things;underlying communication;thread pool;object pool;buffer 数据,随着物联网应用领域和范围的扩大,采集发送的数据量 0 引言 也在呈现指数级的增长,特别是实时性要求较高的领域,因此 物联网(Internet of Thing) 是把具有标志、感知和智能处 对通信模型的要求也越来越高。一个典型的物联网通信结构 理能力的物体借助通信技术互连而成的网络,这些无须人工干 如图1所示。 预即可实现协同和互动,目的在于为人们提供智能服务。随着 藏知层j 传输层 应用层 物联网基础网络的构建及软件的开发,物联网正在进入迅速发 展的时期,已广泛应用于军事航空、城市管理、定位导航、智能 交通、数字家庭等领域 -3』。 k 计算机 物联网将各种设备资源连接到一个网络中,并从标志和感 知设备(也称为传感器)中获取信息,从传感器获取的信息由网 消息 计算机 服务器 关转发到应用层处理。因此,消息在各:种设备间的转发速度、接 ~ 网关i 计算机 收正确率将直接决定物联网的工作效率和作用,设计一个快速、 高效、可扩展性强的底层网络通信模块就显得尤为重要。 图l典型的物联网应用结构 目前,物联网领域的研究工作主要集中于感知层、节点状 由图1可以看到,底层传感器节点采集数据后,会将数据 态的监控、节点信息的整合、通信协议格式等的研究 ,对传 传送到与其相连的网关,各个网关对数据封装后发送到系统的 输层的通信效率方面研究较少。本文拟研究物联网大规模应 消息服务器中,消息服务器根据配置好的路由表转发所接收的 用情况下传输层的通信效率问题。 消息到应用层的计算机中,应用层按实际需求解析处理数据。 感知层与传输层以及应用层与传输层的通信均为典型的多 1 网络通信模型 对一结构。当系统的规模不断增长后,传输层就成为系统的通 信中心,传输层消息服务器的通信模型好坏将直接影响系统的 物联网通常可以概括为三层:a)感知层 ,通常是基于物 性能。因此一个良好的通信模型需要解决以下几个关键问题: 理、化学、生物等技术的传感器,采集所需的各种数据(如温 a)数据接收。消息服务器接收网关发送的数据时,首先 度、湿度等);b)传输层 J,其主要传输方式分为有线和无线两 启动监听,在指定的端口监听数据,当监听到有数据到达时,读 种;e)应用层 J,对采集上来的数据进行智能分类、查询处理 取并解析其中的目的数据,根据初始配置的路由表,将数据转 及决策支持等。 发到目的地。当监听的端口有大量数据到达时,如果处理连接 通常的物联网应用中,传输层的通信模型负责将感知层传 的并发能力不够时,就会造成丢失网络数据包,导致业务层读 感器采集的数据转发到应用层进行应用分析和处理。通信模 取原始数据不准确,影响正常的业务功能。 型的输入为分布在各地的传感器按照一定的周期采集发送的 b)数据转发。消息服务器的职责除了接收网关发送的数 收稿日期:2011—09.08;修回日期:2011—10-30 基金项目:江西省自然科学基金资助项目(2010BGA02100) 作者简介:杨丰玉(1980一),男,江西九江人,讲师,硕士,主要研究方向为软件工程、数据挖掘(frueyang@163.corn);陈英(-1981一),男,江西抚 州人,讲师,硕士,主要研究方向为无线传感器网络;吴振华(1978一),男,江西波阳人,副教授,博士,主要研究方向为无线传感器网络. ・1058,・ 计算机应用研究 第29卷 据外,还需要将接收的数据转发至目的地。转发数据首先必须 转发连接对象的主要工作过程是,在接收线程接收到数据 后,分析数据要发送的目的地,根据配置的路由表获取要发送 创建本地端口,与目的地建立网络连接,再发送数据。创建端 口不仅耗费内存资源,还需要访问I/O,访问I/O的速度远远 低于访问内存资源,如果要发送大量数据,创建端口的速度将 成为转发数据的瓶颈。 c)日志读写。消息服务器在接收并转发数据时,需要记 录转发消息的日志,以观测系统的性能。常用的方法是采用文 的目的地址,然后调用转发连接对象发送数据,转发连接对象 首先创建到目的地址的连接,然后发送数据,发送成功后释放 该连接。在这一过程中,创建到目的地址的连接及释放连接最 为耗时,因为建立和释放连接需要执行I/O操作。 将转发连接对象池化,首先创建转发连接对象的对象池, 件来进行日志记录,但文件的打开和关闭也涉及I/O操作,较 为费时。如果每次转发消息都打开并关闭一次文件,将极大地 耗费时间。导致日志操作的时间比转发消息的时间还要长,严 重影响了系统的性能。 建立一定数量的连接对象,当转发数据时,从池中取出一个转 发连接对象,发送数据后,再将连接对象还回对象池,从而避免 了大量创建和释放连接所消耗的资源,提高了系统性能。 2.3文件缓冲区 2网络通信模块设计 由上文分析可知,一个性能优良的网络通信模块必须要解 决以上几个关键问题才能应对大规模物联网节点通信的功能 缓冲区是为了提高操作性能、特别是需要频繁地执行某种 耗费时间的I/O操作而设立的临时区域,将数据先写到临时区 域而不直接写到目标设备中,直到缓冲区充满再整体写入到目 标设备,从而提高系统的I/O操作性能。 需求及性能需求,满足物联网应用的需要。针对以上问题,本 文拟采用接收线程池、转发连接对象池和文件缓冲区等技术构 建网络通信模块 2.1接收线程池 文件缓冲区是在将内容写入文件时,不直接写入到文件, 而是先将内容写入到设置的缓冲区内,直接缓冲区充满再将缓 冲内的内容整体写入文件,避免多次访问文件导致大量的I/O 操作,从而提高系统性能。 线程池 ’ 的基本原理是先启动若干数量的数据接收线 程,并让这些线程都处于睡眠状态,当某个传感器节点采集完数 据后请求上传连接时,就会唤醒线程池中的某一个睡眠线程,让 设置文件缓冲区是因为转发连接对象在成功转发数据后, 需要记录转发日志信息到日志文件,为避免频繁的文件操作而 进行的改进。 2.4通信模型 它来处理该连接请求;当处理完这个请求任务后,该条线程又处 于睡眠状态。如果为每个连接请求分别创建一条新线程,那耗 费的CPU时间和内存将是惊人的,而采用线程池技术将会节约 大量的系统资源,使得更多的CPU时间和内存用来处理接收数 采用了以上关键技术的通信模型结构如图2所示。 据的解析任务,而不是频繁地创建与销毁线程。 线程池的基本参数有: ’ a)基本线程数。线程池中的最小线程数,线程池在初始 化时就创建的线程数量,并且在运行过程中保证池中存活线程 的最低数量。 b)最大线程数。线程池中的最大线程数,当线程池的基 本线程数不能满足需求时,可不断创新新的线程,直至达到最 大线程数。 c)线程最长存活时间 线程池中每个线程的存活时间, 即到达该存活时间的线程在完成自己的当前任务后,将会被线 程池回收并释放,如果回收后线程池中不足基本线程数,将补 充新的线程,直至达到基本线程数。 .通信模型的处理算法如图3所示。 d)任务队列长度。应对感知层发送的大量数据时,可采 用多线程机制,将接收线程池化,每当监听端口有新的数据到 来时,即从线程池中取出一个接收线程,接收数据并交给转发 连接对象进行转发。 2.2转发连接对象池 , 、 对象池韵基本工作原理是将用过的对象保存起来,等下一 次需要这种对象的时候,再拿出来重复使用,从而在一定程度 上减少频繁创建对象所造成的开销。用于充当保存对象的 “容器”的对象被称为“对象池”。 ’若初始化、实例化的代价高 且需要经常实例化,但每次实 例化数量较少的情况下,使用对象池可以获得显著的效能提 升。从池中取得对象的时间是可预测的,但新建一个实例所需 的时间是不确定。 图3通信模型处理算法流程 第3期 杨丰玉,等:一种面向物联网应用的底层网络通信模块设计 ・1059・ 记录发送日志; 3实验分析 } , 在设计了通信模型后,采用Java语言对模型进行了实现, c)模拟终端应用程序。接收消息服务器转发的消息数 并实现了模拟网关的数据发送程序和应用层终端数据接收程 据,并记录接收日志。模拟终端应用程序的伪代码如下: 序,对模型进行了多次实验,验证模型的性能和工作效率。 / 终端应用主程序 / 创建服务端监听端口 3.1 实验环境 while(有数据包到来) 1)开发测试环境 { 实验中所使用的软件与硬件环境如表1所示。 接收数据; 表1实验环境 记录接收日志; } 3.3实验数据分析 实验中,模拟网关模拟200个线程,每个线程每隔2,s发送 150个消息包,持续1 rain,共计930 000个数据包… 2)网络环境 1)线程池使用前后的性能对比使用线池程和未使用线 为了获得真实的测试结果,结合通信模型的实际功能,设 程池的性能对比分析如表2所示。 置了一个模拟网关、一个消息服务器、三个模拟应用终端(图 表2使用线程池前后性能对比分析 4)。模拟终端可以模拟多个线程同时发送数据,数据的目的 地址随机产生,由消息服务器转发到三个模拟应用终端。 端 采用线程池,提高了系统的并发能力和转发成功率,接收 时间上也有一定的缩短,但内存值占用较大。这是由于线程池 需要由CPU来管理,每个线程有一定的存活时间,线程的创建 图4实验环境拓扑图 需要耗费较大的内存,线程的调度需要由CPU控制,因此耗费 3.2实验过程 了一定的CPU和内存值,带来了一定程度上的性能提升。 软件主要分为三个部分: 2)转发对象池使用前后性能对比 使用转发对象池及未 a)模拟网关。主要模拟多个线程同时发送多个数据包到 使用转发对象池的性能对比分析如表3所示。 消息服务器中。模拟网关的伪代码如下: 表3使用对象池前后性能对比分析 / 模拟网关主程序 / 获取初始化参数(线程数、间隔时间、持续时间、消息服务器地 址); while(运行时间<持续时间) { 创建本地UDP发送端口; 组装要发送的数据; 采用对象池,大大提高了系统的转发成功率,转发能力也 发送数据包到目标地址; 得到了明显的提升,接收时间得到了有效地改善。’由于对象池 记录日志; b)消息服务器。接收网关发送的消息,解析其中的目标地 主要改进的是对象的创建,即UDP连接对象不再是每次需要 址,根据路由表转发到目标终端。消息服务器的伪代码如下: 再创建,而是在对象池中预先创建。由此可以看出,UDP连接 / 消息服务器的主程序 / 对象耗费时间巨大,因此,采用对象池后性能得到了极大提升 创建服务端监听端口; 3)文件缓冲区使用前后性能对比使用文件缓冲区与未 创建接收线程池; 使用文件缓冲区性能对比分析如表4所示。 创建转发对象池; 表4使用文件缓冲区前后性能对比分析 初始化文件缓冲区; while(有数据包到来){ 从接收线程池中取出一个可用线程; 解析数据包内容,获取目标; 从路由表查到具体的转发地址; 从转发对象池取出一个转发对象; 转发数据; } 文件缓冲区只是在一定程度上降低了CPU及(下转第1075页) 第3期 杨海博,等:一种新的微弱未知信号混沌振子检测法 ・1075・ 子的参数,就可以实现信号检测的目的,使混沌未知信号检测 4仿真实验 法简单、可实现。最后仿真实验表明了这种方法的有效性。 2 以式(2)描述的系统作为实验对象,其中 =0.99 Hz,被 1.5 测微弱信号角频率ccJ =1.02 Hz,幅值A=0.01 V,信噪比为 1 n5 一40 dB,则有 O { : -一吼5 一l .5y+ 一 + , =, 。 。.99 ,+。.。 c。 。 ,+n , 1.5 -系统策动力的角频率 初值为0.03 Hz,循环步长为0.06 2 Hz,/b-(t)为均值为0、方差为1的随机噪声,系统的初值为 = 烈fJ (1) (8) 0,Y=1,仿真步长h=0.1。按照循环混沌检测方法的步骤计 图6低信噪比下微弱信号输入到循环混沌检测系统中后的 相图与间歇混沌现象 算实验。 图6(a)为系统输入被测信号时混沌现象的相图,(b)是 参考文献: 。 满足本实验的间歇混沌现象的时域图。循环16次后,检测器 『1 1 BIRX D L.Chaotic oseillator and CMFFNS for signal detectinn in 检测到系统发生了间歇性混沌现象如图6(b)。可以明显看 noise environments[C]//Proc of IEEE International Joint Confe- rence On Neural Networks.1992:881-888. 到,图6(b)中总时间2 000 s内有9.5个间歇周期,则间歇性 [2]陈维,孟晨,崔少辉,等.基于杜芬振子的微弱信号频率测量[J]. 周期T=2000/9.5=210.5263 s。此时系统跳出循环,按循环 计算机测量与控制,2010,18(9):1982.1985. 混沌检测法的步骤,利用式(6)计算出被测微弱信号角频率 [3]吴永峰,张世平,孙金玮,等.环形耦合Dufifng振子伺的同步突变 (£,1=∞+2,rr/T=0.99+0.0298=1.0198 Hz,与实验所设的真 [J].物理学报,2O11,60(2):186.192. 实值误差只有0.0196%,误差极小。因此循环混沌检测系统 [4]WANG Guar ̄一yu,CHEN Da-jun,LIN Jian ya.The application of cha— 在低信噪比下检测出的目标微弱信号精度高,检测效果也很 otie oscillators to weak signal detection『J].IEEE Trans on Industri・ 好,其运算量较传统的混沌阵法大大降低。 al Electronics,,1999,2(46):440—444. [5]汪学兵,张林华,李传东.混沌同步及其在保密通信中的应用[J]. 5结束语 计算机应用研究,2007,24(5):127—132. [6]LOU T L.Frequency estimation for weak signals based on chaos theory 通过分析混沌振子系统在未知信号检测方面的缺点,提出 [C]//Proe of Intenrational Seminar on Future BioMedical Information 了循环混沌检测系统。该方法在未知频率检测信号时,将传统 Engineering.Washington DC:IEEE Computer Society,2008:361-364. 的数目巨大的混沌阵阵元的建立变为了易于工程现实的循环 [7]姜万录,吴胜强.基于混沌振子的微弱信号检测方法及应用[J]. 设计(循环次数减少为混沌阵阵元个数的一半),只需调整振 机床与液压,2002,21(4):194.196. ’(上接第1059页)内存使用的峰值,接收能力并未得到明显改 能。通过模拟实际的实验数据,分别对各种技术与原始传输方 善。由此可见,文件读写在此模型结构中所耗费的系统资源较 式的数据结果进行比较,得出结论:在网络应用中,网络连接对 小,主要是由于每次I/O读写的时间与建立网络连接相比较 象所占用的时间是主要的时间耗费,线程池和文件缓冲区也在 短,因而体现不出性能的提升。 一定程度上缓解了内存和CPU的压力,三者共同组合可解决 4)使用三种技术的组合前后性能对比未使用任何技术 系统通信时存在的多种问题,大大提升系统性能。’ 与使用了三种技术组合的性能对比分析如表5所示。 在目前已取得的研究成果基础上,后续的研究工作将进一 表5使用三种技术组合前后性能对比分析 步研究分析对象的规模、对象的生存周期、初始对象数和最大 对象数等因素对模型效果的影响程度,并给出在特定的应用规 模条件下,各个参数如何配置才能使性能达到最优化。 参考文献: 、 [1]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大 学出版社,2005. ’ [2]张峰,张晓鹏,吴高成.基于物联网的机场集成行李处理系统及 其应用研究[J].计算机应用研究,2010,27(10):3771-3774. 由以上几组实验数据比较可知,系统最大的瓶颈在于转发 [3]黄冬梅,方的苟,张明华,等.枥联网技术在救灾物资配送管理系 时UDP连接对象的创建时间;其次是采用多个线程接收网关 统中的应用[J].计算机应用研究,2011,28(1):189—194. 传输过来的数据;最后是文件的读写。三种技术的组合,能大 [4]顾晶晶、陈松灿、庄毅.基于无线传感器网络拓扑结树的网络定 位模型[J].计算机学报,2010,33(9):1548-1551. 幅度且有效地提升系统的工作效率。 [5]周洪波.物联网:技术、应用、标准和商业模式[M].北京:电子 4结束语 工业出版社.2010. [6]周钦强.一种利用并发提高数担处理吞吐率的模型【J].计算机 ’ l 本文针对物联网大规模应用中可能存在的通信效率问题, 系统应用,2010,19(11):190-192. 、提出了一种可提高系统通信效率的底层通信模型。模型采用 [7]LING yi-bei,MULLEN T,LIN Xiao—la.Analysi ̄of optimal thread f 线程池、转发对象池及文件缓冲区技术,共同组合提升传输性 pool size[J].Operating Systems Review,2000,34(2):42-55.