基于MQTT和Kafka高并发场景下的消息路由方法技术

技术编号:19352112 阅读:1691 留言:0更新日期:2018-11-07 17:29
本发明专利技术公开了基于MQTT和Kafka高并发场景下的消息路由方法,该方法充分利用MQTT轻量级协议在通信中支持数百万个设备同时连接的特点,引入Kafka集群以弥补MQTT协议不支持负载均衡的缺陷,并通过磁盘顺序写速度快的特点来应对高并发场景下的应用需求,大大提高了消息的传送速度,支持实时数据流的保存和异步处理。

【技术实现步骤摘要】
基于MQTT和Kafka高并发场景下的消息路由方法
本专利技术涉及数据通信领域,特别涉及基于MQTT和Kafka高并发场景下的消息路由方法。
技术介绍
随着互联网技术的飞速发展,智能终端设备的普及,以及业务需求的多样化,终端设备之间数据通信的重要性日益凸显,特别是在通过多种设备进行数据采集后再由计算设备进行统一处理的应用场景,如何保证实际应用中数据获取的实时性,高并发场景下的可用性,不稳定网络环境下离线消息存储成为了解决数据通信问题的关键。MQTT协议是一种基于“发布/订阅”模式的即时通讯协议,可有效实现一对多或多对多的通信。它设计在TCP协议之上,具有轻量、简单和易于实现的特点,旨在为低带宽和不稳定的网络环境中的终端设备提供可靠的网络服务。由于其消息标题可短至2个字节,因而具有非常小的通信开销。并且,其在设计之初就专门针对低功耗目标而进行了优化。更为独特的是,为了满足不同的场景需求,MQTT支持三种不同的服务质量。而且提供有遗嘱消息和会话保存功能,以针对不稳定的网络环境下,客户端与服务器断开后重新连接的解决方案。Kafka是一个支持分区存储、多副本的分布式消息系统,采用发布/订阅的本文档来自技高网...

【技术保护点】
1.基于MQTT和Kafka高并发场景下的消息路由方法,其特征在于,包括以下步骤:利用Kafka的分区机制接收高并发场景下的用户消息,并以顺序写的方式写入磁盘,同时基于发布/订阅模式的消息队列进行保存,利用Kafka代理集群实现负载均衡;然后通过Kafka Stream将消息检索过滤,持久化存入数据库,并保持对接收端状态的监听;将过滤后的数据发送到MQTT服务器中,保存在不同的Topic下;最后由MQTT协议中订阅了不同Topic的接收端进行匹配,获取消息,并且接收端在每次上线或下线时都将发送状态消息以更新在线列表。

【技术特征摘要】
1.基于MQTT和Kafka高并发场景下的消息路由方法,其特征在于,包括以下步骤:利用Kafka的分区机制接收高并发场景下的用户消息,并以顺序写的方式写入磁盘,同时基于发布/订阅模式的消息队列进行保存,利用Kafka代理集群实现负载均衡;然后通过KafkaStream将消息检索过滤,持久化存入数据库,并保持对接收端状态的监听;将过滤后的数据发送到MQTT服务器中,保存在不同的Topic下;最后由MQTT协议中订阅了不同Topic的接收端进行匹配,获取消息,并且接收端在每次上线或下线时都将发送状态消息以更新在线列表。2.根据权利要求1所述基于MQTT和Kafka高并发场景下的消息路由方法,其特征在于,所述利用Kafka的分区机制接收高并发场景下的用户消息,是依赖于磁盘顺序写的方式来存储和缓存消息的,且具有一定的时间期限;用户在客户端进行消息的发送时,指定消息要送达的分区,将partitioner.class设置为自定义的分区,并在partition()中设定消息发送到分区的具体规则。3.根据权利要求2所述基于MQTT和Kafka高并发场景下的消息路由方法,其特征在于,所述用户消息,其记录以Key-Value键值对的方式进行发送,将发送者ID和接受者ID一同作为Key进行发布。4.根据权利要求1所述基于MQTT和Kafka高并发场景下的消息路由方法,其特征在于,所述通过KafkaStream将消息检索过滤,持久化存入数据库,并保持对接收端状态的监听,具体为:对保存在每个分区下的消息记录,通过KafkaStream建立一个流处理拓扑,并将键值对反序列化为数据对象的方式进行处理;所述流处理拓扑中包含有一个Source处理节点...

【专利技术属性】
技术研发人员:陆璐黄佳文
申请(专利权)人:华南理工大学中山市华南理工大学现代产业技术研究院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1