CN113965620A - 一种基于mqtt和redis的消息推送系统 - Google Patents
一种基于mqtt和redis的消息推送系统 Download PDFInfo
- Publication number
- CN113965620A CN113965620A CN202111123746.8A CN202111123746A CN113965620A CN 113965620 A CN113965620 A CN 113965620A CN 202111123746 A CN202111123746 A CN 202111123746A CN 113965620 A CN113965620 A CN 113965620A
- Authority
- CN
- China
- Prior art keywords
- mqtt
- redis
- message
- module
- account
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 6
- 230000002265 prevention Effects 0.000 claims abstract description 6
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000001815 facial effect Effects 0.000 claims description 2
- 230000006854 communication Effects 0.000 abstract description 6
- 238000004891 communication Methods 0.000 abstract description 5
- 238000012423 maintenance Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于MQTT和REDIS的消息推送系统,涉及数据通信技术领域。本发明包括客户端模块、MQTT服务端模块,Kafka模块,REDIS模块及业务服务模块,用于实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失;本发明基于MQTT和REDIS的消息推送系统实现离线数据的存储和推送,保证数据的不丢失,并且基于MQTT的消息精准及时推送方法通过MQTT协议的主题订阅机制,实现了对账号的信息及时推送。
Description
技术领域
本发明属于数据通信技术领域,特别是涉及一种基于MQTT和REDIS的消息推送系统。
背景技术
MQTT(消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议,MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:①、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;②、对负载内容屏蔽的消息传输;③、使用TCP/IP提供网络连接;④、有三种消息发布服务质量:⑤、小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量;⑥、使用LastWill和Testament特性通知有关各方客户端异常中断的机制;Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用,它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便;
随着IOT物联网技术的发展,智能化现场作业终端的普及,终端设备与服务器之间的消息推送的及时性、稳定性成为了新的问题,如何保证实际应用中数据获取的实时性,高并发场景下的可用性,不稳定网络环境下离线消息的存储成为了解决数据通信问题的关键;为此,我们提出一种基于MQTT和REDIS的消息推送系统。
发明内容
本发明的目的在于提供一种基于MQTT和REDIS的消息推送系统,为了解决消息的实时推送及离线消息存储问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为一种基于MQTT和REDIS的消息推送系统,包括客户端模块、MQTT服务端模块,Kafka模块,REDIS模块及业务服务模块,用于实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失。
优选地,所述用户通过应用登录成功后,携带账号发起设备接入请求信息,MQTT服务器模块接收到请求后,首先校验设备有效性,校验通过后建立与用户设备之间的连接,同时更新维护设备的在线状态信息到REDIS模块。
优选地,所述设备与MQTT服务模块建立连接后,主动订阅预定的主题信息,MQTT服务器模块维护主题与账号之间的关系,以便精准推送相关消息给该用户。
优选地,所述设备定时发送心跳以此来维护账号的上、下线状态,同时MQTT服务根据REDIS存储的账号状态来实现离线消息的存储,保证不丢失消息。
优选地,所述采用Kafka模块来维护MQTT服务集群化部署,实现MQTT服务的负载均衡与高并发。
所述实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失的方法,包括如下步骤:
Step1:首先分别启动MQTT服务集群、REDIS集群和KAFKA集群;
Step2:让MQTT服务连接REDIS集群,同时作为KAFKA消费者,根据事先预定的主题订阅KAFKA;
Step3:用户通过客户端模块成功登录设备,登录成功后客户端订阅账号主题及所属机构主题,订阅成功后,MQTT服务器会维护账号与主题之间关系,以及账号在线的状态,一起维护到REDIS上;
Step4:业务服务发送业务数据消息给Kafka,MQTT会及时消费Kafka的业务服务的消息,同时根据消息的指定的MQTT主题及REDIS存储的账号的状态信息,选择直接发送或者离线存储,如果离线存储将会在下次登录时推送到对应账号上。
优选地,所述Step3中用户通过客户端模块成功登录设备,在进行设备登录时需进行身份验证,所述身份验证包括面部识别验证和数字账户密码验证的方式。
本发明具有以下有益效果:
1、本发明基于MQTT的消息精准及时推送方法通过MQTT协议的主题订阅机制,实现了对账号的信息及时推送。
2、本发明基于MQTT和REDIS的消息推送系统,实现离线数据的存储和推送,保证数据的不丢失。
3、本发明基于MQTT和KAFKA实现MQTT服务的集群化部署,保证高并发的可用性及负载均衡。
4、本发明基于MQTT和REDIS的消息推送系统运行操作便捷,运行效率高,运行成本低,推广价值高。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于MQTT和REDIS的消息推送系统的运行模块流程图;
图2为本发明基于MQTT的消息精准及时推送方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1-2所示,本发明为一种基于MQTT和REDIS的消息推送系统,包括客户端模块、MQTT服务端模块,Kafka模块,REDIS模块及业务服务模块,用于实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失;
其中,用户通过应用登录成功后,携带账号发起设备接入请求信息,MQTT服务器模块接收到请求后,首先校验设备有效性,校验通过后建立与用户设备之间的连接,同时更新维护设备的在线状态信息到REDIS模块;
其中,设备与MQTT服务模块建立连接后,主动订阅预定的主题信息,MQTT服务器模块维护主题与账号之间的关系,以便精准推送相关消息给该用户;
其中,设备定时发送心跳以此来维护账号的上、下线状态,同时MQTT服务根据REDIS存储的账号状态来实现离线消息的存储,保证不丢失消息;
其中,采用Kafka模块来维护MQTT服务集群化部署,实现MQTT服务的负载均衡与高并发。
基于MQTT和REDIS消息推送系统,用于实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失的方法,包括客户端、MQTT服务端,Kafka,REDIS及业务服务,主要步骤如下:
1、首先启动MQTT服务集群、REDIS集群、KAFKA集群;
2、让MQTT服务连接REDIS集群,同时作为KAFKA消费者,根据事先预定的主题订阅KAFKA;
3、用户通过客户端成功登录设备,登录成功后客户端订阅账号主题及所属机构主题,订阅成功后,MQTT服务器会维护账号与主题之间关系,以及账号在线的状态,一起维护到REDIS上;
4、业务服务发送业务数据消息给Kafka,MQTT会及时消费Kafka的业务服务的消息,同时根据消息的指定的MQTT主题及REDIS存储的账号的状态信息,选择直接发送或者离线存储,如果离线存储将会在下次登录时推送到对应账号上。
其中,用户通过客户端模块成功登录设备,在进行设备登录时需进行身份验证,身份验证包括面部识别验证和数字账户密码验证的方式。
本实施例中,REDIS支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器,这使得REDIS可执行单层树复制,存盘可以有意无意的对数据进行写操作,由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录,同步对读取操作的可扩展性和数据冗余很有帮助,同时,REDIS提供五种数据类型:string,hash,list,set及zset(sorted set);string是最简单的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似,但它的功能更丰富;list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字;set是集合,和数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key理解为集合的名字;zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序,可以理解了有两列的mysql表,一列存value,一列存顺序,操作中key理解为zset的名字。
本实施例中,实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe),其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者;MQTT传输的消息分为:主题(Topic)和负载(payload)两部分,①、Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);②、payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (7)
1.一种基于MQTT和REDIS的消息推送系统,其特征在于:包括客户端模块、MQTT服务端模块,Kafka模块,REDIS模块及业务服务模块,用于实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失。
2.根据权利要求1所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述用户通过应用登录成功后,携带账号发起设备接入请求信息,MQTT服务器模块接收到请求后,首先校验设备有效性,校验通过后建立与用户设备之间的连接,同时更新维护设备的在线状态信息到REDIS模块。
3.根据权利要求1所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述设备与MQTT服务模块建立连接后,主动订阅预定的主题信息,MQTT服务器模块维护主题与账号之间的关系,以便精准推送相关消息给该用户。
4.根据权利要求1所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述设备定时发送心跳以此来维护账号的上、下线状态,同时MQTT服务根据REDIS存储的账号状态来实现离线消息的存储,保证不丢失消息。
5.根据权利要求1所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述采用Kafka模块来维护MQTT服务集群化部署,实现MQTT服务的负载均衡与高并发。
6.根据权利要求1所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述实现基于MQTT和REDIS在用户在线和离线状态下消息能够精准推送及消息不丢失的方法,包括如下步骤:
Step1:首先分别启动MQTT服务集群、REDIS集群和KAFKA集群;
Step2:让MQTT服务连接REDIS集群,同时作为KAFKA消费者,根据事先预定的主题订阅KAFKA;
Step3:用户通过客户端模块成功登录设备,登录成功后客户端订阅账号主题及所属机构主题,订阅成功后,MQTT服务器会维护账号与主题之间关系,以及账号在线的状态,一起维护到REDIS上;
Step4:业务服务发送业务数据消息给Kafka,MQTT会及时消费Kafka的业务服务的消息,同时根据消息的指定的MQTT主题及REDIS存储的账号的状态信息,选择直接发送或者离线存储,如果离线存储将会在下次登录时推送到对应账号上。
7.根据权利要求6所述的一种基于MQTT和REDIS的消息推送系统,其特征在于,所述Step3中用户通过客户端模块成功登录设备,在进行设备登录时需进行身份验证,所述身份验证包括面部识别验证和数字账户密码验证的方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123746.8A CN113965620A (zh) | 2021-09-24 | 2021-09-24 | 一种基于mqtt和redis的消息推送系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111123746.8A CN113965620A (zh) | 2021-09-24 | 2021-09-24 | 一种基于mqtt和redis的消息推送系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113965620A true CN113965620A (zh) | 2022-01-21 |
Family
ID=79462694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111123746.8A Pending CN113965620A (zh) | 2021-09-24 | 2021-09-24 | 一种基于mqtt和redis的消息推送系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113965620A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
-
2021
- 2021-09-24 CN CN202111123746.8A patent/CN113965620A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115914246A (zh) * | 2022-10-08 | 2023-04-04 | 广州市玄武无线科技股份有限公司 | 离线消息的点对点通信方法、系统、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108234816B (zh) | 一种监控设备之间监控资源信息实时同步的方法及装置 | |
CN108768826A (zh) | 基于MQTT和Kafka高并发场景下的消息路由方法 | |
US20180367610A1 (en) | Data storage method and server applicable to distributed server cluster | |
US6928467B2 (en) | Apparatus and methods for providing data synchronization by facilitating data synchronization system design | |
CN111787066A (zh) | 一种基于大数据、ai的物联网数据平台 | |
US8224886B2 (en) | System for an open architecture deployment platform with centralized synchronization | |
US11929873B1 (en) | OPC UA-based centralized user configuration method and system for time-sensitive network | |
CN107579791B (zh) | 适用于单向通讯网络的卫星在轨遥测数据实时监测系统 | |
CN111338812A (zh) | 数据处理方法及装置 | |
CN110336702A (zh) | 一种消息中间件的系统和实现方法 | |
CN109462640B (zh) | 一种元数据同步方法、数据端、交互系统及介质 | |
CN101902473A (zh) | 基于网格gis的数据同步更新实现方法 | |
CN113595806B (zh) | 一种基于opcua与mqtt协议的配网物联网通讯架构方法 | |
CN113965620A (zh) | 一种基于mqtt和redis的消息推送系统 | |
CN114866528A (zh) | 一种基于MQTT和Websocket的数据通讯方法 | |
CN113468221A (zh) | 一种基于kafka消息数据总线的系统集成方法 | |
CN111277483A (zh) | 一种多端消息的同步方法、服务器及可存储介质 | |
CN108040041A (zh) | 一种基于业务驱动的图像差异传输协议设计系统及方法 | |
CN105141687A (zh) | 一种生产消息的方法 | |
CN116389454A (zh) | 数据下载系统 | |
Lin et al. | Data synchronization algorithm for IoT gateway and platform | |
Hu et al. | Research and implementation of campus information push system based on WebSocket | |
CN116032867A (zh) | 会话处理方法、装置、电子设备及存储介质 | |
KR100844361B1 (ko) | 자료 동기화 게이트웨이 시스템 및 방법 | |
CN112688998B (zh) | 一种可配置带权限的主数据订阅推送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |