一种基于MQTT的消息交互方法、系统、设备及介质与流程

文档序号:33646256发布日期:2023-03-29 04:11阅读:253来源:国知局
一种基于MQTT的消息交互方法、系统、设备及介质与流程
一种基于mqtt的消息交互方法、系统、设备及介质
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种基于mqtt的消息交互方法、系统、设备及介质。


背景技术:

2.消息队列遥测传输(message queuing telemetry transport,mqtt)是一个基于客户端-服务器的消息发布/订阅传输协议,该协议构建于tcp/ip协议上。mqtt协议的突出优点在于是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。eclipse mosquitto是一个开源(epl/edl许可)消息代理,它实现了mqtt协议版本5.0、3.1.1和3.1。mosquitto重量轻,适用于从低功耗单板计算机到完整服务器的所有设备。prometheus是一个云原生计算基金会项目,是一个系统和服务监控系统,它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并在观察到指定条件时触发警报。
3.随着mqtt协议的完善,其适用范围也变得非常广泛。通过mqtt协议,目前市面上已经扩展出了数十个mqtt服务器端程序,在物联网领域,传感器与服务器的通信、信息的收集,mqtt都可以作为考虑的方案之一。mosquitto是一款实现了消息推送协议mqtt的开源消息代理软件,提供轻量级的,支持可发布/可订阅的消息推送模式,使设备对设备之间的短消息通信变得简单。
4.市面上使用的mosquitto对于消息运维能力还不完善,且类似实现mqtt协议的代理也具有局限性。例如emqx,其提供的服务只实现到mqtt v3,没有提供对mqtt v5的支持,并且由于实现功能复杂,对于中小企业其服务费过高。


技术实现要素:

5.为了解决上述问题,本技术提出了一种基于mqtt的消息交互方法,应用于一种基于mqtt的消息交互系统中,所述消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端;所述方法包括:所述消息客户端发布消息,其中,所述消息包括上行消息和下行消息;所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步;所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
6.在一个示例中,所述消息客户端包括第一客户端和第二客户端,其中,所述第一客户端包括但不限于终端、前端,所述第二客户端包括但不限于后端;所述消息客户端发布的消息,具体包括:所述第一客户端发布所述上行消息,所述第二客户端发布所述下行消息,其中,所述上行消息至少包括终端状态,所述下行消息包括对所述终端发布的所述动作命令。
7.在一个示例中,所述运行状态信息包括但不限于字节数、客户端连接数、最大连接数、堆内存使用量、最大堆内存量;根据预先配置的报警项对所述状态信息进行监控之前,所述方法还包括:所述消息监控服务端根据所述状态信息确定阈值项,并对所述运行状态信息进行实时采集,以得到实时运行信息;将所述实时运行信息与所述阈值项进行比较,以得到所述报警项,并将所述报警项发送至所述客户端,以通过所述客户端将所述报警项进行显示。
8.在一个示例中,所述消息交互系统还包括:存储模块,所述方法还包括:所述消息代理服务端对所述消息服务端进行订阅,以获取所述终端状态,其中,所述终端状态包括但不限于上线事件、下线事件、遗嘱消息;将所述终端状态进行流式处理,并将流式处理后的终端状态发送到所述存储模块进行存储。
9.在一个示例中,所述方法还包括:所述消息代理服务端向所述第二客户端提供在线接口,通过所述在线接口调用所述存储模块,以使所述第二客户端获取所述终端状态;根据所述终端状态触发所述动作命令,并将所述动作命令封装,以得到封装后的所述下行消息。
10.在一个示例中,所述方法还包括:所述第一客户端对所述消息服务端进行订阅,以获取所述动作命令,并执行所述动作命令。
11.另一方面,本技术还提出了一种基于mqtt的消息交互系统,包括:消息客户端,包括第一客户端和第二客户端;其中,所述第一客户端包括但不限于终端、前端,所述第二客户端包括但不限于后端;所述消息客户端用于发布消息,其中,所述第一客户端发布上行消息,所述第二客户端发布下行消息;消息代理服务端,与所述第二客户端进行数据连接,用于接收所述下行消息,并将所述下行消息进行封装;消息服务端,与所述第一客户端进行数据连接,且与所述消息代理服务端进行数据连接,用于接收所述上行消息和所述下行消息,并根据所述上行消息和所述下行消息进行消息交互;消息监控服务端,与所述消息服务端进行数据连接,用于取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控;存储模块,与所述消息代理服务端进行数据连接,用于接收所述消息代理服务端发送的流式处理数据,并将所述流式处理数据进行存储。
12.在一个示例中,所述第一客户端通过sdk与所述消息服务端进行消息发布和消息订阅;所述第二客户端通过api与所述消息代理服务进行消息发送。
13.另一方面,本技术还提出了一种基于mqtt的消息交互设备,应用于一种基于mqtt的消息交互系统中,所述消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端;设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述一种基于mqtt的消息交互系统设备能够执行:所述消息客户端发布的消息,其中,所述消息包括上行消息和下行消息;所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步;所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
14.另一方面,本技术还提出了一种非易失性计算机存储介质,存储有计算机可执行
指令,应用于一种基于mqtt的消息交互系统中,所述消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端;所述计算机可执行指令设置为:所述消息客户端发布消息,其中,所述消息包括上行消息和下行消息;所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步;所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
15.本技术通过mqtt协议替换http协议,可在极端条件下保障了消息的可靠性。通过mqtt协议统一了服务间的通信方式,从多种消息通讯方式统一为mqtt协议,首先降低了服务的复杂度,其次是解决了使用socket带来的一些性能问题。通过消息管理,提供了可视化监控消息现状的能力,提供了提前预知事故的能力,提供了高效运维能力。本技术支持实时的消息传递,设备状态可以及时反馈,对于设备管理和更新可以做到实时操作,提高管理设备的及时性和可用性。本技术提供了业务逻辑与消息逻辑解耦的能力,实现了即插即用消息发送的能力。
附图说明
16.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
17.图1为本技术实施例中一种基于mqtt的消息交互方法的流程示意图;
18.图2为本技术实施例中一种基于mqtt的消息交互系统的结构示意图;
19.图3为本技术实施例中一种基于mqtt的消息交互设备的示意图。
具体实施方式
20.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.以下结合附图,详细说明本技术各实施例提供的技术方案。
22.如图1所示,为了解决上述问题,本技术实施例提供的一种基于mqtt的消息交互方法,应用于一种基于mqtt的消息交互系统中,如图2所示,该消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端、存储模块;方法包括:
23.s101、所述消息客户端发布消息,其中,所述消息包括上行消息和下行消息;
24.在一个实施例中,消息客户端包括第一客户端和第二客户端,其中,第一客户端包括但不限于终端、前端,第二客户端包括但不限于后端。第一客户端发布的上行消息,第二客户端发布的下行消息,其中,上行消息至少包括终端状态,下行消息包括对终端发布的动作命令。第一客户端和第二客户端都可以进行发布和订阅。
25.s102、所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步。
26.s103、所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封
装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;
27.第一客户端是直接与消息服务器mosquitto-broker做消息交互,第二客户端由消息代理服务端封装消息client,再与mosquitto-broker做消息交互。由第一客户端发布的上行消息中,一类是做终端间消息同步的,另一类是上报终端状态的。由第二客户端服务触发的下行消息,用于给终端发送动作命令,终端消费下行消息根据命令做相应的动作。其中,终端包括医用主机、看板、手环、手表、床旁分机、床头分机、门禁、lcd走廊显示屏幕等。动作命令包括终端重启、终端升级、用户信息更新等。
28.s104、所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
29.由于mosquitto-broker的管理功能不完善,所以需要引入消息监控服务prometheus结合mosquitto-broker提供的broker status topic,即运行状态信息。监控消息服务端的实时运行信息,并且可以根据实时运行信息配置相应的报警项,当流量数据过载时进行报警。
30.在一个实施例中,运行状态信息包括自代理启动以来收到的字节数、当前连接的客户端数量、同时连接到代理的最大客户端数、mosquitto-broker使用的堆内存的当前数量、mosquitto-broker使用的最大堆内存量等。根据预先配置的报警项对状态信息进行监控之前,根据状态信息确定阈值项,例如mosquitto-broker使用的最大堆内存量为1g,最大客户端数为2万。并通过消息监控服务端对运行状态信息进行实时采集,以得到实时运行信息;将实时运行信息与阈值项进行比较,以得到报警项,并通过客户端将报警项进行显示。例如,当堆内存在相近的几个时间点都大于1g时,或连接数大于2万时,进行报警。
31.在一个实施例中,通过消息代理服务端对消息服务端的进行订阅,以获取终端状态,其中,终端状态包括但不限于上线事件、下线事件、遗嘱消息;将终端状态进行流式处理,并将流式处理后的终端状态存储到存储模块。终端状态是系统中比较重要的监控指标,采用消息代理服务端订阅终端的上线事件、下线事件、终端上线的遗嘱消息,来获取终端的在线状态,其中,上线事件包括终端注册后开机,异常关机后开机等;下线事件为终端断电关机,终端正常退出等。通过flink流式处理,存储到存储模块redis。flink流式处理即采用处理时间作为时间特征,并以1分钟的频率做checkpointing,然后订阅mqtt的终端状态消息作为数据源,由于消息本身带有时间戳,按照消息本身的时间特性进行分段处理,处理后把结果存入redis。
32.在一个实施例中,系统通过消息代理服务端向第二客户端提供在线接口,通过在线接口调用存储模块,以使第二客户端获取终端状态;根据终端状态触发动作命令,并通过消息代理服务端将动作命令封装,以得到封装后的下行消息。
33.在一个实施例中,系统通过第一客户端对消息服务端的进行订阅,以获取动作命令,并执行动作命令。
34.如图2所示,本技术实施例还提供了一种基于mqtt的消息交互方系统,该消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端、存储模块。
35.消息客户端,包括第一客户端和第二客户端;其中,第一客户端包括但不限于终端、前端,第二客户端包括但不限于后端;消息客户端用于发布消息,其中,第一客户端发布
上行消息,第二客户端发布下行消息,例如,客户端1包括终端设备、web服务的设备;客户端2包括后端服务的设备。
36.消息代理服务端,与第二客户端进行数据连接,用于接收下行消息,并将下行消息进行封装;例如,message-gateway。
37.消息服务端,与第一客户端进行数据连接,且与消息代理服务端进行数据连接,用于接收上行消息和下行消息,并根据上行消息和下行消息进行消息交互;例如,mosquitto-broker。
38.消息监控服务端,与消息服务端进行数据连接,用于取消息服务端的运行状态信息,并根据预先配置的报警项对状态信息进行监控;例如,prometheus的监控系统。
39.存储模块,与消息代理服务端进行数据连接,用于接收消息代理服务端发送的流式处理数据,并将流式处理数据进行存储。例如,redis。
40.在一个实施例中,消息服务端是采用开源的消息代理mosquitto搭建,它实现了mqtt协议版本5.0、3.1.1和3.1。单机连接数能抗5万多。消息服务代理是继承了实现mqtt客户端c库的jar,封装消息发布client,并提供了用作消息发布的api接口。消息代理服务实现了消息订阅功能,并根据实际场景实现消费逻辑。消息代理服务接入prometheus,实现订阅的mosquitto broker status信息上报到prometheus。消息代理服务使用flink处理订阅的终端上下线topic数据,把近实时的终端状态数据存储到redis,并提供api接口输出终端状态列表数据。消息监控服务prometheus,从消息代理服务中抓取上报指标数据,评估规则表达式,显示结果,并在观察到指定条件时触发警报。
41.在一个实施例中,第一客户端通过sdk与消息服务端进行消息发布和消息订阅;第二客户端通过api与消息代理服务进行消息发送。
42.如图3所示,一种基于mqtt的消息交互设备,应用于一种基于mqtt的消息交互系统中,所述消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端;设备包括:
43.至少一个处理器;以及,
44.与所述至少一个处理器通信连接的存储器;其中,
45.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述一种基于mqtt的消息交互设备能够执行:
46.所述消息客户端发布消息,其中,所述消息包括上行消息和下行消息;
47.所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步;
48.所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;
49.所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
50.本技术实施例还提供了一种非易失性计算机存储介质,存储有计算机可执行指令,应用于一种基于mqtt的消息交互系统中,所述消息交互系统包括:消息客户端、消息服务端、消息代理服务端、消息监控服务端;所述计算机可执行指令设置为:
51.所述消息客户端发布消息,其中,所述消息包括上行消息和下行消息;
52.所述消息服务端接收所述上行消息,并根据所述上行消息进行消息交互,以实现消息同步;
53.所述消息代理服务端接收所述下行消息,并将所述下行消息进行封装,将封装后的下行消息与所述消息服务端进行消息交互,以根据封装后的下行消息确定动作命令;
54.所述消息监控服务端获取所述消息服务端的运行状态信息,并根据预先配置的报警项对所述状态信息进行监控。
55.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
56.本技术实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
57.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
58.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
59.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
60.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
61.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
62.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
63.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
64.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
65.以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1