CN107070809A - 一种大规模传感器数据的实时转发方法 - Google Patents
一种大规模传感器数据的实时转发方法 Download PDFInfo
- Publication number
- CN107070809A CN107070809A CN201710231427.6A CN201710231427A CN107070809A CN 107070809 A CN107070809 A CN 107070809A CN 201710231427 A CN201710231427 A CN 201710231427A CN 107070809 A CN107070809 A CN 107070809A
- Authority
- CN
- China
- Prior art keywords
- real
- data
- sensor data
- scale sensor
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
- H04L47/6225—Fixed service order, e.g. Round Robin
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Abstract
本发明公开了一种大规模传感器数据的实时转发方法,包括数据转发器与数据接收器的构建,数据接收器主要从网卡上抓取数据包,将其进行解析后查找数据转发器中的通道进行转发;数据转发器主要负责向远程接收主机进行数据传输,针对接收到的数据,向远程主机发送数据;数据接收器的构造主要包括网卡数据通道的建立,JpcapCapter对象的初始化以及数据包的抓取、解析与转接等过程。本发明实现了大规模传感器数据的抓取和向多个终端的实时转发,适合于物联网环境下大量传感器数据的透传或者传输协议转换等相关的应用。
Description
技术领域
本发明涉及一种数据转发方法,特别是一种大规模传感器数据的实时转发方法。
背景技术
在当前,物联网技术已经广泛的应用到环保、消防、交通、测绘等多个领域。在这些应用中,传感器数据的传输起到了至关重要的作用。传感器数据一般通过无线网络发送到主机的TCP端口,并以固定的协议来规范传感器与主机之间的信息传输。
目前,在多种应用场景下需要实现数据的转发。其中包括:
1)数据协议的转换
基于传感器的数据管理系统往往需要遵循某种数据传输协议,在某些应用场景下,需要实现新旧系统的兼容。这种情况下,新旧系统往往存在不同的通信协议。这就需要首先将旧系统中的数据进行“抓取”,在此基础上进行协议转换,并向新系统进行转发。
2)系统测试时对真实数据的模拟
在对某些软件系统进行升级的初期,为了维护数据的稳定性,需要新旧系统同时运行。在这种情况下,新系统尚需要进一步测试,因此,真实的传感器数据往往需要用于旧系统的运行,而对于新系统来说,只能采用模拟数据对其进行测试。这就需要对真实的传感器数据进行处理,在发往旧系统的同时,镜像一份数据发往新系统,以最大限度的对真实环境进行模拟,实现软件的模拟测试。
上述两种情形都需要涉及以下技术问题:1)大规模传感器数据的“抓取”。2)传感器数据在经过处理之后,向多个终端的实时转发。现有技术中并没有相关大规模传感器数据转发方法的记载,因此迫切需要一种能够大规模传感器数据进行转发的方法解决上述问题。
发明内容
本发明所要解决的技术问题是提供一种大规模传感器数据的实时转发方法,实现大规模传感器数据的抓取并向多个远程主机进行数据转发。
为解决上述技术问题,本发明所采用的技术方案是:
一种大规模传感器数据的实时转发方法,其特征在于包含以下步骤:
步骤一:初始化系统环境;
步骤二:初始化类型为NioEventLoopGroup的线程组clientLoopGroup,启动类型为Bootstrap的数据转发器进程引导器并进行相关设置;
步骤三:构建一个用于I/O事件处理的内隐类,并将其挂接到数据转发器进程的主通道内;
步骤四:利用数据转发器进程引导器,向接收转发数据的N个远程主机进行预连接,并将生成的连接通道保存在类型为ArrayList的通道队列queue中;
步骤五:选取指定的网卡设备对象,并初始化一个类型为JpcapCaptor的对象jpcap与选定的网卡设备对象关联,等待从该设备中抓取数据包;
步骤六:调用jpcap对象的loopPacket方法,循环的从网卡中抓取数据包packet,并进行解析与转发处理。
进一步地,所述步骤一中,系统环境的设置包括netty程序包和jpcap程序包的加载。
进一步地,所述步骤二中,相关设置具体包含,
2.1将线程组clientLoopGroup与数据转发器进程引导器进行关联;
2.2设置clientLoopGroup的通道类型为NioSocketChannel;
2.3设置参数SO_KEEPALIVE,TCP_NODELAY的值为true。
进一步地,所述步骤三中,内隐类的构造方法为,继承类型为ChannelInitializer<SocketChannel>的类,并重载其方法initChannel,在该方法中对所在通道添加类型为ChannelInboundHandlerAdapter的拦截器。
进一步地,所述步骤四中通道队列queue所存储的对象为通道对象。
进一步地,所述步骤四中,根据实际需要连接的主机设置预连接的通道。
进一步地,所述步骤六中,对数据包packet解析的具体方法包含,
6.1将该数据包强制类型转换为TCPPacket类型的对象p;
6.2获取该包的端口信息,若是发向指定端口的包,且包大小不为零,则转步骤c;否则丢弃该包;
6.3将包p中的数据取出,并加载到类型为ByteBuf的对象bytebuffer中;
6.4获取queue中所保存的所有通道,将bytebuffer对象在通道中进行发送。
本发明与现有技术相比,具有以下优点和效果:
1、实现了大规模传感器数据的“抓取”;
2、实现了传感器数据在经过处理之后,向多个终端的实时转发;
3、支持多台远程主机的并发通信,将基于本说明书方法所构建的系统部署在一台普通服务器上时,可支持十万级别的远程主机连接。
附图说明
图1是本发明的一种大规模传感器数据的实时转发方法的数据转发框架图。
图2是本发明的一种大规模传感器数据的实时转发方法的流程图。
具体实施方式
下面结合附图并通过实施例对本发明作进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
如图所示,本发明的一种大规模传感器数据的实时转发方法,其特征在于包含以下步骤:
步骤一:初始化系统环境,系统环境的设置包括netty程序包和jpcap程序包的加载。
步骤二:初始化类型为NioEventLoopGroup的线程组clientLoopGroup,启动类型为Bootstrap的数据转发器进程引导器并进行相关设置。
相关设置具体包含,
2.1将线程组clientLoopGroup与数据转发器进程引导器进行关联;
2.2设置clientLoopGroup的通道类型为NioSocketChannel;
2.3设置参数SO_KEEPALIVE,TCP_NODELAY的值为true。
步骤三:构建一个用于I/O事件处理的内隐类,并将其挂接到数据转发器进程的主通道内。
内隐类的构造方法为,继承类型为ChannelInitializer<SocketChannel>的类,并重载其方法initChannel,在该方法中对所在通道添加类型为ChannelInboundHandlerAdapter的拦截器。
步骤四:利用数据转发器进程引导器,向接收转发数据的N个远程主机进行预连接,并将生成的连接通道保存在类型为ArrayList的通道队列queue中;通道队列queue所存储的对象为通道对象;可以根据实际需要连接的主机设置预连接的通道。
其中,步骤二到步骤四的相关代码为,
步骤五:选取指定的网卡设备对象,并初始化一个类型为JpcapCaptor的对象jpcap与选定的网卡设备对象关联,等待从该设备中抓取数据包;
步骤五的相关代码为:
步骤六:调用jpcap对象的loopPacket方法,循环的从网卡中抓取数据包packet,并进行解析与转发处理。
对数据包packet解析的具体方法包含,
6.1将该数据包强制类型转换为TCPPacket类型的对象p;
6.2获取该包的端口信息,若是发向指定端口的包,且包大小不为零,则转步骤c;否则丢弃该包;
6.3将包p中的数据取出,并加载到类型为ByteBuf的对象bytebuffer中;
6.4获取queue中所保存的所有通道,将bytebuffer对象在通道中进行发送。
步骤六的相关代码为:
本说明书中所描述内容适合基于本框架的数据转发与透传,相关技术人员可以根据具体应用场景来进行修改。若为数据透传,则buildBuf函数可将数据原样转发,若为协议转换后的数据转发,则可在buildBuf函数中编写协议转换的具体代码。
本说明书中的方法支持多台远程主机的并发通信,将基于本说明书方法所构建的系统部署在一台普通服务器上时,可支持十万级别的远程主机连接。
本说明书中所描述的以上内容仅仅是对本发明所作的举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种修改或补充或采用类似的方式替代,只要不偏离本发明说明书的内容或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (7)
1.一种大规模传感器数据的实时转发方法,其特征在于包含以下步骤:
步骤一:初始化系统环境;
步骤二:初始化类型为NioEventLoopGroup的线程组clientLoopGroup,启动类型为Bootstrap的数据转发器进程引导器并进行相关设置;
步骤三:构建一个用于I/O事件处理的内隐类,并将其挂接到数据转发器进程的主通道内;
步骤四:利用数据转发器进程引导器,向接收转发数据的N个远程主机进行预连接,并将生成的连接通道保存在类型为ArrayList的通道队列queue中;
步骤五:选取指定的网卡设备对象,并初始化一个类型为JpcapCaptor的对象jpcap与选定的网卡设备对象关联,等待从该设备中抓取数据包;
步骤六:调用jpcap对象的loopPacket方法,循环的从网卡中抓取数据包packet,并进行解析与转发处理。
2.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤一中,系统环境的设置包括netty程序包和jpcap程序包的加载。
3.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤二中,相关设置具体包含,
2.1将线程组clientLoopGroup与数据转发器进程引导器进行关联;
2.2设置clientLoopGroup的通道类型为NioSocketChannel;
2.3设置参数SO_KEEPALIVE,TCP_NODELAY的值为true。
4.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤三中,内隐类的构造方法为,继承类型为ChannelInitializer<SocketChannel>的类,并重载其方法initChannel,在该方法中对所在通道添加类型为ChannelInboundHandlerAdapter的拦截器。
5.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤四中通道队列queue所存储的对象为通道对象。
6.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤四中,根据实际需要连接的主机设置预连接的通道。
7.按照权利要求1所述的一种大规模传感器数据的实时转发方法,其特征在于:所述步骤六中,对数据包packet解析的具体方法包含,
6.1将该数据包强制类型转换为TCPPacket类型的对象p;
6.2获取该包的端口信息,若是发向指定端口的包,且包大小不为零,则转步骤c;否则丢弃该包;
6.3将包p中的数据取出,并加载到类型为ByteBuf的对象bytebuffer中;
6.4获取queue中所保存的所有通道,将bytebuffer对象在通道中进行发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710231427.6A CN107070809B (zh) | 2017-04-11 | 2017-04-11 | 一种大规模传感器数据的实时转发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710231427.6A CN107070809B (zh) | 2017-04-11 | 2017-04-11 | 一种大规模传感器数据的实时转发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107070809A true CN107070809A (zh) | 2017-08-18 |
CN107070809B CN107070809B (zh) | 2020-05-12 |
Family
ID=59603102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710231427.6A Active CN107070809B (zh) | 2017-04-11 | 2017-04-11 | 一种大规模传感器数据的实时转发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107070809B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632594A (zh) * | 2017-11-06 | 2018-01-26 | 苏州科技大学 | 一种基于无线网络的电器集中控制系统和控制方法 |
CN110868349A (zh) * | 2019-11-27 | 2020-03-06 | 河钢数字技术股份有限公司 | 物联网环境下分布式高并发数据采集与处理方法及系统 |
CN111736894A (zh) * | 2020-06-28 | 2020-10-02 | 南通大学 | 一种基于配置的传感器数据解析处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
US20090112818A1 (en) * | 2007-10-30 | 2009-04-30 | Jaimon Jose | Techniques for parallel processing of directory searches |
CN102685180A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种面向云计算的网络安全预警方法 |
CN103281335A (zh) * | 2013-06-18 | 2013-09-04 | 东华大学 | 一种基于WinPcap的嵌入式网络协议栈开发方法 |
CN103916316A (zh) * | 2014-04-11 | 2014-07-09 | 国家计算机网络与信息安全管理中心 | 网络数据包线速捕获方法 |
US20150149554A1 (en) * | 2012-02-02 | 2015-05-28 | AppDynamics Inc. | Automatic capture of detailed analysis information based on remote server analysis |
-
2017
- 2017-04-11 CN CN201710231427.6A patent/CN107070809B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090112818A1 (en) * | 2007-10-30 | 2009-04-30 | Jaimon Jose | Techniques for parallel processing of directory searches |
CN101227341A (zh) * | 2007-12-18 | 2008-07-23 | 浪潮电子信息产业股份有限公司 | Linux系统上以太网卡快速捕包的方法 |
CN102685180A (zh) * | 2011-10-18 | 2012-09-19 | 国网电力科学研究院 | 一种面向云计算的网络安全预警方法 |
US20150149554A1 (en) * | 2012-02-02 | 2015-05-28 | AppDynamics Inc. | Automatic capture of detailed analysis information based on remote server analysis |
CN103281335A (zh) * | 2013-06-18 | 2013-09-04 | 东华大学 | 一种基于WinPcap的嵌入式网络协议栈开发方法 |
CN103916316A (zh) * | 2014-04-11 | 2014-07-09 | 国家计算机网络与信息安全管理中心 | 网络数据包线速捕获方法 |
Non-Patent Citations (2)
Title |
---|
温曙光等: ""libpcap-MT:一种多线程的通用数据包捕获库"", 《计算机研究与发展》 * |
甘彪等: ""基于动态内存池和WinpCap的高速数据捕获技术"", 《信息技术》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632594A (zh) * | 2017-11-06 | 2018-01-26 | 苏州科技大学 | 一种基于无线网络的电器集中控制系统和控制方法 |
CN107632594B (zh) * | 2017-11-06 | 2024-02-06 | 苏州科技大学 | 一种基于无线网络的电器集中控制系统和控制方法 |
CN110868349A (zh) * | 2019-11-27 | 2020-03-06 | 河钢数字技术股份有限公司 | 物联网环境下分布式高并发数据采集与处理方法及系统 |
CN110868349B (zh) * | 2019-11-27 | 2021-07-09 | 河钢数字技术股份有限公司 | 物联网环境下分布式高并发数据采集与处理方法及系统 |
CN111736894A (zh) * | 2020-06-28 | 2020-10-02 | 南通大学 | 一种基于配置的传感器数据解析处理方法 |
CN111736894B (zh) * | 2020-06-28 | 2024-04-19 | 南通大学 | 一种基于配置的传感器数据解析处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107070809B (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105706043B (zh) | 推进式链接的列表吞吐量 | |
CN108563517A (zh) | 系统接口的调用方法及装置 | |
CN103856361A (zh) | 实现远程调试的方法及系统 | |
CN107070809A (zh) | 一种大规模传感器数据的实时转发方法 | |
CN104993947A (zh) | 批量升级固件的方法 | |
CN104021069A (zh) | 基于分布式虚拟机系统的软件性能测试的管理方法和系统 | |
CN103942087A (zh) | 虚拟机热迁移方法及相关装置和集群系统 | |
CN106998347A (zh) | 服务器虚拟化网络共享的装置和方法 | |
US10609125B2 (en) | Method and system for transmitting communication data | |
CN105871643B (zh) | 基于路由协议的网络运行仿真方法 | |
CN106878181A (zh) | 一种报文传输方法和装置 | |
CN106790347B (zh) | 一种基于netty的大规模并发数据转发方法 | |
CN103957214A (zh) | 一种教学用计算机网络数据包抓取方法 | |
US9503309B2 (en) | Ethernet communication system and method based on MMC/SD interface | |
CN105991795B (zh) | Arp表项更新方法以及装置 | |
CN107071358A (zh) | 视频拼接服务器和移动状态下的全景直播系统 | |
CN105071988A (zh) | 一种多用户测试系统及方法 | |
CN105518610B (zh) | 处理操作请求的存储系统、方法及装置 | |
CN103281335A (zh) | 一种基于WinPcap的嵌入式网络协议栈开发方法 | |
CN107135189A (zh) | 一种报文发送方法及物理机 | |
CN104579973A (zh) | 一种虚拟集群中的报文转发方法和装置 | |
CN110099138A (zh) | 一种处理带vlan tag的dhcp数据的方法及系统 | |
CN105939293A (zh) | 一种skb回收方法及装置 | |
CN105337797A (zh) | 一种复杂电子信息系统网络协议数据捕获方法 | |
CN103279382B (zh) | 原生方式访问资源的方法、Java端、原生端及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |