CN116708565A - 一种基于mqtt服务的客户端与主题隔离方法及系统 - Google Patents
一种基于mqtt服务的客户端与主题隔离方法及系统 Download PDFInfo
- Publication number
- CN116708565A CN116708565A CN202310849690.7A CN202310849690A CN116708565A CN 116708565 A CN116708565 A CN 116708565A CN 202310849690 A CN202310849690 A CN 202310849690A CN 116708565 A CN116708565 A CN 116708565A
- Authority
- CN
- China
- Prior art keywords
- mqtt
- client
- service
- marking
- subscription
- 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
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000004891 communication Methods 0.000 claims abstract description 37
- 238000004806 packaging method and process Methods 0.000 claims abstract description 6
- 238000002955 isolation Methods 0.000 claims description 9
- 238000012423 maintenance Methods 0.000 abstract description 11
- 238000005516 engineering process Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
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/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种基于MQTT服务的客户端与主题隔离方法及系统,所述方法包括:配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;对MQTT服务线程中的订阅/发布主题进行前置量的标记;将标记后的订阅/发布主题打包为订阅/发布主题模块;将订阅/发布主题模块加载到共享内存主题存储管理模块中;标记MQTT服务线程对应的MQTT客户端的ID;将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。本申请采用项目与特定MQTT服务绑定的方式,实现了项目MQTT服务的统一维护,降低了项目的运维成本。
Description
技术领域
本申请涉及消息发布/订阅传输协议技术领域,尤其涉及一种基于MQTT服务的客户端与主题隔离方法及系统。
背景技术
MQTT(消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议,用以实现设备之间的通讯。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居及一些小型化设备中已广泛使用。
在部署一套MQTT服务时,不同的项目或者相同的项目在使用相同的MQTT服务的过程中,可能存在项目发布与订阅主题相同的现象,或存在匹配所有主题的现象,该情况会导致项目之间数据不隔离与脏数据的产生。如果采用一个项目部署一套MQTT服务的方式,会产生新的问题,例如增加服务器硬件的采购成本,与增加MQTT服务维护的成本。基于以上情况,本申请要从技术上解决在部署一套MQTT服务时,实现项目之间数据逻辑软隔离,项目绑定的MQTT服务统一的维护问题,避免一个项目搭建一套MQTT服务的解决方案。
发明内容
本申请提供了一种基于MQTT服务的客户端与主题隔离方法,以解决在部署一套MQTT服务时,不同的项目或者相同的项目在使用相同的MQTT服务的过程中,可能导致项目之间数据不隔离与脏数据的产生的问题。
一方面,本申请提供一种基于MQTT服务的客户端与主题隔离方法,包括:
配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;
基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;
标记每个MQTT服务线程,建立至少一个MQTT客户端和与其对应的MQTT服务线程之间的通讯;
对MQTT服务线程中的订阅/发布主题进行前置量的标记;
将标记后的订阅/发布主题打包为订阅/发布主题模块;
将订阅/发布主题模块加载到共享内存主题存储管理模块中;
标记MQTT服务线程对应的MQTT客户端的ID;
将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。
可选的,所述标记每个MQTT服务线程的步骤包括:
采用通讯服务IP与端口相结合的方式标记当前MQTT服务线程,所述MQTT服务线程支持独立的启动、停止、订阅/发布服务。
可选的,所述对MQTT服务线程中的订阅/发布主题进行前置量的标记的步骤包括:
选择不同的前置标记对应不同的MQTT通讯服务线程的订阅/发布主题,所述线程主题的前置标记按照一定规则组合而成。
可选的,所述标记MQTT服务线程对应的MQTT客户端的ID的步骤包括:
按照线程主题的前置标记规则标记独立的MQTT服务线程对应的客户端ID,标记后的客户端ID用于明确MQTT客户端与MQTT服务线程的所属关系。
另一方面,本申请提供一种基于MQTT服务的客户端与主题隔离系统,包括MQTT客户端模块、端口标记线程管理模块、主题标记模块、订阅/发布主题模块、共享内存主题存储管理模块、客户端ID标记模块和共享内存MQTT客户端信息管理模块,其中:
所述MQTT客户端模块包括数个MQTT客户端和对应的独立的MQTT服务线程;
所述端口标记线程管理模块被配置为标记MQTT服务线程;
所述主题标记模块被配置为对MQTT服务线程中的订阅/发布主题进行前置量的标记;
所述订阅/发布主题模块被配置为打包标记后的订阅/发布主题;
所述共享内存主题存储管理模块被配置为存储和管理订阅/发布主题模块;
所述客户端ID标记模块被配置为标记MQTT服务线程对应的MQTT客户端的ID;
所述共享内存MQTT客户端信息管理模块被配置为存储和管理MQTT客户端ID。
由以上技术方案可知,本申请提供一种基于MQTT服务的客户端与主题隔离方法及系统,所述方法包括:配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;标记每个MQTT服务线程,建立至少一个MQTT客户端和与其对应的MQTT服务线程之间的通讯;对MQTT服务线程中的订阅/发布主题进行前置量的标记;将标记后的订阅/发布主题打包为订阅/发布主题模块;将订阅/发布主题模块加载到共享内存主题存储管理模块中;标记MQTT服务线程对应的MQTT客户端的ID;将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。
本申请最大限度的利用了硬件资源,一台硬件服务器上可以运行多个独立的MQTT服务,减少了服务器硬件的采购成本;本申请还采用项目与特定MQTT服务绑定的方式,实现了项目MQTT服务的统一维护,降低了项目的运维成本。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种基于MQTT服务的客户端与主题隔离方法的流程示意图。
具体实施方式
下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。仅是与权利要求书中所详述的、本申请的一些方面相一致的系统和方法的示例。
现有的基于MQTT协议实现MQTT服务平台与主题隔离的技术方案,主要有以下两种方法:
第一种是平台化技术解决方案,该解决方案主要采用了Docker技术,将MQTT通讯服务镜像与MQ服务镜像存储到特定的服务器上。采用动态化的解决方案,需要服务时,动态拉取镜像部署MQTT服务与MQ消息服务,并将MQTT服务与MQ消息服务进行动态绑定。该方案可以部署到同一台服务器上,或者不同的服务器上。该方案实现了MQTT服务统一的运维服务,但该方案技术壁垒较高。
第二种是单机部署技术解决方案,该方案将MQTT服务程序部署到单独的服务器上,用于MQTT服务通讯,或者将MQTT服务做成镜像文件在独立的服务器上部署多套,实现单一服务器上多个Docker MQTT服务的部署,该方式同样实现了MQTT服务主题的隔离。该方案若采用Docker部署多个服务,则运维管理复杂,在实际项目中很少使用。若采用一台服务器上,部署一套MQTT服务,则很难满足多个项目的同时使用,若多个项目同时使用一套MQTT服务,项目很容易接收到脏数据。
基于上述原因,本申请提供一种基于MQTT服务的客户端与主题隔离方法,参见图1,包括:
配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;
在一种实施例中,数个MQTT客户端及其对应的独立MQTT通讯服务的设置使得本申请可以满足同时使用多个项目的服务需求,现有的通讯协议往往十分复杂且庞大,因此同时调用多个项目已经成为了普遍需求。
基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;
在一种实施例中,基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程解决了现有技术中在部署一套MQTT服务时,不同的项目或者相同的项目在使用相同的MQTT服务的过程中,可能存在项目发布与订阅主题相同的现象,或存在匹配所有主题的现象。
在一种实施例中,所述独立的MQTT服务线程使得通讯数据相互之间产生隔离,不会出现数据之间互相污染的情况,避免了项目接收到脏数据的情况出现,优化了现有技术。
标记每个MQTT服务线程,建立至少一个MQTT客户端和与其对应的MQTT服务线程之间的通讯;
在一种实施例中,MQTT服务线程为本申请的维护对象,与现有技术中对一个或者多个MQTT主程序进行维护相比,本申请维护MQTT服务线程使得本申请操作简单,工作量小。
对MQTT服务线程中的订阅/发布主题进行前置量的标记;
在一种实施例中,本申请通过对MQTT服务线程中的订阅/发布主题进行前置量的标记以区分每个MQTT服务线程,避免MQTT服务线程与MQTT客户端出现通讯错误的情况。
将标记后的订阅/发布主题打包为订阅/发布主题模块;
将订阅/发布主题模块加载到共享内存主题存储管理模块中;
在一种实施例中,所述共享内存主题存储管理模块可以对其中存储的数个标记后的订阅/发布主题进行管理,在其他模块发出调用或通讯的命令时进行相应响应。
标记MQTT服务线程对应的MQTT客户端的ID;
在一种实施例中,本申请通过对MQTT订阅/发布主题标记与MQTT客户端标记实现共享内存隔离方式,该方式对计算机的资源利用率高。
将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。
在一种实施例中,所述共享内存MQTT客户端信息管理模块可以对其中存储的数个MQTT客户端ID进行管理,在其他模块发出调用或通讯的命令时进行相应响应。
进一步的,所述标记每个MQTT服务线程的步骤包括:
采用通讯服务IP与端口相结合的方式标记当前MQTT服务线程,所述MQTT服务线程支持独立的启动、停止、订阅/发布服务。
在一种实施例中,还可以采用端口标记的方法标记当前线程,或者按照特定的规则标记当前线程,只需满足将MQTT服务线程与MQTT客户端对应起来的条件即可。
进一步的,所述对MQTT服务线程中的订阅/发布主题进行前置量的标记的步骤包括:
选择不同的前置标记对应不同的MQTT通讯服务线程的订阅/发布主题,所述线程主题的前置标记按照一定规则组合而成。
在一种实施例中,订阅/发布主题为“/xxx/xx/...”,标记后的主题变为“/TAGXX/xxx/xx/...”,其中“TAGXX”表示对不同的MQTT服务线程的订阅/发布主题进行的前置变量标记,不同的MQTT服务线程对应的订阅/发布主题前置标记不同。
在一种实施例中,不同MQTT服务线程订阅/发布的前置主题标记可以按照“&”+“线程通讯端口”的方式进行前置标记。订阅/发布主题标记后进入订阅/发布主题模块,最终被加载到共享内存主题存储管理模块中。
进一步的,所述标记MQTT服务线程对应的MQTT客户端的ID的步骤包括:
按照线程主题的前置标记规则标记独立的MQTT服务线程对应的客户端ID,标记后的客户端ID用于明确MQTT客户端与MQTT服务线程的所属关系。
在一种实施例中,端口标记线程管理模块中的MQTT服务线程中的原始MQTT客户端ID为“XXX”,标记后为“TAGPORT—XXX”。“TAGPORT—”表示为客户端标记变量。
在一种实施例中,MQTT服务线程标中的MQTT客户端ID标记,可以按照“端口号”+“—”的方式,用于标记MQTT客户端属于那个MQTT服务线程,不同的“端口号”表示MQTT服务线程对外提供的服务端口号。
另一方面,本申请提供一种基于MQTT服务的客户端与主题隔离系统,包括MQTT客户端模块、端口标记线程管理模块、主题标记模块、订阅/发布主题模块、共享内存主题存储管理模块、客户端ID标记模块和共享内存MQTT客户端信息管理模块,其中:
所述MQTT客户端模块包括数个MQTT客户端和对应的独立的MQTT服务线程;
所述端口标记线程管理模块被配置为标记MQTT服务线程;
所述主题标记模块被配置为对MQTT服务线程中的订阅/发布主题进行前置量的标记;
所述订阅/发布主题模块被配置为打包标记后的订阅/发布主题;
所述共享内存主题存储管理模块被配置为存储和管理订阅/发布主题模块;
所述客户端ID标记模块被配置为标记MQTT服务线程对应的MQTT客户端的ID;
所述共享内存MQTT客户端信息管理模块被配置为存储和管理MQTT客户端ID。
本申请提供的一种基于MQTT服务的客户端与主题隔离方法及系统,所述方法包括:配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;标记每个MQTT服务线程,建立至少一个MQTT客户端和与其对应的MQTT服务线程之间的通讯;对MQTT服务线程中的订阅/发布主题进行前置量的标记;将标记后的订阅/发布主题打包为订阅/发布主题模块;将订阅/发布主题模块加载到共享内存主题存储管理模块中;标记MQTT服务线程对应的MQTT客户端的ID;将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。
本申请的关键之处在于MQTT多线程服务方法、订阅/发布主题前置标记方法和MQTT多线程客户ID标记方法。同时采用以上三种措施,可以在MQTT主程序中启动多个独立MQTT通讯服务,服务之间订阅/发布主题与通讯服务之间的客户端ID标记实现软隔离。本申请实现了一种MQTT多线程服务之间数据的软隔离方法,可以最大限度的使用计算机资源,与此同时可以降低MQTT服务支持多项目时的软件开发与软件维护成本。
以上显示和描述了本申请的基本原理和主要特征以及本申请的优点,对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。
Claims (5)
1.一种基于MQTT服务的客户端与主题隔离方法,其特征在于,包括:
配置数个MQTT客户端,每个MQTT客户端对应设置有一个独立的MQTT通讯服务;
基于每个独立的MQTT通讯服务生成一个独立的MQTT服务线程;
标记每个MQTT服务线程,建立至少一个MQTT客户端和与其对应的MQTT服务线程之间的通讯;
对MQTT服务线程中的订阅/发布主题进行前置量的标记;
将标记后的订阅/发布主题打包为订阅/发布主题模块;
将订阅/发布主题模块加载到共享内存主题存储管理模块中;
标记MQTT服务线程对应的MQTT客户端的ID;
将MQTT客户端ID加载到共享内存MQTT客户端信息管理模块中。
2.根据权利要求1所述的一种基于MQTT服务的客户端与主题隔离方法,其特征在于,所述标记每个MQTT服务线程的步骤包括:
采用通讯服务IP与端口相结合的方式标记当前MQTT服务线程,所述MQTT服务线程支持独立的启动、停止、订阅/发布服务。
3.根据权利要求1所述的一种基于MQTT服务的客户端与主题隔离方法,其特征在于,所述对MQTT服务线程中的订阅/发布主题进行前置量的标记的步骤包括:
选择不同的前置标记对应不同的MQTT通讯服务线程的订阅/发布主题,所述线程主题的前置标记按照一定规则组合而成。
4.根据权利要求1所述的一种基于MQTT服务的客户端与主题隔离方法,其特征在于,所述标记MQTT服务线程对应的MQTT客户端的ID的步骤包括:
按照线程主题的前置标记规则标记独立的MQTT服务线程对应的客户端ID,标记后的客户端ID用于明确MQTT客户端与MQTT服务线程的所属关系。
5.一种基于MQTT服务的客户端与主题隔离系统,其特征在于,包括MQTT客户端模块、端口标记线程管理模块、主题标记模块、订阅/发布主题模块、共享内存主题存储管理模块、客户端ID标记模块和共享内存MQTT客户端信息管理模块,其中:
所述MQTT客户端模块包括数个MQTT客户端和对应的独立的MQTT服务线程;
所述端口标记线程管理模块被配置为标记MQTT服务线程;
所述主题标记模块被配置为对MQTT服务线程中的订阅/发布主题进行前置量的标记;
所述订阅/发布主题模块被配置为打包标记后的订阅/发布主题;
所述共享内存主题存储管理模块被配置为存储和管理订阅/发布主题模块;
所述客户端ID标记模块被配置为标记MQTT服务线程对应的MQTT客户端的ID;
所述共享内存MQTT客户端信息管理模块被配置为存储和管理MQTT客户端ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849690.7A CN116708565A (zh) | 2023-07-12 | 2023-07-12 | 一种基于mqtt服务的客户端与主题隔离方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849690.7A CN116708565A (zh) | 2023-07-12 | 2023-07-12 | 一种基于mqtt服务的客户端与主题隔离方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116708565A true CN116708565A (zh) | 2023-09-05 |
Family
ID=87841208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310849690.7A Pending CN116708565A (zh) | 2023-07-12 | 2023-07-12 | 一种基于mqtt服务的客户端与主题隔离方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116708565A (zh) |
-
2023
- 2023-07-12 CN CN202310849690.7A patent/CN116708565A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108494817B (zh) | 数据传输方法、相关装置及系统 | |
US10038762B2 (en) | Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange pattern | |
US9195527B2 (en) | System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture | |
US8806506B2 (en) | System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture | |
CN101651698B (zh) | 基于nio和io的面向发布订阅系统的传输方法 | |
CN110677277B (zh) | 数据处理方法、装置、服务器和计算机可读存储介质 | |
US8135785B2 (en) | System and method for processing messages using pluggable protocol processors in a service-oriented pipeline architecture | |
CN100450105C (zh) | 一种基于java消息服务的同步消息接口实现方法 | |
CN113965628B (zh) | 消息调度方法、服务器和存储介质 | |
CN111901230A (zh) | 一种支持设备接入验证的物联网网关、系统和设备接入验证的方法 | |
EP3488581A1 (en) | Efficient transport of encapsulated media traffic over a datagram based transport layer | |
CN112256246A (zh) | 一种用于电力系统中支持跨语言调用的微服务集成架构 | |
CN111240858A (zh) | 事件调度方法及组件 | |
CN114024910A (zh) | 一种用于金融交易系统的极低延时可靠通讯系统及方法 | |
CN116800787A (zh) | 一种基于以太网通讯协议的车载通信方法及系统 | |
CN116708565A (zh) | 一种基于mqtt服务的客户端与主题隔离方法及系统 | |
CN105049255A (zh) | 一种网元数据同步的方法及其装置 | |
CN112165529A (zh) | 一种低成本跨网络数据交换的方法、装置、设备和介质 | |
CN110008032B (zh) | 一种通信方式的实现方法及电子设备 | |
CN117440446B (zh) | 一种基于数据分发服务的数据传输方法和装置 | |
CN104270444A (zh) | 一种可配置手机应用菜单的方法 | |
US20230171830A1 (en) | Apparatus and method for configuring data communication between robot components in different networks | |
CN113242278B (zh) | 基于电影云端制作异构网络的通信方法、装置和电子设备 | |
CN110324367B (zh) | 远程监控系统及其监控方法、装置、存储介质和处理器 | |
CN101692644B (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 |