[发明专利]基于MQTT和Kafka高并发场景下的消息路由方法有效
| 申请号: | 201810465578.2 | 申请日: | 2018-05-16 |
| 公开(公告)号: | CN108768826B | 公开(公告)日: | 2021-03-19 |
| 发明(设计)人: | 陆璐;冼允廷;黄佳文 | 申请(专利权)人: | 华南理工大学;中山市华南理工大学现代产业技术研究院 |
| 主分类号: | H04L12/58 | 分类号: | H04L12/58;H04L29/08;H04L12/803;H04L12/24 |
| 代理公司: | 广州市华学知识产权代理有限公司 44245 | 代理人: | 林梅繁 |
| 地址: | 510640 广*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 mqtt kafka 并发 场景 消息 路由 方法 | ||
本发明公开了基于MQTT和Kafka高并发场景下的消息路由方法,该方法充分利用MQTT轻量级协议在通信中支持数百万个设备同时连接的特点,引入Kafka集群以弥补MQTT协议不支持负载均衡的缺陷,并通过磁盘顺序写速度快的特点来应对高并发场景下的应用需求,大大提高了消息的传送速度,支持实时数据流的保存和异步处理。
技术领域
本发明涉及数据通信领域,特别涉及基于MQTT和Kafka高并发场景下的消息路由方法。
背景技术
随着互联网技术的飞速发展,智能终端设备的普及,以及业务需求的多样化,终端设备之间数据通信的重要性日益凸显,特别是在通过多种设备进行数据采集后再由计算设备进行统一处理的应用场景,如何保证实际应用中数据获取的实时性,高并发场景下的可用性,不稳定网络环境下离线消息存储成为了解决数据通信问题的关键。
MQTT协议是一种基于“发布/订阅”模式的即时通讯协议,可有效实现一对多或多对多的通信。它设计在TCP协议之上,具有轻量、简单和易于实现的特点,旨在为低带宽和不稳定的网络环境中的终端设备提供可靠的网络服务。由于其消息标题可短至2个字节,因而具有非常小的通信开销。并且,其在设计之初就专门针对低功耗目标而进行了优化。更为独特的是,为了满足不同的场景需求,MQTT支持三种不同的服务质量。而且提供有遗嘱消息和会话保存功能,以针对不稳定的网络环境下,客户端与服务器断开后重新连接的解决方案。
Kafka是一个支持分区存储、多副本的分布式消息系统,采用发布/订阅的消息处理模式,能有效应对代理宕机后的数据处理问题。Kafka以集群的方式运行,由多个broker共同构成。生产者将消息发送到特定的主题,再由订阅主题的消费者以poll的方式进行消费。其中,每个主题又被分成一个或多个的分区,每个分区由一系列有序、不可变的消息组成,是一个有序队列。特别的是,Kafka中以顺序写的方式写入磁盘,因而速度要比随机写入磁盘的方式快得多。除此之外,Kafka还引入消费组的概念,每个消费者都属于一个特定的消费组,同一分区下的一条消息只能被同一个消费组内一个消费者消费,但多个消费组可同时消费这一消息。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供基于MQTT和Kafka高并发场景下的消息路由方法,该方法充分利用MQTT轻量级协议在通信中支持数百万个设备同时连接的特点,引入Kafka集群以弥补MQTT协议不支持负载均衡的缺陷,并通过磁盘顺序写速度快的特点来应对高并发场景下的应用需求,大大提高了消息的传送速度,支持实时数据流的保存和异步处理。
本发明的目的通过以下的技术方案实现:
基于MQTT和Kafka高并发场景下的消息路由方法,包括以下步骤:
利用Kafka的分区机制接收高并发场景下的用户消息,并以顺序写的方式写入磁盘,同时基于发布/订阅模式的消息队列进行保存,利用Kafka代理集群实现负载均衡;
然后通过Kafka Stream将消息检索过滤,持久化存入数据库,并保持对接收端状态的监听;将过滤后的数据发送到MQTT服务器中,保存在不同的Topic下;
最后由MQTT协议中订阅了不同Topic的接收端进行匹配,获取消息,并且接收端在每次上线或下线时都将发送状态消息以更新在线列表。
所述利用Kafka的分区机制接收高并发场景下的用户消息,是依赖于磁盘顺序写的方式来存储和缓存消息的,且具有一定的时间期限;由于Kafka中每个Topic下都有一个或多个分区,因而用户在客户端进行消息的发送时,可指定消息要送达的分区,将partitioner.class设置为自定义的分区策略实现,并在partition()中设定消息发送到分区的具体规则。因为在Kafka中创建主题是一种较为影响性能的操作,所以并不在Kafka代理中对每个用户发起的会话请求都创建相应的主题,而采用一个主题下多个分区的方法,基于多个broker保存分区完成备份,并实现负载均衡。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学;中山市华南理工大学现代产业技术研究院,未经华南理工大学;中山市华南理工大学现代产业技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810465578.2/2.html,转载请声明来源钻瓜专利网。





