千万级物联网场景的数据采集及弱推送方法与流程

文档序号:12309880阅读:1113来源:国知局
千万级物联网场景的数据采集及弱推送方法与流程

本发明涉及物联网领域,具体涉及应用到物联网接入平台、数据采集、消息推送、智慧城市、智慧农场的领域。



背景技术:

本发明方法涉及udp、http、消息队列、弱推送与lru缓存等内容。即通过http验证获取接入服务器,用udp与接入服务器通信,客户端负责数据采集上报与接收服务器消息推送,处理结果通过http上报服务器。本发明的弱推送方式比传统的维持长连接方式,虽然不能保证秒级的实时性(0.3s~60s),但提供了更高的性能,极大降低了成本,适用于城市路灯控制、农场喷洒等有大规模接入需求且无需秒级实时控制的场景。

与本发明最相近的方法有cn103227840a孙琦等人提出的一个面向物联网的高并发高可用数据采集系统。该发明中,传感器设备采集数据以后,向数据侦听集群控制器模块请求分配数据侦听服务器,数据侦听集群控制器模块监控数据侦听服务器集群模块的运行状态,数据侦听集群控制器模块将可用的数据侦听服务器分配给传感器设备,传感器设备在分配的数据侦听服务器中选择一个数据侦听服务器;传感器设备将数据并行推送给数据侦听服务器集群模块,若发送失败,传感器设备将再次向数据侦听集群控制器模块请求分配新的数据侦听服务器。数据侦听服务器在成功接收数据以后,将数据转发到数据存储模块。该发明解决了传感器将数据发送到上级节点时发送失败的情况,考虑了负载均衡,提高了实时性。但不具备服务器到节点设备的消息推送功能。

相比上述的方法,本发明重在于提供高性能的服务,为大规模的物联网设备接入,实现大规模物联网场景的节点数据上报、千万数量级的节点接收服务器端的消息推送。



技术实现要素:

目前的物联网接入平台一般是采用基于tcp长连接的mqtt协议,适用于实时性要求较高的物联网场景如智能家居等,而对于大规模城市路灯、大规模农场等只需较弱的实时性(几秒至分钟级延迟)的场景,维持长连接的代价相对过大,因此,本发明采用了基于udp的通信方式,实现弱推送功能,在满足上诉场景需求的情况下,极大提高了服务并发能力。

图1是该方法的客户端流程框图。主要包括获取接入服务器、定时上报数据、接收推送、确认重传、上报处理结果五个步骤。

通过获取接入服务器的步骤来实现登录验证、负载均衡功能;udp服务器对接收到的数据包采用批量验证的方式,降低数据库连接池获取频率,减少锁竞争,大大提高性能;服务器端维护一个lru算法的列表用于缓存udp地址,若有消息需要推送,则查找地址并发送,若不存在,则把消息保存在nosql数据库中,当节点定时上报时,立刻读出消息推送给节点;每个上报的数据包都带有序号,当序号不是递增1时,则推送确认重传报文,节点收到后从确认序号开始重传;节点处理完消息后,处理结果通过http上报至服务器。

附图说明

图1客户端流程框图;

图2整体架构图;

图3udp服务器功能流程图;

图4详细架构图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述

一、登录服务器

节点通过id密码登录服务器,服务器验证通过后,通过etcd服务发现,选择一个负载较轻的udp接入服务器,生成token保存在缓存数据库中,通过消息队列发送token给相应的udp服务器保存在本地缓存数据库中,并把接入地址与token返回给节点。整体架构如图2。

二、udp服务器

udp服务器有四大功能:监听udp,处理数据,订阅推送消息,订阅登录消息。功能流程图如图3所示。

监听udp端口。当接收到数据包时,不做任何处理,直接放进一个队列中,继续监听接收。

订阅登录消息。节点登录成功后生成的token,并保存在本地缓存中,用于批量验证,提高并发量。

处理数据。读取队列中所有的数据包,取出token批量验证,不通过则丢弃,通过则更新lru列表(用于实时推送),判断递增序号是否正确,不正确则发送确认报文让节点重传,正确则批量保存在nosql数据库中,然后检查缓存有消息则立刻推送。

订阅推送消息。订阅到消息路由服务器发送过来的消息后,查找lru列表,存在则立刻推送,不存在则把消息保存在本地缓存中。

三、节点客户端

节点登录后获取token与接入地址,每个节点数据包都有一个序号,并保存在一个循环队列中,一个确认指针指向数据起始下标,定时上报最新数据包并加入循环队列中。若收到确认报文(内含序号),则更新确认指针到相应数据包序号的下标,并把确认指针之后的全部数据包发送到服务器(即确认重传功能)。节点收到的消息,处理后的结果发送到上报http服务器中。流程如图1。

四、上报http服务器

接收消息路由服务器发送过来的消息(节点id、发送序号),并保存在本地缓存中。当接收到节点发送过来的处理结果,验证并确认序号后,向消息路由服务器发送(节点id、发送序号、结果)。

五、消息路由服务器

消息路由服务器主要有三步:订阅推送消息,消息路由,订阅结果。

订阅推送消息。推送消息的来源有移动app操作、web管理系统的操作、第三方接入的应用操作等。

消息路由。把订阅的消息格式化后(加入发送序号等操作),保存推送记录数据库中,并通过消息队列发送给udp服务器;发送(节点id、发送序号)到上报http服务器。

订阅结果。订阅上报http服务器的结果,并更新记录数据库,取出上一次结果发送序号到这次序号之间的数据,生成结果列表(这次序号之前的都视为失败,可能是丢包等原因使节点没有收到,可根据具体需求重新推送),然后返回给移动端服务器或web管理服务器。

对本发明作进一步详细的描述系统可如下。

一、编写节点客户端,生产节点,id与密码入库登记。

二、部署etcd、redis、nats、hbase、mysql、nginx等中间件。

三、采用go语言fasthttp编写高性能登录服务器。

四、采用go语言fasthttp编写上报http服务器。

五、使用go语言编写udp接入服务器。

六、使用go语言编写消息路由服务器。

七、运行部署整体架构。

八、编写安卓客户端app与web管理系统。

九、加入绑定、管理、编组、权限等业务流程。

十、运行测试。

具体的实现技术与方法,如图4所示。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。



技术特征:

技术总结
针对千万数量级以上的大规模物联网,如智慧城市路灯控制、智能农场喷洒系统等有大规模接入需求且无需保证秒级实时控制的场景,提出了千万级物联网场景的数据采集及弱推送方法,是一个高性能的物联网接入架构与实现方法,为大规模的物联网设备接入,实现大规模物联网场景的节点数据上报、千万数量级的节点接收服务器端的消息推送。本发明采用UDP与LRU缓存实现的弱推送方式,在绝大多数情况下能达到比TCP更高的实时性能,没有命中时也能通过节点定时激活更新LRU列表并推送消息。另外,本发明的确认重传方式也保证了数据上传的可靠性。

技术研发人员:陈光科;陈俊洪;曾碧
受保护的技术使用者:广东工业大学
技术研发日:2017.07.10
技术公布日:2017.10.27
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1