[发明专利]一种基于路由模式、MQTT协议的IOT集群通讯方法有效
申请号: | 202010991432.9 | 申请日: | 2020-09-21 |
公开(公告)号: | CN111935028B | 公开(公告)日: | 2021-01-08 |
发明(设计)人: | 钱佳俊;王磊 | 申请(专利权)人: | 浙江百应科技有限公司 |
主分类号: | H04L12/801 | 分类号: | H04L12/801;H04L29/08;H04L29/06 |
代理公司: | 杭州浙言专利代理事务所(普通合伙) 33370 | 代理人: | 易朝晖 |
地址: | 311121 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 路由 模式 mqtt 协议 iot 集群 通讯 方法 | ||
本发明公开了一种基于路由模式、MQTT协议的IOT集群通讯方法,应用于服务端,包括:服务端向设备端发送消息;当设备端不在线时,服务端将消息发送给第二IOT,第二IOT将消息持久化保存在本地;第二IOT接收到设备端上线的消息后,第二IOT将消息路由至第一IOT中,第一IOT将消息持久化保存在本地;第一IOT将消息通过MQTT Publish进行发送;设备端接收到消息。
技术领域
本发明涉及物联网通讯领域,尤其涉及一种基于路由模式、MQTT协议的IOT集群通讯方法。
背景技术
目前属于移动物联网的时代,海量物联网设备接入IOT来实现通信,IOT服务端大多采用MQTT协议来实现。由于海量设备的接入,MQTTBroker的集群化是必不可少的。MQTTBroker集群的难点在于MQTT协议支持持久化session机制,然而设备的连接是无状态的,因此就涉及到了离线消息的存储和分发以及集群内部如何通信的问题。
目前市场上的MQTT Broker集群解决方案大都基于广播模式,即当某个服务收到了一条消息,立刻把消息在集群内广播出去,各个服务查找本地在线的订阅者,若存在则将消息发送出去。这种方式简单粗暴的解决了上面提到的几个问题,实现较为简单,但是会造成一条消息在整个集群内部都流转一遍导致网络开销过大的问题。
另外,MQTT共享订阅是一种高级的负载均衡模式,订阅同一个主题的客户端可以轮流收到Broker推送的消息。避免Broker消息量过大、客户端产生消息堆积的问题。然而MQTT Broker集群由于基于广播模式的机制,无法实现MQTT协议中的共享订阅机制,导致期望共享订阅的订阅者集群不断收到重复的消息。
发明内容
本发明要解决的技术问题,在于提供一种基于路由模式、MQTT协议的IOT集群通讯方法,解决现有MQTT集群内部通信网络开销过大以及共享订阅的订阅者不断收到重复消息的技术问题。
为实现上述目的,本发明采用下述技术方案:
第一方面,本发明提供一种基于路由模式、MQTT协议的IOT集群通讯方法,应用于服务端,所述方法包括:
服务端向设备端发送消息;
当设备端不在线时,服务端将所述消息发送给第二IOT,所述第二IOT将所述消息持久化保存在本地;
所述第二IOT接收到设备端上线的消息后,所述第二IOT将所述消息路由至第一IOT中,所述第一IOT将所述消息持久化保存在本地;
所述第一IOT将所述消息通过MQTT Publish进行发送;
所述设备端接收到所述消息。
在上述方案中,所述设备端基于MQTT协议与所述第一IOT建立长连接,包括:
所述设备端经过nginx由nginx最小连接算法与所述第一IOT连接,所述第一IOT将所述设备端的设备信息、所述第一IOT的IP信息存储于redis中,并基于netty内部协议将所述设备端上线的消息转发至各个IOT服务上。
在上述方案中,所述方法还包括:
所述第一IOT将所述消息通过MQTT Publish进行发送之前,所述第一IOT注册重试任务;
所述设备端收到所述第一IOT发送的消息后,所述设备端返回消息ACK至所述第一IOT;
所述第一IOT清除重试任务并删除持久化保存在本地的消息。
在上述方案中,所述第一IOT基于MQTT的头部MessageID和设备端的设备信息寻找对应的重试任务。
第二方面,本发明提供一种基于路由模式、MQTT协议的IOT集群通讯方法,应用于设备端,所述方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江百应科技有限公司,未经浙江百应科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010991432.9/2.html,转载请声明来源钻瓜专利网。