CN111131501B - 一种基于mqtt协议的消息推送系统及方法 - Google Patents
一种基于mqtt协议的消息推送系统及方法 Download PDFInfo
- Publication number
- CN111131501B CN111131501B CN201911413738.XA CN201911413738A CN111131501B CN 111131501 B CN111131501 B CN 111131501B CN 201911413738 A CN201911413738 A CN 201911413738A CN 111131501 B CN111131501 B CN 111131501B
- Authority
- CN
- China
- Prior art keywords
- message
- server
- client
- push
- notification
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提出一种基于MQTT协议的消息推送系统及方法,包括:客户端和服务端,客户端包括有应用客户端和通知推送客户端,应用客户端包括发布客户端和订阅客户端,服务端包括推送服务端和MQTT服务器群;发布客户端向推送服务端发布主题消息,推送服务端接收发布的主题消息并使用消息管理服务管理和存储主题消息,以及向MQTT服务器群发送主题消息通知;MQTT服务器群接收并转发主题消息通知至订阅客户端;订阅客户端根据主题消息通知,通过通知推送服务从消息管理服务拉取存储的订阅主题消息后,并向推送服务端发送删除请求信息;推送服务端接收删除请求信息,在消息管理服务中删除存储的相应主题消息,并告知订阅客户端删除结果。
Description
技术领域
本发明涉及消息推送技术领域,具体涉及一种基于MQTT协议的消息推送系统及方法。
背景技术
随着移动互联网、物联网的快速发展,获取信息的方式越来越多,从主动获取信息逐渐演变为被动接受信息,信息量也呈现出爆发式的增长,传统的信息获取基于http协议,必须由客户端发起请求建立连接,再通过服务端将数据返回给客户端,每一次信息的获取均要重新建立连接和获取数据,在客户端用户大量同时在线的情况下,无法支撑消息的推送,而且存在消息重复、消息遗漏的缺陷。
因此如何保证消息不重复接收、消息必达和解决大量用户同时在线是目前急需解决的问题。
发明内容
本发明针对上述问题,有必要提供一种基于MQTT协议的消息推送系统及方法,其能够保证消息不重复接收、消息不存在遗漏或丢失以及支持大量用户同时在线。
本发明第一方面提出一种基于MQTT协议的消息推送系统,所述消息推送系统包括:客户端和服务端,所述客户端包括有应用客户端和通知推送客户端,所述通知推送客户端,内部封装有Mosquitto客户端,用于实现MQTT协议;
所述服务端包括推送服务端和MQTT服务器群,所述推送服务端包括消息管理服务和通知推送服务,所述消息管理服务,用于存储和管理所述应用客户端用户的主题消息的消息队列;其中,每个应用客户端用户在所述消息管理服务中都有相应的消息队列,并且所述应用客户端用户的主题消息使用设置的redis数据库进行缓存;所述MQTT服务器群包括多个MQTT服务器;所述MQTT服务器群,用于检查MQTT服务器的状态并返回状态信息至所述通知推送服务,以建立与所述应用客户端之间的长连接;以及根据接收的所述推送服务端发送的主题消息通知,向所述订阅客户端推送主题消息通知;
所述应用客户端,用于向所述通知推送服务发送连接请求信息,接收所述通知推送服务返回的MQTT服务器的连接信息,并根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;
所述通知推送服务,接收所述应用客户端发送的连接请求信息,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息;根据所述MQTT服务器群返回的状态信息判断相应的MQTT服务器的状态是否可用,在状态可用时向所述应用客户端返回该MQTT服务器的连接信息;以及用于将订阅的主题消息过所述通知推送客户端推送给所述订阅客户端;
所述应用客户端,包括发布客户端和订阅客户端;所述发布客户端,用于向所述推送服务端发布主题消息;所述订阅客户端,用于根据所述MQTT服务器转发的主题消息通知通过所述通知推送客户端从所述推送服务端拉取订阅的主题消息,以及向所述推送服务端发送删除主题消息的请求消息和获知删除结果;
所述推送服务端,用于接收所述发布客户端发布的主题消息并通过所述消息管理服务进行管理和存储,并向所述MQTT服务器发送主题消息通知;用于通过所述通知推送服务从所述消息管理服务中拉取所述订阅客户端订阅的主题消息推送给所述订阅客户端;还用于通过所述消息管理服务从相应消息队列和redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
进一步的,所述服务端还包括消息队列服务器群,所述推送服务端还包括异步消息处理服务和推送管理服务; 当所述客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
进一步的,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;所述长连接建立还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
进一步的,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列。
进一步的,所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端用户发送消息。
本发明还提出一种基于MQTT协议的消息推送方法,包括以下步骤:
步骤0,配置客户端和服务端;
所述客户端包括有应用客户端和通知推送客户端,所述应用客户端包括发布客户端和订阅客户端,所述通知推送客户端,内部封装有Mosquitto客户端,采用MQTT协议实现所述应用客户端与所述推送服务端的长连接建立;所述服务端包括推送服务端和MQTT服务器群;其中,所述推送服务端包括消息管理服务、通知推送服务和推送管理服务;所述MQTT服务器群包括多个MQTT服务器;
步骤1,建立长连接;
S101,所述应用客户端向所述推动服务端的通知推送服务发送连接请求信息;
S102,所述通知推送服务接收到连接请求信息后,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息以检查相应的MQTT服务器的状态;所述负载算法包括:随机分配、顺序分配、空闲率分配;
S103,所述MQTT服务器群检查相应的MQTT服务器的状态并返回状态信息至所述通知推送服务;
S104,所述通知推送服务判断相应的MQTT服务器的状态,若状态为可用,则向所述应用客户端返回该MQTT服务器连接信息,所述应用客户端根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;若状态为不可用,则循环执行S102、S103,直到所述通知推送服务判断有相应的MQTT服务器的状态为可用;
步骤2,推送消息;
S201,所述发布客户端向所述推送服务端发布主题消息,所述推送服务端接收发布的主题消息,通过所述消息管理服务中相应消息队列、redis数据库管理和存储所述发布客户端用户的主题消息,并向所述MQTT服务器群发送主题消息通知;
S202,所述MQTT服务器群接收主题消息通知并向所述订阅客户端推送主题消息通知;
S203,所述订阅客户端根据推送的主题消息通知,通过所述通知推送服务从所述消息管理服务中拉取订阅的主题消息,并向所述推送服务端发送删除请求消息;
S204,所述推送服务端接收删除请求消息,通过所述消息管理服务从相应消息队列、redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
进一步的,所述推送服务端还包括推送管理服务和异步消息处理服务,所述服务端还包括消息队列服务器群;
当所述应用客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
进一步的,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列;
所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端发送消息。
进一步的,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;
在长连接建立过程中还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
本发明具有突出的实质性特点和显著的进步,具体的说:
(1)通知推送服务具备可扩展功能,采用负载算法获取一台MQTT服务器信息后,通过MQTT服务器检查该MQTT服务器的状态是否可用,在状态为可用的情况下建立应用客户端与该MQTT服务器的长连接,并使用建立的长连接进行主题消息的推送,以及消息管理服务可根据应用客户端的用户量进行扩展,存储和管理应用客户端用户主题消息的消息队列,保证大量用户同时在线的消息推送;
(2)通过发布客户端向推送服务端发布主题消息后,所述推送服务端接收发布的主题消息,通过消息管理服务进行管理和存储后,向MQTT服务器群发送主题消息通知;MQTT服务器群接收主题消息通知并向订阅客户端推送主题消息通知,订阅客户端根据该主题消息通知通过通知推送服务拉取订阅的主题消息,采用推拉结合的交互模式保证主题消息的不遗漏或丢失,实现消息必达;
(3)订阅客户端在拉取订阅主题消息后,还向推送服务端发送删除请求信息,推送服务端根据该删除请求信息,对存储的相应主题消息进行删除,采用先拉取后删除的模式保证主题消息不重复。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出本发明一种基于MQTT协议的消息推送系统结构示意图;
图2示出本发明一种基于MQTT协议的消息推送方法中长连接建立过程流程图;
图3示出本发明一种基于MQTT协议的消息推送方法中消息推送过程流程图;
图4示出本发明消息管理服务与redis数据库之间的扩展架构图;
图5示出本发明通知推送服务与MQTT服务器群、应用客户端之间的扩展架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
如图1所示,本发明第一方面提出一种基于MQTT协议的消息推送系统,所述消息推送系统包括:客户端和服务端,所述客户端包括有应用客户端和通知推送客户端,所述通知推送客户端,内部封装有Mosquitto客户端,用于实现MQTT协议;
所述服务端包括推送服务端和MQTT服务器群,所述推送服务端包括消息管理服务和通知推送服务,所述消息管理服务,用于存储和管理所述应用客户端用户的主题消息的消息队列;其中,每个应用客户端用户在所述消息管理服务中都有相应的消息队列,并且所述应用客户端用户的主题消息使用设置的redis数据库进行缓存;所述MQTT服务器群包括多个MQTT服务器;所述MQTT服务器群,用于检查MQTT服务器的状态并返回状态信息至所述通知推送服务,以建立与所述应用客户端之间的长连接;以及根据接收的所述推送服务端发送的主题消息通知,向所述订阅客户端推送主题消息通知;
所述应用客户端,用于向所述通知推送服务发送连接请求信息,接收所述通知推送服务返回的MQTT服务器的连接信息,并根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;
所述通知推送服务,接收所述应用客户端发送的连接请求信息,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息;根据所述MQTT服务器群返回的状态信息判断相应的MQTT服务器的状态是否可用,在状态可用时向所述应用客户端返回该MQTT服务器的连接信息;以及用于将订阅的主题消息过所述通知推送客户端推送给所述订阅客户端;
所述应用客户端,包括发布客户端和订阅客户端;所述发布客户端,用于向所述推送服务端发布主题消息;所述订阅客户端,用于根据所述MQTT服务器转发的主题消息通知通过所述通知推送客户端从所述推送服务端拉取订阅的主题消息,以及向所述推送服务端发送删除主题消息的请求消息和获知删除结果;
所述推送服务端,用于接收所述发布客户端发布的主题消息并通过所述消息管理服务进行管理和存储,并向所述MQTT服务器发送主题消息通知;用于通过所述通知推送服务从所述消息管理服务中拉取所述订阅客户端订阅的主题消息推送给所述订阅客户端;还用于通过所述消息管理服务从相应消息队列和redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
具体的,所述服务端还包括消息队列服务器群,所述推送服务端还包括异步消息处理服务和推送管理服务;当所述客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
需要说明的是,推送管理服务内部实现了推送系统的RPC接口,对外提供获取消息、删除消息、发送消息三类RPC形式接口,屏蔽推送平系统的内部构成以及使用流程。
具体的,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;所述长连接建立还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
具体的,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列。
具体的,所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端用户发送消息。
本发明还提出一种基于MQTT协议的消息推送方法,包括以下步骤:
步骤0,配置客户端和服务端;
所述客户端包括有应用客户端和通知推送客户端,所述应用客户端包括发布客户端和订阅客户端,所述通知推送客户端,内部封装有Mosquitto客户端,采用MQTT协议实现所述应用客户端与所述推送服务端的长连接建立;所述服务端包括推送服务端和MQTT服务器群;其中,所述推送服务端包括消息管理服务、通知推送服务和推送管理服务;所述MQTT服务器群包括多个MQTT服务器;
步骤1,建立长连接;
如图2所示,所述长连接的建立过程包括:
S101,所述应用客户端向所述推动服务端的通知推送服务发送连接请求信息;所述客户端包括发布客户端和订阅客户端;
S102,所述通知推送服务接收到连接请求信息后,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息以检查相应的MQTT服务器的状态;所述MQTT服务器群包括多个MQTT服务器;所述负载算法包括:随机分配、顺序分配、空闲率分配;
S103,所述MQTT服务器群检查相应的MQTT服务器的状态并返回状态信息至所述通知推送服务;
S104,所述通知推送服务判断相应的MQTT服务器的状态,若状态为可用,则向所述应用客户端返回该MQTT服务器连接信息,所述应用客户端根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;若状态为不可用,则循环执行S102、S103,直到所述通知推送服务判断有相应的MQTT服务器状态为可用;
步骤2,推送消息;
如图3所示,所述消息的推送过程包括:
S201,所述发布客户端向所述推送服务端发布主题消息,所述推送服务端接收发布的主题消息,通过所述消息管理服务中相应消息队列、redis数据库管理和存储所述发布客户端用户的主题消息,并向所述MQTT服务器群发送主题消息通知;
S202,所述MQTT服务器群接收主题消息通知并向所述订阅客户端推送主题消息通知;
S203,所述订阅客户端根据推送的主题消息通知,通过所述通知推送服务从所述消息管理服务中拉取订阅的主题消息,并向所述推送服务端发送删除请求消息;
S204,所述推送服务端接收删除请求消息,通过所述消息管理服务从相应消息队列、redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
具体的,所述推送服务端还包括推送管理服务和异步消息处理服务,所述服务端还包括消息队列服务器群;
当所述应用客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
如图4所示,具体的,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列;
需要说明的是,消息管理服务主要功能是管理所有应用客户端用户的消息队列,在推送系统中,每个应用客户端用户都在消息管理服务中有一个消息队列,用于存放发给该应用客户端的所有消息。在消息管理服务中,消息主要使用Redis数据库进行缓存,一组Redis数据库成为一个分片,一组内部的Redis数据库可以采用主备方式保障数据的安全,可根据需要采用一主一备或者一主多备。消息管理服务是一个可扩展的架构,每个消息管理服务实例管理所有的数据分片,每个分片维护一定数量应用客户端用户的消息队列;消息管理服务可根据应用客户端的用户量以及当前投入的主机数量进行动态扩展,系统最小只需要一台主机,即可完成部署,在实际运营过程中,服务的数量可根据具体需求动态扩展,该服务在扩展时不需要使用方做任何修改。消息管理服务采用一致性hash和动态可扩展技术,可在服务不停止的情况下动态增加节点。
如图5所示,所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端用户发送消息。
需要说明的是,通知推送服务主要是给在线用户发送通知,它将调用方提供的内容不做任何修改直接转发给订阅客户端,该服务需要使用开源软件mosquito,完成在线用户的通知推送功能,mosquito实现了mqtt协议,是移动互联网行业应用较为广泛的通信协议。通知推送服务在功能上不仅负责管理所有的mosquito,而且要完成通过mosquito给在线用户发送通知的功能。
具体的,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;
在长连接建立过程中还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
本发明通知推送服务具备可扩展功能,采用负载算法获取一台MQTT服务器信息后,通过MQTT服务器检查该MQTT服务器的状态是否可用,在状态为可用的情况下建立应用客户端与该MQTT服务器的长连接,并使用建立的长连接进行主题消息的推送,以及消息管理服务可根据应用客户端的用户量进行扩展,存储和管理应用客户端用户主题消息的消息队列,保证大量用户同时在线的消息推送;通过发布客户端向推送服务端发布主题消息后,所述推送服务端接收发布的主题消息,通过消息管理服务进行管理和存储后,向MQTT服务器群发送主题消息通知;MQTT服务器群接收主题消息通知并向订阅客户端推送主题消息通知,订阅客户端根据该主题消息通知通过通知推送服务拉取订阅的主题消息,采用推拉结合的交互模式保证主题消息的不遗漏或丢失,实现消息必达;订阅客户端在拉取订阅主题消息后,还向推送服务端发送删除请求信息,订阅客户端根据该删除请求信息,对存储的相应主题消息进行删除,采用先拉取后删除的模式保证主题消息不重复。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于MQTT协议的消息推送系统,其特征在于,所述消息推送系统包括:客户端和服务端,所述客户端包括有应用客户端和通知推送客户端,所述通知推送客户端,内部封装有Mosquitto客户端,用于实现MQTT协议;
所述服务端包括推送服务端和MQTT服务器群,所述推送服务端包括消息管理服务和通知推送服务,所述消息管理服务,用于存储和管理所述应用客户端用户的主题消息的消息队列;其中,每个应用客户端用户在所述消息管理服务中都有相应的消息队列,并且所述应用客户端用户的主题消息使用设置的redis数据库进行缓存;所述MQTT服务器群包括多个MQTT服务器;所述MQTT服务器群,用于检查MQTT服务器的状态并返回状态信息至所述通知推送服务,以建立与所述应用客户端之间的长连接;以及根据接收的所述推送服务端发送的主题消息通知,向订阅客户端推送主题消息通知;
所述应用客户端,用于向所述通知推送服务发送连接请求信息,接收所述通知推送服务返回的MQTT服务器的连接信息,并根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;
所述通知推送服务,接收所述应用客户端发送的连接请求信息,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息;根据所述MQTT服务器群返回的状态信息判断相应的MQTT服务器的状态是否可用,在状态可用时向所述应用客户端返回该MQTT服务器的连接信息;以及用于将订阅的主题消息通过所述通知推送客户端推送给所述订阅客户端;
所述应用客户端,包括发布客户端和订阅客户端;所述发布客户端,用于向所述推送服务端发布主题消息;所述订阅客户端,用于根据所述MQTT服务器转发的主题消息通知通过所述通知推送客户端从所述推送服务端拉取订阅的主题消息,以及向所述推送服务端发送删除主题消息的请求消息和获知删除结果;
所述推送服务端,用于接收所述发布客户端发布的主题消息并通过所述消息管理服务进行管理和存储,并向所述MQTT服务器发送主题消息通知;用于通过所述通知推送服务从所述消息管理服务中拉取所述订阅客户端订阅的主题消息推送给所述订阅客户端;还用于通过所述消息管理服务从相应消息队列和redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
2.根据权利要求1所述的消息推送系统,其特征在于,所述服务端还包括消息队列服务器群,所述推送服务端还包括异步消息处理服务和推送管理服务;当所述客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
3.根据权利要求1所述的消息推送系统,其特征在于,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;所述长连接建立还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
4.根据权利要求1所述的消息推送系统,其特征在于,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列。
5.根据权利要求1所述的消息推送系统,其特征在于,所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端用户发送消息。
6.一种基于MQTT协议的消息推送方法,其特征在于,包括以下步骤:
步骤0,配置客户端和服务端;
所述客户端包括有应用客户端和通知推送客户端,所述应用客户端包括发布客户端和订阅客户端,所述通知推送客户端,内部封装有Mosquitto客户端,采用MQTT协议实现所述应用客户端与推送服务端的长连接建立;所述服务端包括推送服务端和MQTT服务器群;其中,所述推送服务端包括消息管理服务、通知推送服务和推送管理服务;所述MQTT服务器群包括多个MQTT服务器;
步骤1,建立长连接;
S101,所述应用客户端向所述推送服务端的通知推送服务发送连接请求信息;
S102,所述通知推送服务接收到连接请求信息后,通过负载算法获取一台MQTT服务器信息,并向所述MQTT服务器群发送状态检查信息以检查相应的MQTT服务器的状态;所述负载算法包括:随机分配、顺序分配、空闲率分配;
S103,所述MQTT服务器群检查相应的MQTT服务器的状态并返回状态信息至所述通知推送服务;
S104,所述通知推送服务判断相应的MQTT服务器的状态,若状态为可用,则向所述应用客户端返回该MQTT服务器连接信息,所述应用客户端根据所述连接信息通过所述通知推送客户端建立与相应的MQTT服务器的长连接;若状态为不可用,则循环执行S102、S103,直到所述通知推送服务判断有相应的MQTT服务器的状态为可用;
步骤2,推送消息;
S201,所述发布客户端向所述推送服务端发布主题消息,所述推送服务端接收发布的主题消息,通过所述消息管理服务中相应消息队列、redis数据库管理和存储所述发布客户端用户的主题消息,并向所述MQTT服务器群发送主题消息通知;
S202,所述MQTT服务器群接收主题消息通知并向所述订阅客户端推送主题消息通知;
S203,所述订阅客户端根据推送的主题消息通知,通过所述通知推送服务从所述消息管理服务中拉取订阅的主题消息,并向所述推送服务端发送删除请求消息;
S204,所述推送服务端接收删除请求消息,通过所述消息管理服务从相应消息队列、redis数据库删除存储的相应主题消息,并告知所述订阅客户端删除结果。
7.根据权利要求6所述的消息推送方法,其特征在于,所述推送服务端还包括异步消息处理服务,所述服务端还包括消息队列服务器群;
当所述应用客户端有大量的消息请求时,所述推送管理服务通过统一的入口服务将消息请求发送给所述消息队列服务器群,然后所述异步消息处理服务实时监听所述消息队列服务器群的消息队列,一旦消息队列中有消息时,采用异步任务手段进行消息的削峰处理。
8.根据权利要求6所述的消息推送方法,其特征在于,所述消息管理服务具有可扩展功能,根据所述应用客户端的用户量以及投入的所述服务端的主机数量,并且采用一致性hash和动态可扩展技术进行动态扩展;所述redis数据库采用主备方式保障数据安全,一组redis数据库为一个数据分片,每个消息管理服务管理所有的数据分片,每个数据分片维护一定数量应用客户端用户的消息队列;
所述通知推送服务具有可扩展功能,每个通知推送服务均可与多个MQTT服务器进行通信连接和消息交互,且通过相应的MQTT服务器给在线的应用客户端用户发送消息。
9.根据权利要求6所述的消息推送方法,其特征在于,所述推送服务端还包括ID生成器服务;所述服务端还包括数据库服务器群;
在长连接建立过程中还包括:所述应用客户端向所述推送服务端进行用户注册,所述推送服务端的所述ID生成器服务根据所述应用客户端的用户产生具有全局唯一标识功能的ID,用于标识所述应用客户端与所述推送服务端之间的长连接和所述应用客户端用户的身份;所述数据库服务器群存储所述应用客户端用户注册的基础配置信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413738.XA CN111131501B (zh) | 2019-12-31 | 2019-12-31 | 一种基于mqtt协议的消息推送系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911413738.XA CN111131501B (zh) | 2019-12-31 | 2019-12-31 | 一种基于mqtt协议的消息推送系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111131501A CN111131501A (zh) | 2020-05-08 |
CN111131501B true CN111131501B (zh) | 2022-03-15 |
Family
ID=70506609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911413738.XA Active CN111131501B (zh) | 2019-12-31 | 2019-12-31 | 一种基于mqtt协议的消息推送系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111131501B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111555965B (zh) * | 2020-05-11 | 2022-05-27 | 南京南瑞信息通信科技有限公司 | 一种适用于iOS客户端的消息推送方法及系统 |
CN111343289B (zh) * | 2020-05-22 | 2020-09-25 | 苏宁智能终端有限公司 | 基于mqtt协议的消息推送方法及系统 |
CN111711663A (zh) * | 2020-05-26 | 2020-09-25 | 北京金山云网络技术有限公司 | 发布及订阅服务的处理方法、装置及电子设备 |
CN111669315B (zh) * | 2020-06-04 | 2022-11-18 | 拉扎斯网络科技(上海)有限公司 | 消息推送方法、装置、系统、电子设备及可读存储介质 |
CN111818129B (zh) * | 2020-06-16 | 2023-04-28 | 上海申铁信息工程有限公司 | 一种基于mqtt协议的设备监控方法与装置 |
CN111885134A (zh) * | 2020-07-14 | 2020-11-03 | 上海趣致网络科技股份有限公司 | 一种用于自动售货机的远程控制系统及方法 |
CN111935296B (zh) * | 2020-08-18 | 2023-02-03 | 成都长虹网络科技有限责任公司 | 一种高可用无限mqtt消息服务扩容的系统 |
CN111949302B (zh) * | 2020-09-18 | 2022-05-31 | 苏州浪潮智能科技有限公司 | 一种用于工业计算机管理系统的即时性更新方法、系统和设备 |
CN112351068A (zh) * | 2020-09-29 | 2021-02-09 | 苏宁云计算有限公司 | 信息同步方法、系统、装置、计算机设备和存储介质 |
CN112261146B (zh) * | 2020-10-23 | 2022-05-24 | 杭州卷积云科技有限公司 | 一种基于消息通信和文件传输的边云协同通信系统及方法 |
CN112506915B (zh) * | 2020-10-27 | 2024-05-10 | 百果园技术(新加坡)有限公司 | 一种应用数据的管理系统以及处理方法、装置和服务器 |
CN112714026A (zh) * | 2021-01-21 | 2021-04-27 | 广州朗国电子科技有限公司 | 一种mqtt协议消费者的集群方法、装置及储存介质 |
CN113965612A (zh) * | 2021-02-01 | 2022-01-21 | 南京云思创智信息科技有限公司 | 基于消息队列遥测传输的微表情识别方法 |
CN112948738A (zh) * | 2021-03-18 | 2021-06-11 | 四川虹美智能科技有限公司 | 基于mqtt的数据处理方法和装置 |
CN113132487A (zh) * | 2021-04-21 | 2021-07-16 | 深圳市乐唯科技开发有限公司 | 一种精简的分布式长连接的数据传输方法及系统 |
CN113572815B (zh) * | 2021-06-25 | 2023-07-07 | 广州大学 | 一种跨异构平台的通信技术方法、系统及介质 |
CN113596140B (zh) * | 2021-07-26 | 2023-09-22 | 深圳Tcl新技术有限公司 | 基于mqtt协议的信息发布方法及装置 |
CN114025002A (zh) * | 2021-11-05 | 2022-02-08 | 深圳市宏电技术股份有限公司 | 一种基于mqtt信息传输的方法、系统及通信设备 |
CN114338082A (zh) * | 2021-11-30 | 2022-04-12 | 福建超智集团有限公司 | 一种智能网关安全连接云平台方法和系统 |
CN114629935A (zh) * | 2022-02-17 | 2022-06-14 | 深圳市双合电气股份有限公司 | 一种生产管理事件消息实时传输处理系统和方法 |
CN114827171B (zh) * | 2022-03-23 | 2023-12-15 | 青岛中科曙光科技服务有限公司 | 信息同步方法、装置、计算机设备和存储介质 |
CN114900453B (zh) * | 2022-04-21 | 2023-11-17 | 成都陆迪盛华科技有限公司 | 在不同客户端之间下发音频监听指令的物联网式解决方法 |
CN114979260B (zh) * | 2022-05-12 | 2023-09-15 | 深圳市绿联科技股份有限公司 | 一种基于协议的通信方法、装置、电子设备和存储介质 |
CN116436970B (zh) * | 2022-06-29 | 2023-12-12 | 上海铁路通信有限公司 | 一种基于mqtt协议的多客户端多串口通信方法及系统 |
CN115086380B (zh) * | 2022-07-25 | 2022-11-15 | 苏州思萃工业互联网技术研究所有限公司 | 基于能源管理平台的数据传输系统及方法 |
CN115378989B (zh) * | 2022-08-10 | 2023-08-15 | 深圳华芯信息技术股份有限公司 | 基于唤醒通道的mqtt主题订阅系统、方法、终端及介质 |
CN117575756A (zh) * | 2023-11-14 | 2024-02-20 | 中拍平台网络科技股份有限公司 | 一种网络拍卖竞价推送方法、装置、计算机设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967556A (zh) * | 2015-05-25 | 2015-10-07 | 北京蝉鸣信息科技有限公司 | 一种基于社交的聊天装置及其交流方法 |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN107637038A (zh) * | 2015-06-09 | 2018-01-26 | 英特尔公司 | 用于管理安全发布‑订阅系统的生命周期的系统、装置和方法 |
CN107809489A (zh) * | 2017-11-17 | 2018-03-16 | 南京感度信息技术有限责任公司 | 一种基于mqtt协议的消息推送系统 |
CN110113362A (zh) * | 2019-05-29 | 2019-08-09 | 杭州海兴泽科信息技术有限公司 | 一种基于mqtt协议的消息实时推送方法 |
CN209373598U (zh) * | 2019-02-21 | 2019-09-10 | 深圳市甲易科技有限公司 | 实时数据与外部数据关联处理系统 |
CN110460638A (zh) * | 2019-07-11 | 2019-11-15 | 深圳职业技术学院 | 消息推送方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2695379A4 (en) * | 2011-04-01 | 2015-03-25 | Mixaroo Inc | SYSTEM AND METHOD FOR PROCESSING, STORING, INDEXING AND REAL TIME DISTRIBUTION OF SEGMENTED VIDEO |
EP3278213A4 (en) * | 2015-06-05 | 2019-01-30 | C3 IoT, Inc. | SYSTEMS, METHODS AND DEVICES FOR AN APPLICATION DEVELOPMENT PLATFORM OF AN INTERNET OF THE THINGS OF A COMPANY |
US9906477B2 (en) * | 2015-10-28 | 2018-02-27 | International Business Machines Corporation | Distributing retained messages information in a clustered publish/subscribe system |
JP6741853B2 (ja) * | 2016-07-14 | 2020-08-19 | コンヴィーダ ワイヤレス, エルエルシー | サブスクリプションおよび通知サービス |
-
2019
- 2019-12-31 CN CN201911413738.XA patent/CN111131501B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967556A (zh) * | 2015-05-25 | 2015-10-07 | 北京蝉鸣信息科技有限公司 | 一种基于社交的聊天装置及其交流方法 |
CN107637038A (zh) * | 2015-06-09 | 2018-01-26 | 英特尔公司 | 用于管理安全发布‑订阅系统的生命周期的系统、装置和方法 |
CN106130882A (zh) * | 2016-07-13 | 2016-11-16 | 北京百度网讯科技有限公司 | 用于传输消息的方法和装置 |
CN107809489A (zh) * | 2017-11-17 | 2018-03-16 | 南京感度信息技术有限责任公司 | 一种基于mqtt协议的消息推送系统 |
CN209373598U (zh) * | 2019-02-21 | 2019-09-10 | 深圳市甲易科技有限公司 | 实时数据与外部数据关联处理系统 |
CN110113362A (zh) * | 2019-05-29 | 2019-08-09 | 杭州海兴泽科信息技术有限公司 | 一种基于mqtt协议的消息实时推送方法 |
CN110460638A (zh) * | 2019-07-11 | 2019-11-15 | 深圳职业技术学院 | 消息推送方法及装置 |
Non-Patent Citations (1)
Title |
---|
"云平台中消息系统的设计与实现";童俊领;《电子科技大学硕士学位论文》;20180915;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111131501A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111131501B (zh) | 一种基于mqtt协议的消息推送系统及方法 | |
CN100514968C (zh) | 离线消息的处理方法和即时消息服务器 | |
US6850968B1 (en) | Reduction of network server loading | |
US7805489B2 (en) | Electronic mail communications system with client email internet service provider (ISP) polling application and related methods | |
US7624147B2 (en) | Efficient notification of new electronic mail arrival | |
EP2073429A1 (en) | Data synchronous method, system and apparatus | |
WO2018214865A1 (zh) | 消息回执的处理方法、相关装置、存储介质和处理器 | |
US9172765B2 (en) | Polling-based secure network message notification system and method with performance enhancing features | |
US7882188B2 (en) | Symbol-based message transmission method and system | |
US20090030917A1 (en) | Multimedia messaging service-based database synchronization | |
CN102045270A (zh) | 聊天服务器系统、构建聊天服务器系统的方法以及聊天系统 | |
US20140143202A1 (en) | Regulated Texting Solution for Mobile Devices | |
JP2013504806A (ja) | ファイルディレクトリに基づいたファイルの転送のための方法、装置、およびシステム | |
WO2007107064A1 (fr) | Procédé et système de distribution de contenu dynamique | |
CN111193789B (zh) | 订阅信息推送方法、装置、计算机设备和可读存储介质 | |
CN112565220A (zh) | 一种基于国网隔离装置安全的http服务网关实现方法 | |
CN109947081B (zh) | 网联车辆控制方法及装置 | |
CA2534543A1 (en) | Synchronization extent of mail client based on data link characteristics | |
CN101159676A (zh) | 一种数据传输的方法及系统 | |
CN109063140A (zh) | 一种数据查询方法、中转服务器及计算机可读存储介质 | |
CN108718274A (zh) | 一种即时通讯消息的防丢失方法 | |
CA2647019C (en) | Electronic mail communications system with client email internet service provider (isp) polling application and related methods | |
US10862842B2 (en) | Managing specialized objects in a message store | |
KR20120052444A (ko) | 모바일 메시징 서비스에서의 파일 전송을 지원하는 파일 전송 관리 시스템 및 파일 전송 관리 방법 | |
CN105049255A (zh) | 一种网元数据同步的方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |