掌桥专利:专业的专利平台
掌桥专利
首页

消息队列遥测传输网络接入方法、控制器及网关

文献发布时间:2023-06-19 18:32:25


消息队列遥测传输网络接入方法、控制器及网关

技术领域

本发明涉及数据通讯技术领域,特别是MQTT(Message Queuing TelemetryTransport,消息队列遥测传输)网络接入方法、控制器、网关及可读存储介质、电子设备和计算机程序产品。

背景技术

MQTT是一种基于发布/订阅模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publisher)、代理(Broker)、订阅者(Subscriber)。其中,消息的发布者和订阅者都是客户端,代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分。Topic可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)。MQTT会构建底层网络传输,它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。当数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题(Topic)相关联。

物联网和边缘计算带来了一系列挑战。网络拓扑结构具有高度的动态性,且容易受到大量的干扰。客户端移动性和动态资源可用性是边缘计算体系结构面临的突出挑战。

发明内容

有鉴于此,本发明实施例一方面提出了MQTT网络接入方法,另一方面提出了MQTT控制器、网关及可读存储介质、电子设备及计算机程序产品,以提高MQTT网络的QOS。

第一方面,提供一种消息队列遥测传输MQTT网络接入方法,包括:

MQTT网络中的控制器向第一客户端接入的第一网关发送携带身份标识ID的服务质量QOS请求,所述QOS请求用于:第一网关向MQTT网络中的所有代理服务器广播携带所述身份ID的PING请求,并根据各代理服务器返回的携带所述身份ID的PING响应的接收时间戳和所述PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟,并将第一网关与各代理服务器之间的传输延迟发送给控制器;

控制器接收第一网关发来的第一网关与各代理服务器之间的传输延迟,在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟;

控制器将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关,所述代理服务器接入消息用于:第一网关与第一代理服务器建立连接。

第二方面,提供一种消息队列遥测传输MQTT网络接入方法,包括:

MQTT网络中的第一客户端接入的第一网关接收控制器发来的携带身份标识ID的服务质量QOS请求;

第一网关向MQTT网络中的所有代理服务器广播携带所述身份ID的PING请求;

第一网关根据各代理服务器返回的携带所述身份ID的PING响应的接收时间戳和所述PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟;

第一网关将第一网关与各代理服务器之间的传输延迟发送给控制器,所述第一网关与各代理服务器之间的传输延迟用于:控制器在所述第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟,并将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关;

第一网关接收控制器发来的携带第一代理服务器的地址的代理服务器接入消息,与第一代理服务器建立连接。

第三方面,提供一种消息队列遥测传输MQTT控制器,包括用于执行第一方面提供方法的模块;

第四方面,提供一种消息队列遥测传输MQTT网关,包括用于执行第二方面提供方法的模块;

第五方面,提供一种消息队列遥测传输MQTT网络接入系统,包括第三方面提供的MQTT控制器和第四方面提供的MQTT网关;

第六方面,提供一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如第一方面或第二方面所述的消息队列遥测传输MQTT网络接入方法的步骤。

第七方面,提供一种电子设备,包括:存储器和处理器,所述存储器存储指令,所述指令在由处理器执行时使得所述处理器执行如第一方面或第二方面所述的消息队列遥测传输MQTT网络接入方法的步骤。

第八方面,提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如第一方面或第二方面所述的消息队列遥测传输MQTT网络接入方法的步骤。

上述实施例中,控制器通过QOS请求触发第一网关测量第一网关与各代理服务器之间的传输延迟,并在其中选择最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,从而使得:网关能够与传输延迟最小的代理服务器建立连接,从而保证了后续的消息发布和订阅的速度,提高了MQTT网络的QOS。

可选地,控制器将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关之后,进一步包括:

控制器接收第一代理服务器转发来的第一客户端针对第一主题的订阅请求;

控制器建立桥接表项,该桥接表项包含:

用于指示第一代理服务器为目标代理服务器的信息,

用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器都为桥接代理服务器的信息,以及,

用于指示第一主题为共享主题的信息;

控制器将所述桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器,所述桥接表项用于:

当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发所述第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将所述第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

上述实施例中,控制器通过建立桥接表项,在不同代理服务器之间建立了桥接,从而使得一个代理服务器接收到一客户端发来的第一主题消息时,能够根据桥接表项得知哪些代理服务器接入了订阅第一主题的客户端,从而将第一主题消息转发给这些代理服务器,由这些代理服务器将第一主题消息转发给订阅第一主题的客户端。可选地,控制器接收第二代理服务器发来的接入请求,建立桥接表项,该桥接表项包含:

用于指示第二代理服务器为目标代理服务器的信息,

用于指示MQTT网络中除第二代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及,

用于指示所有主题为共享主题的信息;

控制器将该桥接表项发送给MQTT网络中除第二代理服务器外的其他所有代理服务器。

上述实施例中,当第二代理服务器新接入MQTT网络时,若有客户端新迁入第二代理服务器,能够保证该客户端订阅的主题消息都会接收到。

可选地,所述控制器向第一客户端接入的第一网关发送携带身份ID的QOS请求,包括:

控制器每隔预设第二时间间隔,分别为MQTT网络中的每个客户端的网关生成一个身份ID,并向每个客户端的网关分别发送携带为该网关生成的身份ID的QOS请求消息,所述每个客户端包含第一MQTT客户端。

上述实施例中,控制器周期性地通知每个客户端的网关测量其与各个代理服务器之间的传输延迟,并为各个网关选择最小的传输延迟对应的代理服务器作为最新的代理服务器,然后通知各个网关与该最新的代理服务器建立连接,从而,各个网关就从当前代理服务器迁移到了最新的代理服务器上了,从而保证了网关总是能与传输延迟最小的代理服务器建立连接,从而保证了消息发布和订阅的速度总是最高,提高了MQTT网络的QOS。

可选地,所述控制器向第一客户端接入的第一网关发送携带身份ID的QOS请求之前,进一步包括:

控制器接收第一网关发来的代理服务器分配请求,为第一网关分配身份ID;所述代理服务器分配请求为:第一网关接收到第一客户端发来的接入请求后发出的。

上述实施例在客户端初始接入MQTT网络时,就为客户端的网关选择传输延迟最小的代理服务器进行接入,从而保证MQTT网络的QOS始终最优。

可选地,所述控制器在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟之后、所述控制器将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器之前,进一步包括:

控制器查询第一网关与第一网关当前接入的第三代理服务器之间的传输延迟,判断查询到的传输延迟与所述最小的传输延迟之间的差值是否在预设范围内,若是,则确定第一网关无需切换接入代理服务器,否则,执行所述将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器的动作。

上述实施例,避免了网关频繁地进行代理服务器的迁移,在资源消耗和网络QOS之间取得了均衡。

可选地,所述第一网关向MQTT网络中的所有代理服务器广播携带所述身份ID的PING请求,包括:

第一网关每隔预设第一时间间隔向MQTT网络中的所有代理服务器广播一次携带所述身份ID的PING请求,直至广播次数达到预设次数;

且,所述第一网关分别计算第一网关与各代理服务器之间的传输延迟包括:

第一网关根据每次发送的PING请求的发送时间戳和各代理服务器每次返回的PING响应的时间戳,分别计算第一网关与各代理服务器之间的平均传输延迟。

上述实施例,第一网关通过多次广播携带所述身份ID的PING请求,并根据每次发送的PING请求的发送时间戳和各代理服务器每次返回的PING响应的时间戳,分别计算第一网关与各代理服务器之间的平均传输延迟,从而提高了计算得到的第一网关与各代理服务器之间的平均传输延迟的可靠性,进而保证了MQTT网络的QOS。

附图说明

下面将通过参照附图详细描述本发明的优选实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中:

图1为本发明中MQTT网络的架构示意图;

图2为本发明第一实施例提供的MQTT网络接入方法流程图;

图3为本发明第二实施例提供的MQTT网络接入方法流程图;

图4为本发明第三实施例提供的MQTT网络接入方法流程图;

图5为本发明第四实施例提供的MQTT网络接入方法流程图;

图6为本发明实施例提供的MQTT控制器的结构示意图;

图7为本发明实施例提供的MQTT网关的结构示意图;

图8为本发明实施例提供的电子设备的结构示意图。

其中,附图标记如下:

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。

现有的MQTT网络中,当客户端与一个代理服务器建立连接后,之后客户端将始终通过该代理服务器进行消息的发布和订阅。发明人经过对MQTT网络的监测发现:由于种种原因如:网络传输拥堵、代理服务器自身负载加重等,代理服务器与客户端之间的传输延迟会发生变化,此时若仍然保持客户端与代理服务器之间的固定连接不变,则会导致MQTT网络的消息发布和订阅效率下降。因此,发明人提出了本发明实施例,以在传输延迟发生变化时,提高MQTT网络的QOS。

图1为本发明中MQTT网络的架构示意图,MQTT网络主要包括四个组成部分:

一、客户端11:可以作为消息的发布者或/和订阅者;

二、网关12:与客户端11一一绑定,一个客户端11唯一地绑定到一个网关12;用于将一个客户端11动态连接到一个代理服务器13;

三、代理服务器13:用于作为发布者和订阅者之间的桥梁,将发布者发来的主题消息发布给订阅者;

四、控制器14:用于维护和管理客户端11、网关12、代理服务器13的连接状态和连接关系。

图2为本发明第一实施例提供的MQTT网络接入方法流程图,其具体步骤如下:

步骤201:MQTT网络中的控制器向第一客户端接入的第一网关发送携带身份ID(标识)的QOS请求,该QOS请求用于:第一网关向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,并根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟,并将第一网关与各代理服务器之间的传输延迟发送给控制器。

步骤202:控制器接收第一网关发来的第一网关与各代理服务器之间的传输延迟,在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟。

步骤203:控制器将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关,该代理服务器接入消息用于:第一网关与第一代理服务器建立连接。

上述实施例的有益技术效果如下:

一、控制器通过QOS请求触发第一网关测量第一网关与各代理服务器之间的传输延迟,并在其中选择最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,从而使得:网关能够与传输延迟最小的代理服务器建立连接,从而保证了后续的消息发布和订阅的速度,提高了MQTT网络的QOS。

图3为本发明第二实施例提供的MQTT网络接入方法流程图,其具体步骤如下:

步骤301:MQTT网络中的控制器向第一客户端接入的第一网关发送携带身份ID的QOS请求,该QOS请求用于:第一网关向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,并根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟,并将第一网关与各代理服务器之间的传输延迟发送给控制器。

步骤302:控制器接收第一网关发来的第一网关与各代理服务器之间的传输延迟,在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟。

步骤303:控制器将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关,该代理服务器接入消息用于:第一网关与第一代理服务器建立连接。

步骤304:控制器接收第一代理服务器转发来的第一客户端针对第一主题的订阅请求。

步骤305:控制器建立桥接表项,该桥接表项包含:用于指示第一代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示第一主题为共享主题的信息。

步骤306:控制器将该桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器,该桥接表项用于:当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发该第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将该第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

上述实施例与第一实施例相比,进一步具有如下有益技术效果:

二、控制器通过建立桥接表项,在不同代理服务器之间建立了桥接,从而使得一个代理服务器接收到一客户端发来的第一主题消息时,能够根据桥接表项得知哪些代理服务器接入了订阅第一主题的客户端,从而将第一主题消息转发给这些代理服务器,由这些代理服务器将第一主题消息转发给订阅第一主题的客户端。

在实际应用中,当有一个代理服务器新接入MQTT网络时,为了避免有客户端新迁入该代理服务器,从而向该客户端漏发其订阅的主题消息的情形的发生,本发明实施例给出如下解决方案:

一可选实施例中,控制器接收第二代理服务器发来的接入请求,建立桥接表项,该桥接表项包含:用于指示第二代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第二代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示所有主题为共享主题的信息,将该桥接表项发送给MQTT网络中除第二代理服务器外的其他所有代理服务器。

通过该实施例,当MQTT网络中除第二代理服务器外的其他任一代理服务器接收到本代理服务器下挂的客户端发来的任一主题的消息时,根据自身维护的桥接表项,都会查找到该主题的目标代理服务器有第二代理服务器,从而将该主题消息发送给第二代理服务器,第二代理服务器再将该主题消息发送给自身下挂的订阅了该主题的客户端,从而在有客户端新迁入第二代理服务器时,能够保证该客户端能够接收到其订阅的所有主题的消息。

为了使得在网络状况发生变化时,能够及时更新客户端的网关与代理服务器之间的连接关系,使得客户端的网关总是能够连接到与其之间的传输延迟最小的代理服务器,本发明实施例给出如下解决方案:

步骤201中,控制器向第一客户端接入的第一网关发送携带身份ID的QOS请求,包括:控制器每隔预设第二时间间隔,分别为MQTT网络中的每个客户端的网关生成一个身份的ID,并向每个客户端的网关分别发送携带为该网关生成的身份ID的QOS请求消息,其中,每个客户端包含第一MQTT客户端。

上述实施例中,控制器周期性地通知每个客户端的网关测量其与各个代理服务器之间的传输延迟,并为各个网关选择最小的传输延迟对应的代理服务器作为最新的代理服务器,然后通知各个网关与该最新的代理服务器建立连接,从而,各个网关就从当前代理服务器迁移到了最新的代理服务器上了,从而保证了网关总是能与传输延迟最小的代理服务器建立连接,从而保证了消息发布和订阅的速度总是最高,提高了MQTT网络的QOS。

另外,为了保证MQTT网络的QOS始终最优,在客户端初始接入MQTT网络时,就为客户端的网关选择传输延迟最小的代理服务器进行接入,本发明实施例给出的具体实现如下:

步骤201中,控制器向第一客户端接入的第一网关发送携带身份ID的QOS请求之前,进一步包括:控制器接收第一网关发来的代理服务器分配请求,为第一网关分配身份ID;该代理服务器分配请求为:第一网关接收到第一客户端发来的接入请求后发出的。

考虑到:频繁地进行代理服务器的迁移,也会消耗网关和代理服务器的资源,为了在资源消耗和网络QOS之间取得均衡,本发明实施例给出如下具体实现:

一可选实施例中,步骤202之后、步骤203之前,进一步包括:控制器查询第一网关与第一网关当前接入的第三代理服务器之间的传输延迟,判断查询到的传输延迟与该最小的传输延迟之间的差值是否在预设范围内,若是,则确定第一网关无需切换接入代理服务器,否则,执行该将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器的动作。

图4为本发明第三实施例提供的MQTT网络接入方法流程图,其具体步骤如下:

步骤401:MQTT网络中的第一客户端接入的第一网关接收控制器发来的携带身份ID的QOS请求。

步骤402:第一网关向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求。

步骤403:第一网关根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟。

步骤404:第一网关将第一网关与各代理服务器之间的传输延迟发送给控制器,以使得:控制器在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟,并将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关。

步骤405:第一网关接收控制器发来的携带第一代理服务器的地址的代理服务器接入消息,与第一代理服务器建立连接。

图5为本发明第四实施例提供的MQTT网络接入方法流程图,其具体步骤如下:

步骤501:MQTT网络中的第一客户端接入的第一网关接收控制器发来的携带身份ID的QOS请求。

在实际应用中,在两种情况下,MQTT网络中的第一客户端接入的第一网关会接收到控制器发来的携带身份ID的QOS请求:

一、第一网关接收第一客户端发来的接入请求,向控制器发送代理服务器分配请求,控制器接收到该代理服务器分配请求,为第一网关生成身份的ID,向第一网关发送携带身份ID的QOS请求;

二、控制器周期性地为MQTT网络中的每个网关分别生成一个唯一的身份ID,将为每个网关生成的身份ID携带在发送给对应网关的QOS请求中,将各QOS请求发送出去。

步骤502:第一网关向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求。

步骤503:第一网关根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟。

步骤504:第一网关将第一网关与各代理服务器之间的传输延迟发送给控制器,以使得:控制器在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟,并将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关。

在实际应用中,为了提高传输延迟的准确性,第一网关可以每隔预设第一时间间隔向MQTT网络中的所有代理服务器广播一次携带身份ID的PING请求,直至广播次数达到预设次数;且,第一网关根据每次发送的PING请求的发送时间戳和各代理服务器每次返回的PING响应的时间戳,分别计算第一网关与各代理服务器之间的平均传输延迟。

步骤505:第一网关接收控制器发来的携带第一代理服务器的地址的代理服务器接入消息,与第一代理服务器建立连接。

步骤506:第一网关接收第一客户端发来的针对第一主题的订阅请求,将该订阅请求经由第一代理服务器转发给该MQTT控制器;该订阅请求用于:

MQTT控制器根据该订阅请求,建立桥接表项,该桥接表项包含:用于指示第一代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示第一主题为共享主题的信息;且,MQTT控制器将该桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器;且,

当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发该第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将该第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

图6为本发明实施例提供的MQTT控制器60的结构示意图,该控制器主要包括:

QOS检测触发模块61,用于向第一客户端接入的第一网关发送携带身份ID的QOS请求,该QOS请求用于:第一网关向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,并根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算第一网关与各代理服务器之间的传输延迟,并将第一网关与各代理服务器之间的传输延迟发送给控制器。

代理服务器选择模块62,用于接收第一网关发来的第一网关与各代理服务器之间的传输延迟,在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟;将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给第一网关,该代理服务器接入消息用于:第一网关与第一代理服务器建立连接。

一可选实施例中,控制器60进一步包括:桥接表项维护模块63,用于:接收第一代理服务器转发来的第一客户端针对第一主题的订阅请求;建立桥接表项,该桥接表项包含:用于指示第一代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示第一主题为共享主题的信息;将该桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器,该桥接表项用于:

当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发该第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将该第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

一可选实施例中,桥接表项维护模块63进一步用于:接收第二代理服务器发来的接入请求,建立桥接表项,该桥接表项包含:用于指示第二代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第二代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示所有主题为共享主题的信息,将该桥接表项发送给MQTT网络中除第二代理服务器外的其他所有代理服务器。

一可选实施例中,QOS检测触发模块61具体用于:每隔预设第二时间间隔,分别为MQTT网络中的每个客户端的网关生成一个身份ID,并向每个客户端的网关分别发送携带为该网关生成的身份ID的QOS请求消息,该每个客户端包含第一MQTT客户端。

一可选实施例中,QOS检测触发模块61向第一客户端接入的第一网关发送携带身份ID的QOS请求之前,进一步用于,接收第一网关发来的代理服务器分配请求,为第一网关分配身份ID;该代理服务器分配请求为:第一网关接收到第一客户端发来的接入请求后发出的。

一可选实施例中,代理服务器选择模块62在第一网关与各代理服务器之间的传输延迟中选择最小的传输延迟之后、该控制器将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器之前,进一步用于:查询第一网关与第一网关当前接入的第三代理服务器之间的传输延迟,判断查询到的传输延迟与该最小的传输延迟之间的差值是否在预设范围内,若是,则确定第一网关无需切换接入代理服务器,否则,执行将最小的传输延迟对应的第一代理服务器作为第一网关的接入代理服务器的动作。

图7为本发明实施例提供的MQTT网关70的结构示意图,该网关包括:

消息收发模块71,用于接收控制器发来的携带身份标识ID的服务质量QOS请求,向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,并接收各代理服务器返回的携带该身份ID的PING响应。

传输延迟计算模块72,用于根据消息收发模块71接收到的各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算该网关与各代理服务器之间的传输延迟,将该网关与各代理服务器之间的传输延迟发送给控制器,以使得:控制器在该网关与各代理服务器之间的传输延迟中选择最小的传输延迟,并将最小的传输延迟对应的第一代理服务器作为该网关的接入代理服务器,将第一代理服务器的地址携带在代理服务器接入消息中返回给该网关,该代理服务器接入消息用于:该网关与第一代理服务器建立连接。

一可选实施例中,消息收发模块71进一步用于:接收第一客户端发来的针对第一主题的订阅请求,将该订阅请求经由第一代理服务器转发给该MQTT控制器;该订阅请求用于:

该MQTT控制器接收该订阅请求,建立桥接表项,该桥接表项包含:用于指示第一代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示第一主题为共享主题的信息;且,该MQTT控制器将该桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器;且,

当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发该第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将该第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

一可选实施例中,消息收发模块71接收控制器发来的携带身份ID的QOS请求之前,进一步包括:接收第一客户端发来的接入请求,向控制器发送代理服务器分配请求。

一可选实施例中,消息收发模块71向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,包括:每隔预设第一时间间隔向MQTT网络中的所有代理服务器广播一次携带该身份ID的PING请求,直至广播次数达到预设次数;

且,传输延迟计算模块72分别计算该网关与各代理服务器之间的传输延迟包括:根据每次发送的PING请求的发送时间戳和各代理服务器每次返回的PING响应的时间戳,分别计算该网关与各代理服务器之间的平均传输延迟。

本发明实施例还公开了一种MQTT网络接入系统,该系统包括:一控制器、两个以上代理服务器、以及至少一个网关,且每个网关分别与至少一个客户端绑定,其中:

控制器,用于向至少一个网关发送携带身份ID的QOS请求;当接收到一网关发来的该网关与各代理服务器之间的传输延迟,在该网关与各代理服务器之间的传输延迟中选择最小的传输延迟,将最小的传输延迟对应的代理服务器作为该网关的接入代理服务器,将该接入代理服务器的地址携带在代理服务器接入消息中返回给该网关。

网关,用于接收到控制器发来的QOS请求,向MQTT网络中的所有代理服务器广播携带该身份ID的PING请求,并根据各代理服务器返回的携带该身份ID的PING响应的接收时间戳和该PING请求的发送时间戳,分别计算本网关与各代理服务器之间的传输延迟,并将本网关与各代理服务器之间的传输延迟发送给控制器,接收控制器发来的代理服务器接入消息,根据该消息中的接入代理服务器的地址,与对应代理服务器建立连接。

代理服务器,用于接收一网关发来的携带该身份ID的PING请求,向该网关返回携带该身份ID的PING响应。

一可选实施例中,控制器进一步用于:接收第一代理服务器转发来的第一客户端针对第一主题的订阅请求;建立桥接表项,该桥接表项包含:用于指示第一代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第一代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示第一主题为共享主题的信息;将该桥接表项发送给MQTT网络中除第一代理服务器外的其他所有代理服务器,该桥接表项用于:

当MQTT网络中除第一代理服务器外的其他任一代理服务器接收到接入本代理服务器的任一MQTT客户端发来的第一主题消息时,在自身维护的接入本代理服务器的各MQTT客户端的订阅表中,查找订阅了第一主题的MQTT客户端,向查找到的各MQTT客户端转发该第一主题消息,同时,在自身维护的桥接表项中查找共享主题为第一主题的桥接表项,将该第一主题消息转发给查找到的各桥接表项中的目标代理服务器,以便由目标代理服务器将第一主题消息发送给订阅了第一主题的MQTT客户端。

一可选实施例中,控制器进一步用于:接收第二代理服务器发来的接入请求,建立桥接表项,该桥接表项包含:用于指示第二代理服务器为目标代理服务器的信息,用于指示MQTT网络中除第二代理服务器外的其他所有代理服务器为桥接代理服务器的信息,以及用于指示所有主题为共享主题的信息;将该桥接表项发送给MQTT网络中除第二代理服务器外的其他所有代理服务器。

一可选实施例中,控制器向至少一个网关发送携带身份ID的QOS请求,包括:控制器每隔预设第二时间间隔,分别为MQTT网络中的每个客户端的网关生成一个唯一的身份ID,并向每个客户端的网关分别发送携带为该网关生成的身份ID的QOS请求消息。

本发明实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如本发明任一实施例所述的MQTT网络接入方法的步骤。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时可执行如上所述MQTT网络接入方法中的步骤。实际应用中,所述的计算机可读介质可以是上述实施例各设备/装置/系统所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。其中,在计算机可读存储介质中存储指令,其存储的指令在由处理器执行时可执行如上MQTT网络接入方法中的步骤。

根据本发明公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本发明保护的范围。在本发明公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

如图8所示,本发明实施例还提供一种电子设备。如图8所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:

该电子设备可以包括一个或一个以上处理核心的处理器81、一个或一个以上计算机可读存储介质的存储器82以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器82的程序时,可以实现上述MQTT网络接入方法。

具体的,实际应用中,该电子设备还可以包括电源83、输入输出单元84等部件。本领域技术人员可以理解,图8中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

处理器81是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器82内的软件程序和/或模块,以及调用存储在存储器82内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。

存储器82可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器81通过运行存储在存储器82的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器82可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器82可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器82还可以包括存储器控制器,以提供处理器81对存储器82的访问。

该电子设备还包括给各个部件供电的电源83,可以通过电源管理系统与处理器81逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源83还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

该电子设备还可包括输入输出单元84,该输入单元输出84可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该输入单元输出84还可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。

本发明附图中的流程图和框图,示出了按照本发明公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本发明公开的范围。

相关技术
  • 网络接入、终端连接和验证方法及终端、网关和系统
  • 双主控板热备切换方法、装置、接入网关及安全网络系统
  • 切换接入点的方法、控制器、网络设备和存储介质
  • 基于消息队列遥测传输的边缘网关代理方法、装置
  • 对被识别为消息队列遥测传输包的网络包执行特定动作
技术分类

06120115603887