一种基于MQTT数据交互的方法、终端及服务端与流程

文档序号:20678380发布日期:2020-05-08 18:07阅读:1398来源:国知局
一种基于MQTT数据交互的方法、终端及服务端与流程

本发明涉及通信领域,尤其涉及一种基于mqtt数据交互的方法、终端及服务端。



背景技术:

现有基于http协议建立的终端与服务端数据交互过程中,终端会存在很频繁的gps位置上报,且http的三次握手建立连接和四次挥手关闭连接对于服务端来说也是一笔很大的开销,服务端可能因为网络原因无法接收到终端上报的数据,更严重可能导致故障,高可用性无法保证。

而基于mq中间件的长连接通信建立的终端与服务端数据交互过程中,虽然mq避免了连接建立和关闭的开销,其可用性也有所保证,但是mq适合于连接数少,单个连接吞吐量大的场景,其更多是用于服务端应用之间的解耦和削峰填谷等。对于终端这类一般是连接数多,单个连接吞吐量小的场景需要一种更加轻量级的消息队列。



技术实现要素:

本发明要解决的技术问题,在于提供一种基于mqtt数据交互的方法、终端及服务端,保证数据交互的高可用性,且满足连接数量多、单个连接吞吐量小的应用场景。

第一方面,本发明提供一种基于mqtt数据交互的方法,所述方法包括:

终端对获取的信息进行编码,指定qos后将所述编码后的信息上传至mqtt服务器;

所述mqtt服务器根据指定的qos将所述终端上传的信息推送到与所述mqtt服务器连接的服务端;

所述服务端对所述消息进行解码,校验所述消息的topic是否需要处理;

如果是,所述服务端提交所述消息至业务线程池进行业务逻辑处理。

在上述方案中,在所述终端对获取的信息进行编码之前,将所述终端注册到所述mqtt服务器上。

在上述方案中,将所述终端注册到所述mqtt服务器上的方法包括:

所述终端通过aes加密后,发送加密后的信息请求服务端;

所述服务端通过aes解密获取所述终端的信息;

服务端根据所述终端的信息查询bd判断所述终端是否已经注册;

如果否,所述服务端请求mqtt服务器,所述服务端将所述mqtt服务器生成的密钥信息返回给所述终端;

如果是,所述服务端直接返回连接所述mqtt服务器的密钥信息;

所述终端接收所述mqtt服务器生成的密钥信息缓存在本地,所述终端根据缓存在本地的密钥信息与所述mqtt服务器连接。

在上述方案中,所述方法还包括:

所述终端定时向所述mqtt服务器发送心跳包,所述mqtt服务器定时发送所述心跳包至所述服务端。

在上述方案中,所述方法还包括:

所述mqtt服务器未能接受所述终端上传的消息时,根据所述指定的qos控制重试机制。

在上述方案中,所述信息包括实时定位、短信、微信、通话记录、应用权限中的任意一种或多种。

在上述方案中,所述方法还包括:

所述服务端将所述mqtt服务器上传的消息记录于数据库中。

第二方面,本发明提供一种终端,包括:

获取单元,用于获取所述终端上的信息;

编码单元,用于对获取的信息进行编码;

发送单元,用于发送编码后的信息或加密后的信息至mqtt服务器和服务端。

在上述方案中,所述终端还包括:

加密单元,用于对所述终端注册到mqtt服务器时发送的信息进行aes加密。

在上述方案中,所述终端还包括:

定时单元,用于控制所述发送单元定时向所述mqtt服务器发送心跳包。

第三方面,本发明提供一种服务端,所述服务端包括:

接收单元,用于接收终端和mqtt服务器发送的信息;

解码单元,用于对所述终端和mqtt服务器发送的信息进行解码;

校验单元,用于校验所述消息的topic是否需要处理。

在上述方案中,所述服务端还包括:

解密单元,用于对所述终端注册到mqtt服务器时发送的信息进行aes解密;

查询单元,用于根据所述终端注册到mqtt服务器时发送的信息查询bd判断所述终端是否已经注册;

返回单元,用于将所述mqtt服务器生成的密钥信息返回给所述终端。

本发明的有益效果是:

基于上述技术方案,本发明实施例建立基于一种基于mqtt数据交互的方法、终端及服务端,保证数据交互的高可用性,且满足连接数量多、单个连接吞吐量小的应用场景。

1、基于mqtt的微消息队列服务器,终端可在网络差的环境中正常上传数据至服务端;

2、基于mqtt的长连接机制,只需建立一次连接和关闭连接,使得服务端连接mqtt服务器,终端连接mqtt,服务端和终端均采用心跳机制断线重连,保证了上述数据交互方式的高性能和高可用性;

3、基于mqtt协议的特性,其有三种消息发布服务质量(至多一次、至少一次和只有一次),可根据终端业务的需要灵活选择发布质量来保证高可用性;

4、终端将数据上报至mqtt服务器,mqtt服务器根据配置的qos向服务端推送数据,保证了终端发送消息的可靠性;

5、由于终端应用场景的特性,存在主要连接数多,但每台终端的消息量不大的特点,服务端接收到mqtt服务器推送的消息后,转发到服务端的业务线程池中进行处理,不占用服务端与mqtt服务器通信的线程(让底层的selector尽快进行下次轮询来处理下一波的消息,或者处理本次轮询出来的尚未开始处理的消息),减少了消息堆积的可能性,保证了上述数据交互方式的高性能。

附图说明

图1为本发明提供的一种基于mqtt数据交互的方法的流程示意图;

图2为本发明提供的一种终端的结构示意图;

图3为本发明提供的一种终端的一个示例的结构示意图;

图4本发明提供的一种终端的另一个示例的结构示意图;

图5本发明提供的一种终端的另一个示例的结构示意图;

图6本发明提供的一种服务端的结构示意图;

图7本发明提供的一种服务端的一个示例的结构示意图。

具体实施方式

下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

mqtt(消息队列遥测传输)是iso标准(iso/iecprf20922)下基于发布/订阅范式的消息协议,mqtt工作在tcp/ip协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。mqtt是一个基于客户端-服务器的消息发布/订阅传输协议。mqtt协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(m2m)通信和物联网(iot)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

基于上述mqtt协议获得一种多连接数、每个连接小吞吐量的数据的交互方式,本发明实施例将对本发明提供的一种基于mqtt数据交互的方法、终端及服务端进行具体说明。

参考图1,如附图1所示为本发明提供的一种基于mqtt数据交互的方法的流程示意图,包括:

s101,终端对获取的信息进行编码,指定qos后将所述编码后的信息上传至mqtt服务器;

可以理解,终端将信息编码成二进制数据后,再指定qos将二进制数据上传至mqtt服务器。

在一个示例中,在所述终端对获取的信息进行编码之前,将所述终端注册到所述mqtt服务器上,将所述终端注册到所述mqtt服务器上的方法包括:

所述终端通过aes加密后,发送加密后的信息请求服务端;

所述服务端通过aes解密获取所述终端的信息;

服务端根据所述终端的信息查询bd判断所述终端是否已经注册;

如果否,所述服务端请求mqtt服务器,所述服务端将所述mqtt服务器生成的密钥信息返回给所述终端;

如果是,所述服务端直接返回连接所述mqtt服务器的密钥信息;

所述终端接收所述mqtt服务器生成的密钥信息缓存在本地,所述终端根据缓存在本地的密钥信息与所述mqtt服务器连接。

s102,所述mqtt服务器根据指定的qos将所述终端上传的信息推送到与所述mqtt服务器连接的服务端;

可以理解,基于mqtt协议的轻量级和简洁性,所述消息编码后形成的二进制数据会被直接推送至与mqtt服务器连接的服务端,而与该消息的topic无关。

s103,所述服务端对所述消息进行解码,校验所述消息的topic是否需要处理;

s104,如果是,所述服务端提交所述消息至业务线程池进行业务逻辑处理。

可以理解,当所述消息对应的topic需要处理时,服务端直接提交给业务线程池进行业务逻辑处理,尽早释放与mqtt服务器通信的线程,使得mqtt服务器上的selector(多路复用器)可以继续去轮询消息或继续处理尚未进行处理的消息。

在一个示例中,所述方法还包括:

所述终端定时向所述mqtt服务器发送心跳包,所述mqtt服务器定时发送所述心跳包至所述服务端。

在另一个示例中,所述方法还包括:

所述mqtt服务器未能接受所述终端上传的消息时,根据所述指定的qos控制重试机制。

在另一个示例中,所述方法还包括:

所述服务端将所述mqtt服务器上传的消息记录于数据库中。

可以理解,本发明实施例中所述信息包括实时定位、短信、微信、通话记录、应用权限中的任意一种或多种并非指对于本发明所述信息的限定,在本发明所述数据交互的方法技术方案中,也可以包括获取其它信息与服务端交互。

参考图2,如附图2所示为本发明提供的一种终端的结构示意图,所述终端包括:

获取单元,用于获取所述终端上的信息;

编码单元,用于对获取的信息进行编码;

发送单元,用于发送编码后的信息或加密后的信息至mqtt服务器和服务端。

参考图3,如附图3所示为本发明提供的一种终端的一个示例的结构示意图,在附图2所示一种终端的结构基础上,所述终端还包括:

加密单元,用于对所述终端注册到mqtt服务器时发送的信息进行aes加密。

参考图4,如附图4所示为本发明提供的一种终端的另一个示例的结构示意图,在附图2所示一种终端的结构基础上,所述终端还包括:

定时单元,用于控制所述发送单元定时向所述mqtt服务器发送心跳包。

参考图5,如附图5所示为本发明提供的一种终端的另一个示例的结构示意图,在附图2所示一种终端的结构基础上,所述终端还包括:

加密单元,用于对所述终端注册到mqtt服务器时发送的信息进行aes加密;

定时单元,用于控制所述发送单元定时向所述mqtt服务器发送心跳包。

参考图6,如附图6所示为本发明提供的一种服务端的结构示意图,所述服务端包括:

接收单元,用于接收终端和mqtt服务器发送的信息;

解码单元,用于对所述终端和mqtt服务器发送的信息进行解码;

校验单元,用于校验所述消息的topic是否需要处理。

参考图7,如附图7所示为本发明提供的一种服务端的一个示例的结构示意图,在附图6所示一种服务端结构的基础上,所述服务端还包括:

解密单元,用于对所述终端注册到mqtt服务器时发送的信息进行aes解密;

查询单元,用于根据所述终端注册到mqtt服务器时发送的信息查询bd判断所述终端是否已经注册;

返回单元,用于将所述mqtt服务器生成的密钥信息返回给所述终端。

基于上述技术方案,本发明实施例基于mqtt服务器实现终端与服务端的数据交互,基于moqtt服务器的微消息队列,终端可在网络差的环境中正常上传数据至服务端,基于mqtt服务器的长连接机制,只需建立一次连接和关闭连接,使得服务端连接mqtt服务器,终端连接mqtt服务器,且服务端和终端均采用心跳机制断线重连,保证了上述数据交互方式的高性能和高可用性。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,这些均属于本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1