CN117938844A - 信息传输方法、装置、服务器及存储介质 - Google Patents

信息传输方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN117938844A
CN117938844A CN202211320547.0A CN202211320547A CN117938844A CN 117938844 A CN117938844 A CN 117938844A CN 202211320547 A CN202211320547 A CN 202211320547A CN 117938844 A CN117938844 A CN 117938844A
Authority
CN
China
Prior art keywords
node
target
topic
target node
request
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
Application number
CN202211320547.0A
Other languages
English (en)
Inventor
戚培庆
刘海锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huantai Technology Co Ltd
Original Assignee
Shenzhen Huantai Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Huantai Technology Co Ltd filed Critical Shenzhen Huantai Technology Co Ltd
Priority to CN202211320547.0A priority Critical patent/CN117938844A/zh
Publication of CN117938844A publication Critical patent/CN117938844A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种信息传输方法、装置、服务器及存储介质,该方法应用于MQTT服务器,MQTT服务器中部署有第一节点以及与第一节点连接的多个第二节点,方法包括:通过第一目标节点接收目标节点连接的第一目标设备发送的话题发布请求,话题发布请求用于请求发布目标话题的话题消息;通过第一目标节点将话题消息发送至第一目标节点连接的设备中的订阅了目标话题的设备,并将话题发布请求发送至第一节点;通过第一节点将话题发布请求发送至第二目标节点,第二目标节点连接的设备中存在至少一个设备订阅了目标话题;通过第二目标节点将话题消息发送至第二目标节点连接的设备中的订阅了目标话题的设备。本方法可减少MQTT服务器的数据缓存量。

Description

信息传输方法、装置、服务器及存储介质
技术领域
本申请涉及物联网技术领域,更具体地,涉及一种信息传输方法、装置、服务器及存储介质。
背景技术
随着科技水平的快速进步,物联网(Internet of Things,IoT)技术在已经在智能家居、人工智能、车联网、能源和工业制造等领域得到广泛应用。物联网平台作为IoT设备管理的核心平台,需要依赖设备连接服务作为平台和设备通信的桥梁。消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议作为一种安全稳定的远场IoT连接协议,因其稳定可靠和抗弱网等特性被广泛应做设备连接服务中的连接协议。但是,MQTT连接服务集群在实现跨节点发布消息的场景时,需要各个节点缓存大量的路由信息,从而占据较多资源。
发明内容
本申请提出了一种信息传输方法、装置、服务器及存储介质,可以减少MQTT服务器应用于跨节点发布消息的场景时的数据缓存量。
第一方面,本申请实施例提供了一种信息传输方法,应用于消息队列遥测传输MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点,所述方法包括:通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备;通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点;通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题;通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
第二方面,本申请实施例提供了一种信息传输装置,应用于消息队列遥测传输MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点,所述装置包括:请求接收模块、第一发送模块、第二发送模块以及第三发送模块,其中,所述请求接收模块用于通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备;所述第一发送模块用于通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点;所述第二发送模块用于通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题;所述第三发送模块用于通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述第一方面提供的信息传输方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第一方面提供的信息传输方法。
本申请提供的方案,MQTT服务器中部署有第一节点以及与第一节点连接的多个第二节点,通过第一目标节点接收目标节点连接的第一目标设备发送的话题发布请求,话题发布请求用于请求发布目标话题的话题消息,第一目标节点为多个第二节点中的任一节点,第一目标设备为第一目标节点连接的设备中的任一设备;通过第一目标节点基于话题发布请求,将话题消息发送至第一目标节点连接的设备中的订阅了目标话题的设备,并将话题发布请求发送至第一节点;通过第一节点将话题发布请求发送至第二目标节点,第二目标节点为多个第二节点中除第一目标节点以外的节点,且第二目标节点连接的设备中存在至少一个设备订阅了目标话题;通过第二目标节点基于话题发布请求,将话题消息发送至第二目标节点连接的设备中的订阅了目标话题的设备。由此,MQTT服务器在实现跨节点的信息传输时,以上各个第二节点仅需根据话题发布请求,将话题消息发布至与该第二节点连接且订阅了目标话题的设备,以及将话题发布请求转发至第一节点,并由第一节点向其他的第二节点转发话题发布请求,以发布至与其他的第二节点连接且订阅了该目标话题的设备,从而各个第一节点仅需存储其连接的设备的路由信息,而无需保持各个第二节点共享连接的设备的路由信息,进而减少MQTT服务器的数据缓存量,降低资源占用量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了相关技术中的简单多节点模型集群的架构示意图。
图2示出了本申请实施例提供的应用环境的示意图。
图3示出了根据本申请一个实施例的信息传输方法流程图。
图4示出了根据本申请另一个实施例的信息传输方法流程图。
图5示出了根据本申请又一个实施例的信息传输方法流程图。
图6示出了根据本申请一个实施例的信息传输装置的一种框图。
图7是本申请实施例的用于执行根据本申请实施例的信息传输方法的服务器的框图。
图8是本申请实施例的用于保存或者携带实现根据本申请实施例的信息传输方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
目前,MQTT协议作为一种安全稳定的远场IoT连接协议,因其稳定可靠和抗弱网等特性被广泛应做设备连接服务中的连接协议。一般情况下,连接服务主要由协议解析层、消息存储和消息路由层三个模块构成,用于实现物联网平台的设备接入、上下行消息缓存和消息分发控制功能。
现有的基于MQTT的连接服务主要分为两种架构,即单体软件模型和简单多节点模型。单体软件模式的连接服务架构是由一个单体软件组成,即连接服务的三个模块在同一个进程内运行,不具备横向和纵向可扩展性,导致其无法应对海量设备连接应用场景。请参阅图1,图1示出了简单多节点模型集群的架构示意图,在简单多节点模型集群中,所有节点之间相互同步设备链接和话题订阅信息,实现在集群内跨节点订阅和发布消息。简单多节点模型集群可以实现海量设备的连接场景,因此目前的连接服务架构主要采用简单多节点模型集群。但是,为应对海量设备链接场景,简单多节点模型中的每个节点都必须缓存海量路由信息,因而会使得多个节点需要缓存大量的路由信息,从资源上限制了集群的规模和服务能力。
针对上述问题,发明人提出了本申请实施例提供的信息传输方法、装置、服务器以及存储介质,可以在MQTT服务器在实现跨节点的信息传输时,各个第二节点仅需根据话题发布请求,将话题消息发布至与该第二节点连接且订阅了目标话题的设备,以及将话题发布请求转发至第一节点,并由第一节点向其他的第二节点转发话题发布请求,以发布至与其他的第二节点连接且订阅了该目标话题的设备,从而各个第一节点仅需存储其连接的设备的路由信息,而无需保持各个第二节点共享连接的设备的路由信息,进而减少MQTT服务器的数据缓存量,降低资源占用量。其中,具体的信息传输方法在后续的实施例中进行详细的说明。
下面先对本申请实施例涉及的场景进行介绍。
如图2所示,在图2所示的场景中包括MQTT服务器10,MQTT服务器10中部署有第一节点11以及与第一节点连接的多个第二节点12(图2中仅示出3个)。第二节点12用于与IOT设备20连接,并缓存其连接的IOT设备20的路由信息,第二节点12基于缓存的路由信息,可以实现将话题消息分发至连接的IOT设备20中订阅了该话题的IOT设备20;第一节点11用于缓存各个第二节点12连接的IOT设备20的路由信息,以实现将第二节点12发送的话题消息转发至相应的其他的第二节点12,并由其他的第二节点12将话题消息转发至连接的IOT设备20中订阅了该话题的IOT设备20,由此实现跨节点的信息传输,并且无需各个第二节点12共享连接的IOT设备20的路由信息,从而减少MQTT服务器10的数据缓存量,降低资源占用量。
下面再结合附图对本申请实施例提供的信息传输方法进行详细介绍。
请参阅图3,图3示出了本申请一个实施例提供的信息传输方法的流程示意图。在具体的实施例中,所述信息传输方法应用于上述MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点。下面将针对图3所示的流程进行详细的阐述,所述信息传输方法具体可以包括以下步骤:
步骤S110:通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备。
其中,第一节点以及第二节点可以为MQTT服务器中创建的进程。第一节点与连接于第一节点的多个第二节点可以视作连接服务集群,其基本功能是将消息发布者发布的消息转发和投递给连接至各第二节点的消息订阅者。第二节点与第一节点间可以通过节点名称进行通信寻址,以上多个第二节点与第一节点组成一个连接服务集群后,每个第二节点与第一节点建立一个基于传输控制协议(Transmission Control Protocol,TCP)的连接。当然,在有新的第二节点加入连接服务集群时,新的第二节点也会与第一节点建立一个基于TCP的连接。各个第二节点可以基于MQTT协议与接入的设备建立长连接,各个第二节点所连接的设备可以不做限定,例如可以为家居设备、移动终端等。
在本申请实施例中,多个第二节点中的任一第二节点(作为第一目标节点)可以接收其连接的任一设备(作为第一目标设备)发送的话题发布请求,以便将第一目标设备所请求发布的目标话题的话题消息,发送至该第一目标节点下连接的设备中订阅了该目标话题的设备,以及将话题消息发送至其他的第二节点中订阅了该目标话题的设备。需要说明的是,由于以上第一目标节点为任一第二节点,以上第一目标设备为第一目标节点连接的设备中的任一设备,因此针对任一第二节点接收到的其连接的设备所发送的话题发布请求,均可以按照本申请实施例提供的消息传输方法,将话题消息发布至所有订阅了目标话题的设备。
在一些实施方式中,以上目标话题可以为MQTT服务器中创建的任一话题,话题消息可以为与目标话题对应的消息。例如目标话题为环境温度话题,则话题消息可以为环境温度值,由此需要根据环境温度进行控制的IOT设备可以对环境温度话题进行订阅,而采集环境温度的采集设备可以发布该环境话题的话题消息,以便订阅了环境温度话题的IOT设备能够获得采集的环境温度值,并基于环境温度值进行设备控制。当然,以上目标话题以及话题消息仅为举例,具体的目标话题以及话题消息可以不做限定。
步骤S120:通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点。
在本申请实施例中,以上第一目标节点接收到以上话题发布请求的情况下,则第一目标节点可以基于该话题发布请求,将话题消息发送至第一目标节点连接的设备中的订阅了目标话题的设备,并且将话题发布请求发送至第一节点,以便第一节点将话题发布请求发送至其他的第二节点,进而使得其他的第二节点将话题消息发送至其连接的设备中的订阅了目标话题的设备,由此实现将该话题消息发布至所有订阅了该目标话题的设备。
在一些实施方式中,各个第二节点可以缓存其连接的各个设备的第一路由信息,第一路由信息可以包括连接的设备的信息(例如设备标识等)以及连接的各个设备所订阅的话题等,当然,具体地第一路由信息可以不做限定。由此,以上第一目标节点在接收到以上话题发布请求后,可以根据其缓存的第一路由信息,将话题消息发送至第一目标节点连接的设备中的订阅了目标话题的设备。
步骤S130:通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题。
在本申请实施例中,第一节点在接收到以上第一目标节点发送的以上话题发布请求后,则第一节点可以对话题发布请求进行转发,并将该话题发布请求发送至其他的第二节点中订阅了该目标话题的设备所连接的第二目标节点,以便第二目标节点基于接收的话题发布请求,将以上话题消息发送至第二目标节点连接的设备中订阅了该目标话题的设备。
在一些实施方式中,第一节点可以缓存所有第二节点的第二路由信息,第二路由信息可以包括各个第二节点连接的设备、第二节点连接的各个设备所订阅的话题等,当然,具体地路由信息可以不做限定。由此,以上第一节点在接收到以上话题发布请求后,可以根据其缓存的第二路由信息,确定出以上第二目标节点,并将话题消息发送至以上第二目标节点。
步骤S140:通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
在本申请实施例中,在以上第二目标节点接收到以上话题发布请求后,则第二目标节点可以基于话题发布请求,将该话题发布请求所请求发布的话题消息发送至第二目标节点连接的设备中的订阅了以上目标话题的设备。其中,第二目标节点可以基于其缓存的以上第一路由信息,确定其连接的设备中订阅了该目标话题的设备,并将将话题消息发送至第二目标节点连接的设备中的订阅了目标话题的设备。由此,在第一目标节点以及第二目标节点将话题消息发送至各自连接的设备中订阅了目标话题的设备后,则可以实现将话题消息发送至订阅了该目标话题的所有设备。
本申请实施例提供的信息传输方法,MQTT服务器在实现跨节点的信息传输时,以上各个第二节点仅需根据话题发布请求,将话题消息发布至与该第二节点连接且订阅了目标话题的设备,以及将话题发布请求转发至第一节点,并由第一节点向其他的第二节点转发话题发布请求,以发布至与其他的第二节点连接且订阅了该目标话题的设备,从而各个第一节点仅需存储其连接的设备所订阅的话题,而无需保持各个第二节点共享连接的设备的订阅的话题(也即各个第二节点无需存储其他的第二节点连接的各个设备所订阅的话题),进而减少MQTT服务器的数据缓存量,降低资源占用量。
请参阅图4,图4示出了本申请另一个实施例提供的信息传输方法的流程示意图。该信息传输方法应用于上述MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点。下面将针对图4所示的流程进行详细的阐述,所述信息传输方法具体可以包括以下步骤:
步骤S210:通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备。
在本申请实施例中,步骤S210可以参阅其他实施例的内容,在此不再赘述。
步骤S220:通过所述第一目标节点根据所述第一目标节点存储的第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备。
在本申请实施例中,每个所述第二节点存储有其连接的设备中每个设备对应的第一映射关系,所述第一映射关系包括所述每个设备与订阅的话题之间的映射关系,也即第二节点存储有其连接的设备中每个设备所订阅的话题。由此,以上第一目标节点在接收到以上话题发布请求后,可以响应该话题发布请求,基于该话题发布请求所请求发布的目标话题,以及第一目标节点存储的第一映射关系,确定其连接的设备中的订阅了该目标话题的设备,并将订阅了目标话题的设备作为第二目标设备。
步骤S230:通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标设备,并将所述话题发布请求发送至所述第一节点。
在本申请实施例中,第一目标节点在确定出以上第二目标设备后,则可以基于该话题发布请求所请求发布的目标话题对应的话题消息,将该话题消息发送至以上第二目标设备,并且将话题发布请求发送至第一节点,以便第一节点将话题发布请求发送至其他的第二节点,从而使得其他的第二节点将话题消息发送至其连接的设备中的订阅了目标话题的设备,由此实现将该话题消息发布至所有订阅了该目标话题的设备。
步骤S240:通过所述第一节点根据第二映射关系,从所述多个第二节点中的除所述第一目标节点以外的其他节点中,确定与所述目标话题存在映射关系的第二节点作为所述第二目标节点。
在本申请实施例中,第一节点存储有每个所述第二节点对应的第二映射关系,所述第二映射关系包括所述第二节点与所述第二节点连接的设备订阅的所有话题之间的映射关系。也就是说,第一节点仅需记录第二节点与话题之间的映射关系,例如,一个第二节点连接的设备中有设备1和设备2,且设备1订阅了话题A和话题B,设备2订阅了话题A和话题C,则第一节点仅需针对该第二节点,确定其连接的设备所订阅的所有话题(即话题A、话题B和话题C),并记录该第二节点与话题A、话题B和话题C之间的映射关系。基于此,第一节点接收到以上话题发布请求后,则可以基于该话题发布请求所请求发布的目标话题,以及存储的以上第二映射关系,从多个第二节点中的除第一目标节点以外的其他节点中,确定与目标话题存在映射关系的第二节点,并将确定出的第二节点作为第二目标节点。
步骤S250:通过所述第一节点将所述话题发布请求发送至所述第二目标节点。
在本申请实施例中,第一节点在确定出以上第二目标节点后,则可以对话题发布请求进行转发,并将该话题发布请求发送至确定出的以上第二目标节点,以便第二目标节点基于接收的话题发布请求,将以上话题消息发送至第二目标节点连接的设备中订阅了该目标话题的设备。
步骤S260:通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
在本申请实施例中,第二目标节点接收以上话题发布请求后,同样可以基于其存储的以上第一映射关系,以及该话题发布请求所请求发布的目标话题,确定出第二目标节点连接的设备中的订阅了目标话题的设备;在确定出订阅了目标话题的设备后,第二目标节点基于该话题发布请求所请求发布的目标话题对应的话题消息,将该话题消息发送至确定出的订阅了目标话题的设备。由此,以上第一目标节点以及第二目标节点将话题消息发送至各自连接的设备中订阅了目标话题的设备后,则完成了将话题消息发送至订阅了该目标话题的所有设备。
本申请实施例提供的信息传输方法,MQTT服务器在实现跨节点的信息传输时,通过于MQTT服务器部署第一节点以及与第一节点连接的多个第二节点,第一节点对各个第二节点与各个第二节点连接的设备订阅的所有话题之间的映射关系进行存储,而各个第二节点仅需对其连接的设备中每个设备与订阅的话题之间的映射关系,由此,无需保持各个第二节点共享连接的设备的订阅的话题(也即各个第二节点无需存储其他的第二节点连接的各个设备所订阅的话题),进而减少MQTT服务器的数据缓存量,降低资源占用量。
请参阅图5,图5示出了本申请又一个实施例提供的信息传输方法的流程示意图。该信息传输方法应用于上述MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点。下面将针对图5所示的流程进行详细的阐述,所述信息传输方法具体可以包括以下步骤:
步骤S300:通过所述第一目标节点接收所述第二目标设备发送的话题订阅请求,所述话题订阅请求用于请求订阅所述目标话题。
于本实施例中,每个所述第二节点存储有其连接的设备中每个设备对应的第一映射关系,所述第一映射关系包括所述每个设备与订阅的话题之间的映射关系;所述第一节点存储有每个所述第二节点对应的第二映射关系,所述第二映射关系包括所述第二节点与所述第二节点连接的设备订阅的所有话题之间的映射关系。
在本申请实施例中,第二目标设备可以向第一目标节点发送用于订阅目标话题的话题订阅请求,以便订阅该目标话题后,能够接收发布的该目标话题的话题消息。对应地,第一目标节点可以接收到第二目标设备发送的话题发布请求。
步骤S310:通过所述第一目标节点将所述第二目标设备与所述目标话题的映射关系添加至所述第二目标设备对应的第一映射关系中。
在本申请实施例中,在第一目标节点接收到第二目标设备发送的意思话题订阅请求后,则可以响应于该话题订阅请求,将第二目标设备与目标话题的映射关系添加至第二目标设备对应的第一映射关系中。由此,在任一设备发送了该目标话题的话题发布请求的情况下,第一目标节点能够根据其存储的第一映射关系,将该目标话题的话题消息发送至该第二目标设备。
需要说明的是,由于以上第一目标节点为任一第二节点,目标话题为任一话题,因此任一设备在需要订阅任一话题时,均可以按照以上方式进行话题订阅,也就是说,该设备向其连接的第二节点发送需要订阅的话题对应的话题订阅请求,其连接的第二节点在接收到话题订阅请求后,则可以将该设备与该需要订阅的话题之间的映射关系添加于该第二节点所存储的第一映射关系中。
在一些实施方式中,第一目标节点接收到以上话题订阅请求后,则可以解析该话题订阅请求,若解析失败,或者解析成功,并根据解析出的参数中的鉴权信息鉴权失败,则可以向第二目标设备返回第一订阅结果,该第一订阅结果用于表征对以上目标话题订阅失败;若解析成功,并根据解析出的参数中的鉴权信息鉴权成功,则可以将第二目标设备与目标话题的映射关系添加至第二目标设备对应的第一映射关系中,并且可以向第二目标设备返回第二订阅结果,该第二订阅结果用于表征对以上目标话题订阅成功。
在一些实施方式中,每个第二节点创建有其连接的每个设备对应的第一连接缓存,第一连接缓存用于存储所述第一连接缓存对应的设备所对应的所述第一映射关系。任一第二节点在接收到新设备的接入请求的情况下,该第二节点可以响应于新设备的接入请求,创建该新设备对应的第一连接缓存。可选地,第二节点可以请求预设大小的缓存空间,并将其作为该新设备对应的第一连接缓存。
在一种可能的实施方式中,第二节点在接收到新设备的接入请求的情况下,可以解析接入请求中的保活时间、权限和协议版本等连接参数;再检验连接参数是否合法;若合法,则创建该新设备对应的第一连接缓存,并且可以向该新设备返回第一接入结果,该第一接入结果用于表征该新设备接入成功;若不合法,则可以向该新设备返回第二接入结果,该第二接入结果用于表征该新设备接入失败。其中,检验连接参数合法可以包括以下条件中的至少一个:保活时间未超过最大值、权限信息准确以及协议版本支持。
步骤S320:通过所述第一节点接收第三目标节点发送的第三映射关系。
其中,所述第三映射关系包括所述第三目标节点连接的设备与所述目标话题之间的映射关系,所述第三映射关系是所述第三目标节点连接的设备在请求订阅了所述目标话题时发送的,所述第三目标节点为所述多个第二节点中的任一节点。
在本申请实施例中,在多个第二节点中的任一节点(作为第三目标节点)连接的设备在请求订阅了目标话题的情况下,第三目标节点还可以将以上第三映射关系发送至第一节点,以便第一节点同步对其存储的第二映射关系进行更新,以便第一节点能够根据第二映射关系实现将目标话题的话题发布请求发送至第三目标节点。
步骤S330:通过所述第一节点基于所述第三映射关系,将所述第三目标节点与所述目标话题之间的映射关系添加于所述第三目标节点对应的第二映射关系中。
在本申请实施例中,第一节点接收到以上第三映射关系后,由于第三映射关系表示以上第三目标节点连接的设备订阅了目标话题,因此可以将第三目标节点与目标话题之间的映射关系添加于第三目标节点对应的第二映射关系中,以便第一节点能够根据第二映射关系实现将目标话题的话题发布请求发送至第三目标节点。
需要说明的是,由于以上第三目标节点为任一第二节点,目标话题为任一话题,因此任一设备通过连接的第二节点订阅了任一话题时,均可以按照以上方式将该设备与该话题的映射关系发送至第一节点,第一节点根据接收的映射关系,对其存储的该第二节点对应的第二映射关系进行更新。
在一些实施方式中,第一节点创建有每个所述第二节点对应的第二连接缓存,所述第二连接缓存用于存储所述第二连接缓存对应的所述第二节点所对应的所述第二映射关系。在需要加入新的第二节点时,新的第二节点可以向第一节点发送加入请求,对应地,第一节点可以接收到新的第二节点的加入请求,然后第一节点响应于该加入请求,创建新的第二节点对应的第二连接缓存。可选地,第一节点可以请求目标大小的缓存空间,并将其作为该新的第二节点对应的第二连接缓存。
在一种可能的实施方式中,第一节点在接收到新的第二节点的加入请求时,可以解析该加入请求,若解析失败,或者解析成功,并根据解析出的参数中的鉴权信息鉴权失败,则可以向该新的第二节点返回第一加入结果,该第一加入结果用于表征未成功加入连接服务集群;若解析成功,并根据解析出的参数中的鉴权信息鉴权成功,则可以创建新的第二节点对应的第二连接缓存,并且可以向该新的第二节点返回第二加入结果,该第二加入结果用于表征成功加入连接服务集群。
在一种可能的实施方式中,第一节点还可以对多个第二节点进行管理,以减少占用的缓存空间。可选地,第一节点可以检测未连接有任何设备的第二节点;在检测到第四目标节点未连接有任何设备时,则可以对第四目标节点保持未连接有任何设备的状态进行计时,第四目标节点为任一第二节点;若计时时长达到预设时长,则可以断开与第四目标节点的连接,并删除第四目标节点对应的第二连接缓存,其中,预设时长的具体数值可以不做限定,例如可以为1天、7天、30天等。由此,可以实现对空闲的第二节点进行清理,以减少资源的占用量。
步骤S340:通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备。
步骤S350:通过所述第一目标节点根据所述第一目标节点存储的第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备。
步骤S360:通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标设备,并将所述话题发布请求发送至所述第一节点。
步骤S370:通过所述第一节点根据第二映射关系,从所述多个第二节点中的除所述第一目标节点以外的其他节点中,确定与所述目标话题存在映射关系的第二节点作为所述第二目标节点。
步骤S380:通过所述第一节点将所述话题发布请求发送至所述第二目标节点。
步骤S390:通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
在本申请实施例中,步骤S340至步骤S390可以参阅前述实施例的内容,在此不再赘述。
本申请实施例提供的信息传输方法,MQTT服务器在实现跨节点的信息传输时,通过于MQTT服务器部署第一节点以及与第一节点连接的多个第二节点,第一节点针对各个第二节点创建连接缓存,以缓存对各个第二节点与各个第二节点连接的设备订阅的所有话题之间的映射关系进行存储,各个第二节点针对连接的各个设备创建连接缓存,以缓存连接的设备中每个设备与订阅的话题之间的映射关系,由此,无需保持各个第二节点共享连接的设备的订阅的话题(也即各个第二节点无需存储其他的第二节点连接的各个设备所订阅的话题),进而减少MQTT服务器的数据缓存量,降低资源占用量。
请参阅图6,其示出了本申请实施例提供的一种信息传输装置400的结构框图。该信息传输装置400应用上述的MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点,该信息传输装置400包括:请求接收模块410、第一发送模块420、第二发送模块430以及第三发送模块440。其中,所述请求接收模块410用于通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备;所述第一发送模块420用于通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点;所述第二发送模块430用于通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题;所述第三发送模块440用于通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
在一些实施方式中,每个所述第二节点存储有其连接的设备中每个设备对应的第一映射关系,所述第一映射关系包括所述每个设备与订阅的话题之间的映射关系。第一发送模块420可以具体用于:通过所述第一目标节点根据所述第一目标节点存储的所述第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备;通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标设备。
在一种可能的实施方式中,该信息传输装置400还可以包括第一关系添加模块。请求接收模块410还可以用于在所述通过所述第一目标节点根据所述第一目标节点存储的第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备之前,通过所述第一目标节点接收所述第二目标设备发送的话题订阅请求,所述话题订阅请求用于请求订阅所述目标话题;第一关系添加模块用于通过所述第一目标节点将所述第二目标设备与所述目标话题的映射关系添加至所述第二目标设备对应的所述第一映射关系中。
在一种可能的实施方式中,每个所述第二节点创建有其连接的每个设备对应的第一连接缓存,所述第一连接缓存用于存储所述第一连接缓存对应的设备所对应的所述第一映射关系。该信息传输装置400还可以包括第一缓存创建模块。第一缓存创建模块用于通过所述第二节点响应于新设备的接入请求,创建所述新设备对应的所述第一连接缓存。
在一些实施方式中,所述第一节点存储有每个所述第二节点对应的第二映射关系,所述第二映射关系包括所述第二节点与所述第二节点连接的设备订阅的所有话题之间的映射关系。第二发送模块430可以具体用于:通过所述第一节点根据所述第二映射关系,从所述多个第二节点中的除所述第一目标节点以外的其他节点中,确定与所述目标话题存在映射关系的第二节点作为所述第二目标节点;通过所述第一节点将所述话题发布请求发送至所述第二目标节点。
在一种可能的实施方式中,该信息传输装置400还可以包括映射接收模块以及第二关系添加模块。映射接收模块用于通过所述第一节点接收第三目标节点发送的第三映射关系,所述第三映射关系包括所述第三目标节点连接的设备与所述目标话题之间的映射关系,所述第三映射关系是所述第三目标节点连接的设备在请求订阅了所述目标话题时发送的,所述第三目标节点为所述多个第二节点中的任一节点;第二关系添加模块用于通过所述第一节点基于所述第三映射关系,将所述第三目标节点与所述目标话题之间的映射关系添加于所述第三目标节点对应的所述第二映射关系中。
在一种可能的实施方式中,所述第一节点创建有每个所述第二节点对应的第二连接缓存,所述第二连接缓存用于存储所述第二连接缓存对应的所述第二节点所对应的所述第二映射关系。该信息传输装置400还可以包括第二缓存创建模块。请求接收模块410还可以用于通过所述第一节点接收新的第二节点的加入请求;第二缓存创建模块用于通过所述第一节点响应于所述加入请求,创建所述新的第二节点对应的所述第二连接缓存。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
综上所述,本申请提供的方案,MQTT服务器中部署有第一节点以及与第一节点连接的多个第二节点,通过第一目标节点接收目标节点连接的第一目标设备发送的话题发布请求,话题发布请求用于请求发布目标话题的话题消息,第一目标节点为多个第二节点中的任一节点,第一目标设备为第一目标节点连接的设备中的任一设备;通过第一目标节点基于话题发布请求,将话题消息发送至第一目标节点连接的设备中的订阅了目标话题的设备,并将话题发布请求发送至第一节点;通过第一节点将话题发布请求发送至第二目标节点,第二目标节点为多个第二节点中除第一目标节点以外的节点,且第二目标节点连接的设备中存在至少一个设备订阅了目标话题;通过第二目标节点基于话题发布请求,将话题消息发送至第二目标节点连接的设备中的订阅了目标话题的设备。由此,MQTT服务器在实现跨节点的信息传输时,以上各个第二节点仅需根据话题发布请求,将话题消息发布至与该第二节点连接且订阅了目标话题的设备,以及将话题发布请求转发至第一节点,并由第一节点向其他的第二节点转发话题发布请求,以发布至与其他的第二节点连接且订阅了该目标话题的设备,从而各个第一节点仅需存储其连接的设备的路由信息,而无需保持各个第二节点共享连接的设备的路由信息,进而减少MQTT服务器的数据缓存量,降低资源占用量。
请参考图7,其示出了本申请实施例提供的一种服务器的结构框图。本申请中的服务器100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个应用程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个服务器100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储服务器100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图8,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种信息传输方法,其特征在于,应用于消息队列遥测传输MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点,所述方法包括:
通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备;
通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点;
通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题;
通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
2.根据权利要求1所述的方法,其特征在于,每个所述第二节点存储有其连接的设备中每个设备对应的第一映射关系,所述第一映射关系包括所述每个设备与订阅的话题之间的映射关系;
所述通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,包括:
通过所述第一目标节点根据所述第一目标节点存储的所述第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备;
通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标设备。
3.根据权利要求2所述的方法,其特征在于,在所述通过所述第一目标节点根据所述第一目标节点存储的第一映射关系,确定所述第一目标节点连接的设备中的订阅了所述目标话题的第二目标设备之前,所述方法还包括:
通过所述第一目标节点接收所述第二目标设备发送的话题订阅请求,所述话题订阅请求用于请求订阅所述目标话题;
通过所述第一目标节点将所述第二目标设备与所述目标话题的映射关系添加至所述第二目标设备对应的所述第一映射关系中。
4.根据权利要求2所述的方法,其特征在于,每个所述第二节点创建有其连接的每个设备对应的第一连接缓存,所述第一连接缓存用于存储所述第一连接缓存对应的设备所对应的所述第一映射关系,所述方法还包括:
通过所述第二节点响应于新设备的接入请求,创建所述新设备对应的所述第一连接缓存。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一节点存储有每个所述第二节点对应的第二映射关系,所述第二映射关系包括所述第二节点与所述第二节点连接的设备订阅的所有话题之间的映射关系;
所述通过所述第一节点将所述话题发布请求发送至第二目标节点,包括:
通过所述第一节点根据所述第二映射关系,从所述多个第二节点中的除所述第一目标节点以外的其他节点中,确定与所述目标话题存在映射关系的第二节点作为所述第二目标节点;
通过所述第一节点将所述话题发布请求发送至所述第二目标节点。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述第一节点接收第三目标节点发送的第三映射关系,所述第三映射关系包括所述第三目标节点连接的设备与所述目标话题之间的映射关系,所述第三映射关系是所述第三目标节点连接的设备在请求订阅了所述目标话题时发送的,所述第三目标节点为所述多个第二节点中的任一节点;
通过所述第一节点基于所述第三映射关系,将所述第三目标节点与所述目标话题之间的映射关系添加于所述第三目标节点对应的所述第二映射关系中。
7.根据权利要求5所述的方法,其特征在于,所述第一节点创建有每个所述第二节点对应的第二连接缓存,所述第二连接缓存用于存储所述第二连接缓存对应的所述第二节点所对应的所述第二映射关系,所述方法还包括:
通过所述第一节点接收新的第二节点的加入请求;
通过所述第一节点响应于所述加入请求,创建所述新的第二节点对应的所述第二连接缓存。
8.一种信息传输装置,其特征在于,应用于消息队列遥测传输MQTT服务器,所述MQTT服务器中部署有第一节点以及与所述第一节点连接的多个第二节点,所述装置包括:请求接收模块、第一发送模块、第二发送模块以及第三发送模块,其中,
所述请求接收模块用于通过第一目标节点接收所述目标节点连接的第一目标设备发送的话题发布请求,所述话题发布请求用于请求发布目标话题的话题消息,所述第一目标节点为所述多个第二节点中的任一节点,所述第一目标设备为所述第一目标节点连接的设备中的任一设备;
所述第一发送模块用于通过所述第一目标节点基于所述话题发布请求,将所述话题消息发送至所述第一目标节点连接的设备中的订阅了所述目标话题的设备,并将所述话题发布请求发送至所述第一节点;
所述第二发送模块用于通过所述第一节点将所述话题发布请求发送至第二目标节点,所述第二目标节点为所述多个第二节点中除所述第一目标节点以外的节点,且所述第二目标节点连接的设备中存在至少一个设备订阅了所述目标话题;
所述第三发送模块用于通过所述第二目标节点基于所述话题发布请求,将所述话题消息发送至所述第二目标节点连接的设备中的订阅了所述目标话题的设备。
9.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
CN202211320547.0A 2022-10-26 2022-10-26 信息传输方法、装置、服务器及存储介质 Pending CN117938844A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211320547.0A CN117938844A (zh) 2022-10-26 2022-10-26 信息传输方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211320547.0A CN117938844A (zh) 2022-10-26 2022-10-26 信息传输方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN117938844A true CN117938844A (zh) 2024-04-26

Family

ID=90761579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211320547.0A Pending CN117938844A (zh) 2022-10-26 2022-10-26 信息传输方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN117938844A (zh)

Similar Documents

Publication Publication Date Title
CN107566786B (zh) 一种获取监控视频的方法、装置及终端设备
US9578081B2 (en) System and method for providing an actively invalidated client-side network resource cache
CN109462631B (zh) 数据处理方法、装置、存储介质及电子装置
CN112118315A (zh) 数据处理系统、方法、装置、电子设备和存储介质
CN110808948B (zh) 远程过程调用方法、装置及系统
CN112422497B (zh) 消息传递方法、装置及计算机设备
KR101990184B1 (ko) 사설 IP를 가지는 IoT 게이트웨이를 위한 MQTT/HTTP 기반 통신 방법 및 시스템
CN105141603A (zh) 通信数据传输方法及系统
CN111541555A (zh) 群聊优化方法及相关产品
CN110392020B (zh) 一种流媒体资源的传输方法及系统
CN114025002A (zh) 一种基于mqtt信息传输的方法、系统及通信设备
KR20170125252A (ko) M2M/IoT 플랫폼에서 MQTT 프로토콜을 활용한 메시지 단편화 방법
CN113076281B (zh) 一种Ceph内核客户端进行通信的方法、系统、设备及介质
CN112398845B (zh) 数据传输方法、数据传输装置、系统及电子设备
CN111917859B (zh) 数据传输方法、装置、计算机设备以及存储介质
CN113572750A (zh) 视频数据传输方法及装置
CN111404842B (zh) 数据传输方法、装置及计算机存储介质
CN109981778B (zh) 内容分发网络的服务实现方法、装置、设备及存储介质
CN108924773B (zh) 消息处理方法及装置
CN117938844A (zh) 信息传输方法、装置、服务器及存储介质
CN112532534B (zh) 一种数据传输方法、装置以及计算机可读存储介质
CN113094002B (zh) 消息处理方法、装置、电子设备和计算机介质
CN105912477B (zh) 一种目录读取的方法、装置及系统
CN111327511B (zh) 即时通讯方法、系统、终端设备与存储介质
CN110071925B (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