CN117176782A - 数据交互方法、装置及*** - Google Patents

数据交互方法、装置及*** Download PDF

Info

Publication number
CN117176782A
CN117176782A CN202311184573.XA CN202311184573A CN117176782A CN 117176782 A CN117176782 A CN 117176782A CN 202311184573 A CN202311184573 A CN 202311184573A CN 117176782 A CN117176782 A CN 117176782A
Authority
CN
China
Prior art keywords
connection object
connection
data
internet
message server
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
CN202311184573.XA
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 Jiuniuyimao Intelligent Internet Of Things Technology Co ltd
Original Assignee
Shenzhen Jiuniuyimao Intelligent Internet Of Things 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 Jiuniuyimao Intelligent Internet Of Things Technology Co ltd filed Critical Shenzhen Jiuniuyimao Intelligent Internet Of Things Technology Co ltd
Priority to CN202311184573.XA priority Critical patent/CN117176782A/zh
Publication of CN117176782A publication Critical patent/CN117176782A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种数据交互方法、装置及***,通过在接收到设备层发送的第一设备数据后,基于第一设备数据携带的设备标识确定目标群组,并在第一连接池中查找第一连接对象,当查找到第一连接对象,通过第一连接对象将第一设备数据发送给消息服务器,以由消息服务器将第一设备数据转发至目标应用,通过在第一连接池中新建并缓存第一连接对象,物联网平台在每次传输第一设备数据给消息服务器时,都可以通过该第一连接对象传输第一设备数据,大大减少了物联网平台频繁建立连接的操作,在数据并发量的场景下减少了物联网平台崩溃的概率,有利于维护物联网平台的稳定性。

Description

数据交互方法、装置及***
技术领域
本申请属于物联网应用技术领域,尤其涉及一种数据交互方法、装置及***。
背景技术
在如今的物联网应用开发中,为了简化开发步骤及提高开发效率,通常会抽象出一个物联网平台,由物联网平台与底层的设备进行数据的通信,应用层直接与物联网平台进行交互,如此,应用层可免去直接与设备进行交互,由物联网平台屏蔽掉各种复杂的通信协议及数据交互协议。
对于设备数量多的场景,考虑到设备数量并发量大,物联网平台可通过消息服务器实现数据的交互。例如,物联网平台在接收到大量的设备数据时,可以将设备数据发送给消息服务器,消息服务器再将设备数据转发至消息队列中存储,应用层再从消息队列中读取设备数据,如此,当设备数据量比较大时,应用层可避免由于短时间内处理大量设备数据而导致***崩溃。然而,在该场景中,物联网平台需频繁与消息服务器建立连接,导致物联网平台的稳定性差。
发明内容
本申请提供一种数据交互方法、装置及***,以解决现有的物联网平台在设备数据并发量大的场景下存在的平台稳定性差的问题。
第一方面,本申请实施例提供一种数据交互方法,包括:
接收设备层发送的第一设备数据;其中,所述第一设备数据携带有设备标识;
基于所述设备标识确定目标群组;所述目标群组包含有至少一个目标应用;
若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,以由所述消息服务器将所述第一设备数据转发至所述目标应用;其中,所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道。
通过在第一连接池中新建并缓存第一连接对象,基于连接池的连接复用机制,物联网平台在每次传输第一设备数据给消息服务器时,都可以通过该第一连接对象传输第一设备数据,大大减少了物联网平台频繁建立连接的操作,在数据并发量的场景下减少了物联网平台崩溃的概率,有利于维护物联网平台的稳定性。
在一种可能的实现方式中,在所述基于所述设备标识确定目标群组之后,还包括:
根据所述目标群组确定目标群组连接对象;
对应地,所述第一连接对象包括目标群组连接对象;所述若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,包括:
若在所述第一连接池中查找到所述目标群组连接对象,则通过所述目标群组连接对象将所述第一设备数据发送给所述消息服务器;其中,所述目标群组连接对象用于表示所述物联网平台与所述消息服务器之间的其中一条数据传输通道,且所述目标群组连接对象与所述目标群组对应。
在一种可能的实现方式中,所述若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,包括:
若所述第一连接对象的连接状态为连接,则获取所述第一连接对象,并通过所述第一连接对象将所述第一设备数据发送给所述消息服务器;
若所述第一连接对象的连接状态为断开,则重新建立所述第一连接对象,以通过重新建立好的所述第一连接对象将所述第一设备数据发送给所述消息服务器。
在一种可能的实现方式中,所述方法还包括:
在将所述第一设备数据发送给所述消息服务器后,释放所述第一连接对象的资源,并将所述第一连接对象归还至所述第一连接池。
在一种可能的实现方式中,所述方法还包括:
若在所述第一连接池中查找不到所述第一连接对象,则建立所述物联网平台与所述消息服务器之间的数据传输通道,以在所述第一连接池中新增所述第一连接对象,并通过所述第一连接对象将所述第一设备数据发送给所述消息服务器。
在一种可能的实现方式中,在所述接收设备层发送的第一设备数据之后,还包括:
确定所述设备标识所匹配到的至少一个路由键;
基于所述至少一个路由键生成路由键信息,并对所述第一设备数据添加所述路由键信息后封装成第一消息;
对应地,所述通过第一连接对象将所述第一消息发送给消息服务器,包括:
将所述第一消息通过所述第一连接对象发送给所述消息服务器。
在一种可能的实现方式中,所述将所述第一消息通过所述第一连接对象发送给所述消息服务器,包括:
将所述第一消息通过所述第一连接对象发送给所述消息服务器,以使得所述消息服务器基于所述第一消息携带的路由键信息将所述第一消息分别存储至各个所述路由键对应的目标消息队列中。
在一种可能的实现方式中,所述方法还包括:
接收应用层发送的设备控制指令;其中,所述设备控制指令携带有设备标识;
基于所述设备标识,确定目标主题和目标设备,并将所述设备控制指令发送至所述目标主题;
从所述目标主题中拉取所述设备控制指令,并将所述设备控制指令发送给所述目标设备。
第二方面,本申请实施例提供一种数据交互装置,所述数据交互装置应用于物联网平台,包括:
接收模块,用于接收设备层发送的第一设备数据;其中,所述第一设备数据携带有设备标识;
确定模块,用于基于所述设备标识确定目标群组;所述目标群组包含有至少一个目标应用;
发送模块,用于若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,以由所述消息服务器将所述第一设备数据转发至所述目标应用;其中,所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道。
第三方面,本申请实施例提供一种数据交互***,包括应用层、物联网平台、设备层和消息服务器;所述物联网平台和所述设备层、所述应用层连接;
所述设备层用于向所述物联网平台发送第一设备数据;
所述物联网平台用于接收设备层发送的第一设备数据;所述第一设备数据携带有设备标识;还用于基于所述设备标识确定目标群组;若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器;所述目标群组包含有至少一个目标应用;所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道;
所述消息服务器用于接收所述第一设备数据,并将所述第一设备数据发送给所述应用层中的目标应用。
可以理解的是,上述第二方面和第三方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1是本申请实施例提供的数据交互***一种应用场景的结构示意图;
图2是本申请实施例提供的数据交互方法的流程示意图;
图3是本申请实施例提供的数据交互方法中S130a~131a的流程示意图;
图4是本申请实施例提供的群组划分的一种场景示意图;
图5是本申请实施例提供的数据交互方法中S13的具体流程示意图;
图6是本申请实施例提供的数据交互方法中S120a~120b的流程示意图;
图7是本申请实施例提供的数据交互装置的结构框图。
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为便于对本申请实施例的理解,下面对几个概念进行简单介绍。
消息:指两个客户端或者两个应用之间传递的数据。
消息中间件:用于负责消息的传递、存储和分发的一种中间件,其部署有消息服务器,消息中间件包括但不限于RabbitMQ、Kafka、RocketMQ等。
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT):是一个基于客户端-服务器的消息发布/订阅传输协议。
虚拟主机(Virtual Host):在本申请中,虚拟主机是指单个消息服务器划分出的多个虚拟服务器,每个虚拟主机之间是相互隔离的。
连接池:在本申请中,连接池为一个可以用于创建并存放连接对象的缓存池,连接池中的连接对象可以重用,即当一个线程从连接池中获取连接对象且在线程执行完任务时会将连接对象归还至连接池,然后该连接对象可以给后续的其他线程使用。
在如今的物联网应用开发中,为了简化开发步骤及提高开发效率,通常会抽象出一个物联网平台,由物联网平台与底层的设备进行数据的通信,应用层直接与物联网平台进行交互。如此,应用层可免去直接与设备进行交互,由物联网平台屏蔽掉各种复杂的通信协议及数据交互协议。
对于设备数量多的场景,考虑到设备数量并发量大,物联网平台可通过消息服务器实现数据的交互。例如,物联网平台在接收到大量的设备数据时,可以将设备数据发送给消息服务器,消息服务器再将设备数据转发至消息队列中存储,应用层再从消息队列中读取设备数据。如此,当设备数据量比较大时,应用层可避免由于短时间内处理大量设备数据而导致***崩溃。然而,在该场景中,物联网平台每发送一条数据给消息服务器,都需要与消息服务器建立新的连接,而该场景下数据并发量比较大,物联网平台需频繁与消息服务器建立连接,导致物联网平台的稳定性差。
为解决上述问题,本申请实施例提供一种数据交互方法、装置及***。
请参见图1,图1示出了本实施例的数据交互***的一种应用场景的示意图。该***可以包括:物联网平台1、应用层3和设备层2。其中,应用层3中可以部署有至少一个应用31。该应用31可以包括但不限于手机或平板电脑等智能终端上运行的应用程序以及具备运算能力和处理能力的应用终端设备。设备层可以部署有多个设备21,设备21可以包括多种不同类型的传感器,例如,温度传感器、湿度传感器。物联网平台1可与应用层3、设备层2之间进行双向通信。
如图1所示,应用层3与物联网平台1支持HTTP协议。物联网平台1可以记录有设备基础信息,该设备基础信息可以为人为预先录入的信息。当应用层3中的应用31需获取设备基础信息等这些对实时性要求不高的数据时,应用层3可通过HTTP协议发送设备基础信息获取请求,物联网平台1在接收到设备基础信息获取请求后,将设备基础信息通过HTTP协议返回给应用层3。
对于应用层3发送给设备层2的设备控制指令,物联网平台1可以基于MQTT发布/订阅模式实现。在MQTT发布/订阅模式中,消息的发送方称为发布者,消息的接收方称为订阅者,服务器存放消息的容器称为主题。在消息的处理过程中,发布者发布消息,该消息携带主题信息,服务器基于该主题信息将消息存放到对应的主题中,订阅者可以从该主题中获取消息。
物联网平台1可以提供订阅服务,订阅者可以向物联网平台1登记订阅主题信息。具体地,如图1所示,物联网平台中部署有平台服务器11,该平台服务器11可以接收设备层2中的设备发送的应用主题订阅请求,该应用主题订阅请求可以用于指示各个设备所订阅的应用主题。由此,物联网平台1可以记录并保存设备层2中的各个设备所订阅的应用主题。
物联网平台1可以通过HTTP协议接收应用层3发送的设备控制指令,该设备控制指令携带有设备标识,例如,设备ID。物联网平台1中的平台服务器11在接收到该设备控制指令后,可以将该设备控制指令转换为设备能够识别的指令数据格式,并根据设备标识确定目标设备,并根据各个设备所订阅的应用主题,确定目标设备订阅的应用主题。其中,各个设备唯一对应一个设备标识。
物联网平台1在确定与该设备标识对应的应用主题以及目标设备后,可以将转换后的设备控制指令发送给对应的应用主题,以使得目标设备能从对应的应用主题中获取该转换后的设备控制指令。由此,物联网平台1实现了设备控制指令的传输任务。
对于设备实时状态、设备心跳等及时性要求高且并发量比较大的数据,可以基于消息服务器的缓存机制实现应用与设备之间的数据交互。请参见图1,该***还可以包括消息服务器4,该消息服务器4与物联网平台1、应用层3连接。示例性的,该消息服务器4可以是RabbitMQ服务器。
消息服务器的缓存机制体现在:消息服务器可以将上游发送的数据存储起来,尤其是在数据并发量大的场景中。若下游的设备业务能力不足以在短时间内处理大量的数据,通过消息服务器的缓存机制就能将上游发送的大量数据缓存起来,使得下游的设备能按照业务处理能力将缓存的大量数据分散到很长一段时间处理,如此可以提高***的稳定性。例如,图1中,设备层2包含有大量的设备21,若应用层3中的应用31需求获取设备层2的第一设备数据,该第一设备数据可以包括设备实时状态等及时性要求比较高且并发量较大的数据。当设备层2中的第一设备数据传输至物联网平台1时,物联网平台1可以将第一设备数据发送给消息服务器4进行缓存(一般是将设备数据缓存到消息队列中),应用层3再从消息队列中获取实时状态数据。
物联网平台1中的平台服务器11还可以响应于物联网平台1所执行的设备主题订阅请求,该设备主题订阅请求可以用于指示物联网平台1订阅设备主题,该设备主题可以用于存放设备层2中的各个设备发布的第一设备数据。如此,当平台服务器11在接收到设备层中的设备发送的第一设备数据时,可以解析该设备所携带的设备主题信息,并将第一设备数据存放在设备主题中,以使得物联网平台从设备主题中获取第一设备数据。
应用层3中的多个应用可以划分为多个群组。物联网平台1可以存储有设备标识与群组标识的对应关系,该对应关系可以根据实际情况预先建立并存储到物联网平台1的存储模块中。由此,当物联网平台1在接收到第一设备数据时,可以根据第一设备数据携带的设备标识确定目标群组,该目标群组为多个群组中的其中一个群组,该目标群组可以包含有至少一个目标应用。
物联网平台1在获取到第一设备数据以及确定目标群组后,可以将第一设备数据发送至消息服务器4。
物联网平台1可以预先建立第一连接池,该第一连接池可以为一个用于存放多个第一连接对象的连接池,且该第一连接池中的各个第一连接对象可以重复使用。该第一连接对象可以用于表示物联网平台1与消息服务器4之间的数据传输通道。
物联网平台1每发送一条第一设备数据给消息服务器4,都从第一连接池中获取第一连接对象,如果获取到第一连接对象,则物联网平台1可以通过调用该第一连接对象传输第一设备数据给消费服务器4,消息服务器4再将第一设备数据转发给目标应用。如此,物联网平台1无需每发布一条消息都创建新的连接,能够减少对物联网平台资源的消耗,从而能够提高物联网平台1的稳定性,同时,也能减少消息服务器4在短时间内频繁响应连接创建操作的概率,从而能减少消息服务器4崩溃的概率。
下面对本申请实施例的数据交互方法进行详细说明。
请参见图2,图2是本申请实施例提供的数据交互方法的流程示意图。该实施例的数据交互方法由物联网平台执行,该方法包括步骤S11~S13:
S11:接收设备层发送的第一设备数据。
其中,第一设备数据携带有设备标识。示例性的,该设备标识可以包括但不限于设备名称、设备ID和设备MAC地址。
在一种实施方式中,物联网平台可以通过HTTP方式接收设备层中的设备发送的第一设备数据。该第一设备数据可以为设备实时状态等实时性要求高的数据,物联网平台可以同时接收一个或多个不同设备发送的第一设备数据,并解析各个第一设备数据携带的设备标识信息。
在另一种实施方式中,物联网平台可以基于MQTT协议接收设备层中的设备发送的第一设备数据。在物联网平台接收到应用层基于MQTT协议发送的第一设备数据时,物联网平台将第一设备数据保存到与该设备标识对应的设备主题中。
S12:基于设备标识确定目标群组。
其中,目标群组可以包含有一个或多个目标应用。
在一些实施方式中,对应于上述HTTP协议传输方式,物联网平台可以基于预先建立的设备标识与群组标识的对应关系,确定目标群组。该对应关系可以为应用层中的应用预先根据实际情况建立并存储到物联网平台中。
S13:若在第一连接池中查找到第一连接对象,则通过第一连接对象将第一设备数据发送给消息服务器,以由消息服务器将第一设备数据转发至目标应用。
其中,第一连接池可以为预先建立的用于存放第一连接对象的一个连接池。第一连接对象可以用于表示物联网平台与消息服务器之间的数据传输通道。
在一些实施方式中,物联网平台可以在历史时间接收到第一设备数据时,例如,在物联网平台上一次接收到第一设备数据时,向消息服务器发起连接请求,以在第一连接池中新建第一连接对象。如此,物联网平台在当前接收到第一设备数据时,就可以在第一连接池中查找到第一连接对象。
本实施例中,物联网平台在接收到设备层发送的第一设备数据后,基于第一设备数据携带的设备标识确定目标群组,以确定接收第一设备数据的目标应用,并在第一连接池中查找第一连接对象。当查找到第一连接对象,通过第一连接对象将第一设备数据发送给消息服务器,以由消息服务器将第一设备数据转发至目标应用。通过在第一连接池中新建并缓存第一连接对象,物联网平台在每次传输第一设备数据给消息服务器时,都可以重复调用该第一连接对象传输第一设备数据,大大减少了物联网平台频繁建立连接的操作,能在数据并发量大的场景下减少了物联网平台崩溃的概率,有利于维护物联网平台的稳定性,并能减少消息服务器崩溃的概率。
在一种实施方式中,上述方法还可以包括S14:
S14:若在第一连接池中查找不到第一连接对象,则建立物联网平台与消息服务器之间的数据传输通道,以在第一连接池中新增第一连接对象,并通过第一连接对象将第一设备数据发送给消息服务器。
在本实施例中,若物联网平台未在第一连接池中找到第一连接对象,说明当前第一连接池中未存在物联网平台与消息服务器之间的数据传输通道,此时物联网平台可以向消息服务器发起连接请求,以建立物联网平台与消息服务器之间的数据传输通道。
该实施例通过在第一连接池中新建第一连接对象,基于连接池的连接复用机制,物联网平台在后续其他线程传输第一设备数据时,仍能通过该第一连接对象传输第一设备数据,大大减少了物联网平台频繁建立连接的操作,从而提高了物联网平台的稳定性。
在一种实施方式中,参见图3,图3是本申请实施例提供的步骤S130a~S131a的流程示意图。在上述S12之后,还可以包括S130a~S130b:
S130a:根据所述目标群组确定目标群组连接对象。
其中,应用层中的应用被划分成不同的群组。例如,同一家企业管理的多个应用被划分到一个群组中。
物联网平台可以提供群组注册功能,通过物联网平台可以注册各个群组及管理各个群组的信息,群组的信息可以包括群组ID、群组包含的所有应用等等。由此,物联网平台在确定目标应用后,可以确定该目标应用对应的群组。
在一些实施方案中,物联网平台可以基于预先建立的群组标识与群组连接对象的对象关系,在确定群组为目标群组后,找到与目标群组标识对应的群组连接对象,得到目标群组连接对象。示例性的,群组标识可以是群组ID。
对应地,上述S13中的第一连接对象可以包括目标群组连接对象,上述S13可以包括S131a:
S131a:若在第一连接池中查找到目标群组连接对象,则通过目标群组连接对象将第一设备数据发送给消息服务器,以由消息服务器传输第一设备数据给目标应用。
其中,目标群组连接对象可以用于表示物联网平台与消息服务器之间的一条数据传输通道,且该目标群组连接对象与目标群组对应。
物联网平台建立的第一连接池中可以包括有多个群组连接对象,物联网平台在确定目标群组后,从多个群组连接对象中选择与目标群组对应的目标群组连接对象将第一设备数据发送给消息服务器。
例如,假设第一设备数据携带的设备标识为设备ID=1,物联网平台可以基于设备标识与群组标识的对应关系,确定第一设备数据所对应的群组为群组ID=1的群组。物联网平台所建立的第一连接池中包含有多个群组连接对象,物联网平台在确定第一设备数据所对应的群组为群组ID=1的群组后。假设群组ID=1的群组对应于第1个群组对接对象,则选择第1个群组连接对象将第一设备数据发送给消息服务器。
在一些实施方案中,第一设备数据可以携带有路由键信息,该路由键信息可以用于指示第一设备数据所存放的消息队列。应用层中的各个群组可以唯一对应于一个应用服务器,各个应用服务器与消息服务器建立长连接。各个应用服务器可以订阅各个消息队列,以监听订阅的消息队列中的消息。当各个应用服务器监听到所订阅的消息队列中有消息(例如,新的第一设备数据被存放到消息队列中)时,则通过各个应用服务器各自对应的长连接从各个应用服务器各自订阅的消息队列中获取第一设备数据后转发至各个应用服务器对应的所有应用
由于应用层中的多个应用可能属于不同的群组,设备层中的多个设备也可能与不同群组中的应用对接。为了满足数据隔离性需求和安全传输的需求,在本实施例中,物联网平台根据第一设备数据确定目标群组,并根据目标群组选择对应的目标群组连接对象传输第一设备数据到消息服务器,以由消息服务器传输第一设备数据给目标应用,达到数据隔离和安全传输的目的。
在一种场景中,如图4所示,图4示出了群组划分的一种场景示意图。该场景中,物联网平台所连接的消息服务器可以包括但不限于RabbitMQ服务器、Kafka服务和RocketMQ服务器。以消息服务器为RabbitMQ服务器为例,RabbitMQ服务器可以部署有多个虚拟主机,每个虚拟主机相当于一个虚拟的且性能较小的RabbitMQ服务器。物联网平台可以响应于应用层划分的多个群组操作,将各个群组对应到各个租户,一个群组对应一个租户。示例性的,如图4所示,群组1对应于租户1,群组n对应于租户n。物联网平台可以为各个租户分配RabbitMQ子账号及虚拟主机。各个RabbitMQ子账号位于RabbitMQ服务器上,新增租户时只需增加RabbitMQ子账号即可,无需为每一个租户都分配一个RabbitMQ服务器,能够减少服务器部署成本。
由此,当物联网平台根据第一设备数据携带的设备标识确定目标群组后,物联网平台可以根据目标群组确定目标租户和目标群组连接对象,并通过目标群组连接对象将第一设备数据发送至消息服务器中与目标租户对应的虚拟主机中。各个租户中的应用只能访问各个租户对应的虚拟主机上的数据,如此形成了数据的逻辑隔离。
示例性的,以RabbitMQ服务器为例,各个群组连接对象的建立和获取过程可以包括:首先声明一个连接池接口,并通过该连接池接口传入租户ID参数创建连接对象,以便于能基于租户ID创建各个群组连接对象,同时采用并发字典来存储各个群组连接对象,并发字典是可由多个线程同时访问的键/值对的线程安全集合,支持在多线程并发场景下使用。在获取各个群组连接对象时,可以基于租户ID获取各个租户对应的群组连接对象。
在一种实施方式中,参见图5,图5是本实施例提供的数据交互方法中S13的具体流程图。上述S13可以包括S131~S132:
S131:若第一连接对象的连接状态为连接,则获取第一连接对象,并通过第一连接对象将第一设备数据发送给消息服务器。
在本实施例中,对于第一连接对象包含有多个群组连接对象的场景,物联网平台可以仅对目标群组连接对象的连接状态进行判断,即物联网平台在确定目标群组后,在第一连接池中查找目标群组连接对象。若在第一连接池中找到目标群组连接对象,且目标群组连接对象的连接状态为连接,则从目标群组连接对象中获取目标群组连接对象的资源,并调用该目标群组连接对象传输第一设备数据给消息服务器。
S132:若第一连接对象的连接状态为断开,则重新建立第一连接对象,以通过重新建立好的第一连接对象将第一设备数据发送给消息服务器。
在本实施例中,若第一连接对象的连接状态为断开,则说明该第一连接对象在之前已经建立好,但其他线程在执行完任务后将第一连接对象关闭,或者,网络环境比较恶劣导致物联网平台与消息服务器之间的数据传输通道被强制关闭。例如,假设物联网平台在发送设备1对应的第一设备数据时,在第一连接池中构建了第一连接对象,并通过第一连接对象将设备1对应的第一设备数据传输到消息服务器。在设备1对应的第一设备发送到消息服务器之后,物联网平台关闭物联网平台与消息服务器的连接,或者,由于网络环境恶劣等的影响导致物联网平台与消息服务器之间的数据传输通道被断开。当物联网平台在发送设备2对应的第一设备数据时,在第一连接池中查找到第一连接对象,此时,需要判断第一连接对象的连接状态,若第一连接对象的连接状态为断开,则物联网平台可以向消息服务器发起连接请求,以重新建立第一连接对象,并在建立好第一连接对象后将第一连接对象放入第一连接池中进行缓存,以便于后续使用。
对于第一连接对象包含有多个群组连接对象的场景,物联网平台可以仅对目标群组连接对象的连接状态进行判断,即物联网平台在确定目标群组后,在第一连接池中查找目标群组连接对象,并根据目标群组连接对象的连接状态判断是否要重新连接目标群组连接对象对应的数据传输通道。
可见,该实施例中,物联网平台在第一连接池查找到第一连接对象后,对第一连接对象的连接状态进行判断,并在第一连接对象的连接状态为连接时才调用第一连接对象将第一设备数据传输给消息服务器,提高了第一设备数据传输的成功率。
在一种实施方式中,上述实施例还可以包括S15:
S15:在将第一设备数据发送给消息服务器后,释放第一连接对象的资源,并将第一连接对象归还至第一连接池。
在本实施例中,当物联网平台将第一设备数据发送给消息服务器后,物联网平台不会关闭物联网平台与消息服务器之间的数据传输通道,而是将第一连接对象归还至第一连接池中以便于可以重复使用。
通过该实施例,物联网平台在将第一设备数据发送给消息服务器后,释放第一连接对象的资源,并将第一连接对象归还至第一连接池,以使得后续其他线程在发送第一设备数据时能够利用该第一连接对象实现数据的传输,实现了连接的复用。由此,物联网平台无需每发布一条第一设备数据就与消息服务器建立新的连接,大大减少了物联网平台和消息服务器的资源消耗,在数据并发量大的场景下,能够提高物联网平台的稳定性。
在一种实施方式中,参见图6,图6是本实施例提供的数据交互方法中S120a~S120b的流程示意图。上述实施例还可以包括S120a~S120b:
S120a:确定设备标识所匹配到的至少一个路由键。
其中,路由键是一种用于消息路由的关键信息。在消息服务器中,消息服务器可以通过匹配消息的路由键来确定将消息传递给哪个消息队列中,以使得消息接收方从该消息队列中获取消息。在本实施例中,消息队列是面向应用层所建立的用于存放消息的队列,不同的应用可以绑定有不同的消息队列,例如,应用1可以绑定路由键为设备ID=1的消费队列。在本实施例中,物联网平台包含平台服务器,物联网平台中的平台服务器可以接收应用层中的各个应用发送的设备主题订阅请求,该设备主题订阅请求用于指示各个应用所订阅的设备主题。如此,物联网平台可以记录并保存应用层中的各个应用所订阅的设备主题。物联网平台可以根据各个应用所订阅的设备主题以及预先建立的设备主题与路由键的对应关系,确定与设备标识匹配到的至少一个路由键。
例如,假设应用层中的多个应用属于多个不同的企业,属于同一个企业的应用被划分到同一个群组。各个群组中的应用可以订阅一个或多个设备主题,应用订阅的设备主题可以包括但不限于群组ID、设备型号和设备ID等多种维度的设备主题。
假设群组1中的应用订阅了群组ID为1的设备主题,同时也订阅了设备类型为温度传感器类型的设备主题。而设备1对应的目标应用属于群组ID为1的设备,同时也属于温度传感器类型的设备,则物联网平台可以确定设备1所匹配到的路由键包括群组ID为1的路由键和设备类型为温度传感器类型的路由键。
如下表1所示,其给出了设备主题与路由键的映射关系的一种示例:
表1
设备主题类型 设备主题 路由键
按群组 群组ID Data_flow/tenant/pub/{tenantId}
按设备类型 设备类型ID Data_flow/model/pub/{model Id}
按设备 设备ID Data_flow/device/pub/{deviceId}
S120b:基于至少一个路由键生成路由键信息,并对第一设备数据添加路由键信息后封装成第一消息。
物联网平台可以将添加了路由键信息的第一设备数据按照一定的格式组织,并使用特定的编码方式进行编码后形成第一消息,以便于在网络中传输。
对应地,上述S13可以包括:
将第一消息通过第一连接对象发送给所述消息服务器。
在具体实施时,物联网应用平台可以将第一消息通过第一连接对象发送给消息服务器,以使得消息服务器基于第一消息携带的路由键信息将第一消息分别存储至各个路由键对应的目标消息队列中。
在本发明实施例中,第一消息携带有路由键信息,该路由键信息可以绑定有多个消息队列。同时,应用层中的应用也可以根据订阅的设备主题绑定对应的消息队列。例如,应用1订阅了设备ID为1的设备主题和群组ID为1的设备主题,则应用1绑定了设备ID为1的消息队列和群组ID为1的消费队列。物联网平台在将第一消息发送至消息服务器后,消息服务器将第一设备分别存储到设备ID为1的消息队列和群组ID为1的消费队列,应用1在获取第一设备数据时,可以从设备ID为1的消息队列和群组ID为1的消费队列中获取。
该实施例中,物联网平台基于设备标识,并结合应用层配置的订阅主题信息,确定设备标识匹配到的至少一个路由键,并将第一设备数据分发到与各个路由键对应的消息队列中存储。由此,订阅了与各个路由键对应的设备主题的应用可以从各个路由键对应的消息队列中获取第一设备数据,能够结合实际情况进行消息的分发,提高了消息传递的效率。
在一种实施方式中,所述方法还可以包括:
接收应用层发送的设备控制指令。其中,设备控制指令携带有设备标识。示例性的,该设备标识可以包括但不限于设备ID和设备MAC地址。
基于应用标识,确定目标主题和目标设备,并将设备控制指令发送至目标主题。
从目标主题中拉取设备控制指令,并将设备控制指令发送给目标设备。
对于应用层发送给设备层的设备控制指令,物联网平台可以基于MQTT发布/订阅模式实现。具体地,物联网平台可以接收设备层中的设备发送的应用主题订阅请求,该应用主题订阅请求用于指示各个设备所订阅的与应用相关的主题,设备所订阅的与应用相关的主题可以按照群组ID划分以及应用ID划分。物联网平台可以基于各个设备所订阅的应用主题,并根据应用标识确定目标主题和目标设备,并将设备控制指令转发给目标设备。
例如,假设设备ID为1的设备订阅了应用ID为1的主题,则物联网平台可以确定目标主题为应用ID为1的主题,目标设备为设备ID为1的设备,则将设备控制指令存储到应用ID为1的主题,并从应用ID为1的主题中拉取设备控制指令发送给设备ID为1的设备。
该实施例中,物联网平台基于MQTT发布/订阅模式实现设备控制指令的转发,由于物联网平台基于MQTT协议实现物联网平台到设备层之间的数据转发,相比于HTTP协议,所占用的网络开销比较小。
参见图7,图7是本申请实施例提供的数据交互装置7的结构框图。该数据交互装置7应用于物联网平台,该数据交互装置7包括接收模块71、确定模块72和发送模块73。
接收模块71用于接收设备层发送的第一设备数据。其中,第一设备数据携带有设备标识。
确定模块72用于基于设备标识确定目标群组;目标群组包含有至少一个目标应用。
发送模块73用于若在第一连接池中查找到第一连接对象,则通过第一连接对象将第一设备数据发送给消息服务器,以由述消息服务器将第一设备数据转发至目标应用。其中,第一连接池为预先建立的用于存放第一连接对象的一个连接池;第一连接对象用于表示物联网平台与消息服务器之间的数据传输通道。
在一种实施方式中,上述装置还可以包括目标群组确定模块,用于确定所述目标应用对应的群组,得到目标群组并生成目标群组标识信息,并对所述第一设备数据添加所述目标群组标识信息后封装成第一消息。
对应地,上述发送模块具体用于:若在第一连接池中查找到目标群组连接对象,则通过述目标群组连接对象将第一消息发送给消息服务器。其中,目标群组连接对象用于表示物联网平台与消息服务器建立的一条连接,且目标群组连接对象允许传输的数据类型为携带有目标群组标识信息的数据。
在一种实施方式中,上述发送模块可以包括第一连接单元和第二连接单元。其中,第一连接单元可以用于:若第一连接对象的连接状态为连接,则获取第一连接对象,并通过第一连接对象将第一设备数据发送给消息服务器。
第二连接单元可以用于若所述第一连接对象的连接状态为断开,则重新建立第一连接对象,以通过重新建立好的第一连接对象将第一设备数据发送给消息服务器。
在一种实施方式中,上述装置还可以包括归还模块,用于在将第一设备数据发送给消息服务器后,释放第一连接对象的资源,并将第一连接对象归还至第一连接池。
在一种实施方式中,上述发送模块还可以用于:若在第一连接池中查找不到第一连接对象,则建立物联网平台与消息服务器之间的数据传输通道,以在第一连接池中新增第一连接对象,并通过第一连接对象将第一设备数据发送给消息服务器。
在一种实施方式中,上述装置还可以包括匹配模块,该匹配模块用于在接收设备层发送的第一设备数据之后,确定设备标识所匹配到的至少一个路由键,并基于至少一个路由键生成路由键信息,并对第一设备数据添加所述路由键信息后封装成第一消息。
对应于上述匹配模块,上述发送模块还可以包括发送单元,用于将所述第一消息通过第一连接对象发送给所述消息服务器。
在一种实施方式中,上述发送单元可以用于:将第一消息通过第一连接对象发送给述消息服务器,以使得述消息服务器基于第一消息携带的路由键信息将第一消息分别存储至各个路由键对应的目标消息队列中。
在一种实施方式中,上述装置还可以包括指令发送模块,该指令发送模块可以用于:
接收应用层发送的设备控制指令。其中,该设备控制指令携带有应用标识。示例性的,该应用标识可以为应用ID。
基于应用标识,确定目标主题和目标设备,并将设备控制指令发送至目标主题。
从目标主题中拉取设备控制指令,并将设备控制指令发送给目标设备。
需要说明的是,上述装置之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例还提供一种数据交互***,该数据交互***的结构框图可以参见图1。该数据交互***包括应用层3、物联网平台1、设备层2和消息服务器4。其中,物联网平台1和设备层2、应用层3连接。
其中,应用层3中可以包括有多个应用31,设备层2中可以包括有多个设备21。
在该数据交互***中,设备层2向物联网平台1发送第一设备数据,物联网平台1在接收设备层发送的第一设备数据,该第一设备数据携带有设备标识。物联网平台1可以基于该设备标识确定目标群组。其中,目标群组包含有至少一个目标应用。
物联网平台1在确定目标群组后,在第一连接池中查找第一连接对象。若在第一连接池中查找到第一连接对象,则通过第一连接对象将第一设备数据发送给消息服务器4。第一连接池可以为预先建立的用于存放第一连接对象的一个连接池,第一连接对象可以用于表示物联网平台1与消息服务器4之间的数据传输通道。
消息服务器4在接收所述第一设备数据后,将第一设备数据发送给应用层3中的目标群组对应的应用服务器,以使得目标群组对应的应用服务器将第一设备数据转发至所有目标应用。目标应用在接收到第一设备数后,处理该第一设备数据。
在一种实施方式中,上述物联网平台1还可以在确定目标群组后,可以基于目标群组确定目标群组连接对象。
如此,物联网平台1在获取到第一设备数据后,可以在第一连接池中查找目标群组连接对象,若在第一连接池中查找到目标群组连接对象,则通过目标群组连接对象将第一消息发送给消息服务器4。若在第一连接池中未查找到目标群组连接对象,则物联网平台1可以向消息服务器4发起目标群组连接请求,以新建目标群组连接对象并将目标群组连接对象存放至第一连接池中,从而能通过目前群组连接对象将第一消息传输给消息服务器4。其中,目标群组连接对象可以用于表示物联网平台1与消息服务器4建立的一条数据传输通道,且目标群组连接对象与目标群组对应。
消息服务器4在接收到第一设备数据后,可以根据第一设备数据携带的路由键信息将第一设备数据存放到对应的消息队列,其中,路由键信息用于指示第一设备数据所要存放到的消息队列。各个目标群组对应的应用服务器可以根据实际情况订阅对应的消息队列,例如,应用服务器1订阅的消息队列可以为消息路由键信息为设备ID=1的消息队列。各个应用服务器可以与消息服务器建立长连接,并在监听到各个应用服务器各自所订阅的消息队列中有第一设备数据时,从各个应用服务器各自所订阅的消息队列中获取第一设备数据。
在一种实施方式中,物联网平台1在获取到第一设备数据后,还可以基于第一设备数据携带的设备标识,确定与设备标识匹配到的至少一个路由键。物联网平台1在确定至少一个路由键之后,可以基于至少一个路由键生成路由键信息,并对第一设备数据添加路由键信息后以封装成第一消息。物联网平台1可以将第一消息通过第一连接对象发送给消息服务器4,以使得消息服务器4基于第一消息携带的路由键信息将第一消息分别存储至各个路由键对应的目标消息队列中。由此,应用层3中绑定了目标消息队列的应用可以从目标消息队列中读取第一消息。
在一种实施方式中,上述***中,物联网平台1可以接收设备层2中的设备21发送的应用主题订阅请求,该应用主题订阅请求用于指示各个设备所订阅的与应用相关的主题。
物联网平台1在接收到应用层3发送的设备控制指令,该设备控制指令可以携带有设备标识。物联网平台1可以基于各个设备所订阅的应用主题,并根据应用标识确定目标主题和目标设备,并将设备控制指令发送至目标主题中存储。物联网平台可以从目标主题中拉取设备控制指令,并将设备控制指令发送给目标设备。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围。

Claims (10)

1.一种数据交互方法,其特征在于,包括:
接收设备层发送的第一设备数据;其中,所述第一设备数据携带有设备标识;
基于所述设备标识确定目标群组;所述目标群组包含有至少一个目标应用;
若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,以由所述消息服务器将所述第一设备数据转发至所述目标应用;其中,所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道。
2.如权利要求1所述的数据交互方法,其特征在于,在所述基于所述设备标识确定目标群组之后,还包括:
根据所述目标群组确定目标群组连接对象;
对应地,所述第一连接对象包括目标群组连接对象;所述若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,包括:
若在所述第一连接池中查找到所述目标群组连接对象,则通过所述目标群组连接对象将所述第一设备数据发送给所述消息服务器;其中,所述目标群组连接对象用于表示所述物联网平台与所述消息服务器之间的其中一条数据传输通道,且所述目标群组连接对象与所述目标群组对应。
3.如权利要求1所述的数据交互方法,其特征在于,所述若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,包括:
若所述第一连接对象的连接状态为连接,则获取所述第一连接对象,并通过所述第一连接对象将所述第一设备数据发送给所述消息服务器;
若所述第一连接对象的连接状态为断开,则重新建立所述第一连接对象,以通过重新建立好的所述第一连接对象将所述第一设备数据发送给所述消息服务器。
4.如权利要求1所述的数据交互方法,其特征在于,所述方法还包括:
在将所述第一设备数据发送给所述消息服务器后,释放所述第一连接对象的资源,并将所述第一连接对象归还至所述第一连接池。
5.如权利要求1所述的数据交互方法,其特征在于,所述方法还包括:
若在所述第一连接池中查找不到所述第一连接对象,则建立所述物联网平台与所述消息服务器之间的数据传输通道,以在所述第一连接池中新增所述第一连接对象,并通过所述第一连接对象将所述第一设备数据发送给所述消息服务器。
6.如权利要求1所述的数据交互方法,其特征在于,在所述接收设备层发送的第一设备数据之后,还包括:
确定所述设备标识所匹配到的至少一个路由键;
基于所述至少一个路由键生成路由键信息,并对所述第一设备数据添加所述路由键信息后封装成第一消息;
对应地,所述通过第一连接对象将所述第一消息发送给消息服务器,包括:
将所述第一消息通过所述第一连接对象发送给所述消息服务器。
7.如权利要求6所述的数据交互方法,其特征在于,所述将所述第一消息通过所述第一连接对象发送给所述消息服务器,包括:
将所述第一消息通过所述第一连接对象发送给所述消息服务器,以使得所述消息服务器基于所述第一消息携带的路由键信息将所述第一消息分别存储至各个所述路由键对应的目标消息队列中。
8.如权利要求1所述的数据交互方法,其特征在于,所述方法还包括:
接收应用层发送的设备控制指令;其中,所述设备控制指令携带有设备标识;
基于所述设备标识,确定目标主题和目标设备,并将所述设备控制指令发送至所述目标主题;
从所述目标主题中拉取所述设备控制指令,并将所述设备控制指令发送给所述目标设备。
9.一种数据交互装置,其特征在于,包括:
接收模块,用于接收设备层发送的第一设备数据;其中,所述第一设备数据携带有设备标识;
确定模块,用于基于所述设备标识确定目标群组;所述目标群组包含有至少一个目标应用;
发送模块,用于若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器,以由所述消息服务器将所述第一设备数据转发至所述目标应用;其中,所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道。
10.一种数据交互***,其特征在于,包括应用层、物联网平台、设备层和消息服务器;所述物联网平台和所述设备层、所述应用层连接;
所述设备层用于向所述物联网平台发送第一设备数据;
所述物联网平台用于接收设备层发送的第一设备数据;所述第一设备数据携带有设备标识;还用于基于所述设备标识确定目标群组;若在第一连接池中查找到第一连接对象,则通过所述第一连接对象将所述第一设备数据发送给消息服务器;所述目标群组包含有至少一个目标应用;所述第一连接池为预先建立的用于存放第一连接对象的一个连接池;所述第一连接对象用于表示物联网平台与所述消息服务器之间的数据传输通道;
所述消息服务器用于接收所述第一设备数据,并将所述第一设备数据发送给所述应用层中的目标应用。
CN202311184573.XA 2023-09-14 2023-09-14 数据交互方法、装置及*** Pending CN117176782A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311184573.XA CN117176782A (zh) 2023-09-14 2023-09-14 数据交互方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311184573.XA CN117176782A (zh) 2023-09-14 2023-09-14 数据交互方法、装置及***

Publications (1)

Publication Number Publication Date
CN117176782A true CN117176782A (zh) 2023-12-05

Family

ID=88931601

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311184573.XA Pending CN117176782A (zh) 2023-09-14 2023-09-14 数据交互方法、装置及***

Country Status (1)

Country Link
CN (1) CN117176782A (zh)

Similar Documents

Publication Publication Date Title
US11411897B2 (en) Communication method and communication apparatus for message queue telemetry transport
CN106230896B (zh) 一种消息推送方法、装置及***
US10367852B2 (en) Multiplexed demand signaled distributed messaging
CN109756559B (zh) 面向嵌入式机载***分布式数据分发服务的构建及使用方法
US8447881B2 (en) Load balancing for services
CN111212085B (zh) 物联网平台同步调用的方法、物联网***和网络设备
CN103312528B (zh) 一种心跳消息发送方法及用户终端
CN107528891B (zh) 一种基于WebSocket的自动集群方法及其***
US20030126196A1 (en) System for optimizing the invocation of computer-based services deployed in a distributed computing environment
CN112788074B (zh) 数据发送方法、处理方法、接收方法及其设备、存储介质
CN100558109C (zh) 基于会话初始协议的负载均衡实现方法及***
US8606908B2 (en) Wake-up server
WO2023221452A1 (zh) 报文处理***、方法、设备和存储介质
CN110635932B (zh) 一种基于OpenStack控制平面的虚拟网络性能的优化方法
CN108259605B (zh) 一种基于多数据中心的数据调用***及方法
CN113329042B (zh) 消息处理方法及***、车联网***、服务器、电子设备
CN116800787A (zh) 一种基于以太网通讯协议的车载通信方法及***
CN116405547A (zh) 消息推送方法、装置及处理器、电子设备、存储介质
CN117176782A (zh) 数据交互方法、装置及***
CN114500341A (zh) 广域网下的终端实时管控方法及管控服务端
CN111294383B (zh) 物联网服务管理***
CN110474781B (zh) 一种组播数据转发的方法及装置
CN111541667A (zh) 一种***间消息通信的方法、设备、存储介质
CN117873758B (zh) 一种基于消息总线的dcs***站间通信方法
CN115022110B (zh) 消息分发方法、可读介质以及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication