基于发布/订阅模型的消息路由方法、装置、设备及介质

文档序号:25992090发布日期:2021-07-23 21:04阅读:78来源:国知局
基于发布/订阅模型的消息路由方法、装置、设备及介质

本申请涉及物联网技术领域,特别涉及一种基于发布/订阅模型的消息路由方法、装置、设备及介质。



背景技术:

发布/订阅(publish/subscribe)模型是一种基于兴趣的事件通信模型,在时间、空间和控制流上是解耦的,提供了异步、匿名的一对多通信,在大规模分布式计算环境中有着广阔的应用。

发布/订阅模型中存在两种身份:客户端(client)节点以及代理方(broker)节点,代理方节点相互协作构成代理网络。客户端节点具有采集数据或数据消费的能力,并通过消息的形式发布数据,而代理网络中的代理方节点通过订阅客户端节点的消息对应的主题的形式来收集客户端节点的数据,并通过代理网络的转发最终将消息上传给互联网或者云端服务器。

在代理网络中如何进行消息的有效传输,相关技术中尚未提供较好的解决方案。



技术实现要素:

本申请实施例提供了一种基于发布/订阅模型的消息路由方法、装置、设备及介质,代理网络可以基于确定好的目标路由路径,实现主题数据的有效传输。所述技术方案如下。

根据本申请的一方面,提供了一种基于发布/订阅模型的消息路由方法,应用于所述发布/订阅模型对应的代理网络中,所述代理网络包括至少一个代理方节点,所述方法包括:

第一数据接收节点接收主题数据,所述主题数据是由客户端节点采集的与主题相关的数据,所述第一数据接收节点是在所述代理网络中接收所述主题数据的代理方节点;

所述第一数据接收节点在所述代理网络中查找与所述主题相关的目标路由路径,所述目标路由路径的起点是所述第一数据接收节点,终点是数据消费者节点,所述数据消费者节点是在所述代理网络中与云端服务器建立通信连接的代理方节点;

所述代理网络基于所述目标路由路径,将所述主题数据由所述第一数据接收节点路由至所述数据消费者节点。

根据本申请的另一方面,提供了一种基于发布/订阅模型的消息路由装置,应用于所述发布/订阅模型对应的代理网络中,所述代理网络包括至少一个代理方节点,所述装置包括:接收模块、查找模块和路由模块;

所述接收模块,用于供第一数据接收节点接收主题数据,所述主题数据是由客户端节点采集的与主题相关的数据,所述第一数据接收节点是在所述代理网络中接收所述主题数据的代理方节点;

所述查找模块,用于供所述第一数据接收节点在所述代理网络中查找与所述主题相关的目标路由路径,所述目标路由路径的起点是所述第一数据接收节点,终点是数据消费者节点,所述数据消费者节点是在所述代理网络中与云端服务器建立通信连接的代理方节点;

所述路由模块,用于供所述代理网络基于所述目标路由路径,将所述主题数据由所述第一数据接收节点路由至所述数据消费者节点。

根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括:处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的基于发布/订阅模型的消息路由方法。

根据本申请的另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上方面所述的基于发布/订阅模型的消息路由方法。

根据本申请的另一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述可选实现方式中提供的基于发布/订阅模型的消息路由方法。

本申请实施例提供的技术方案带来的有益效果至少包括如下的有益效果。

在发布/订阅模型对应的代理网络中,代理网络中的第一数据接收节点接收到主题数据之后,将在代理网络中查找出与主题相关的目标路由路径,从而使得代理网络可以基于确定好的目标路由路径,将主题数据有效路由至代理网络中的数据消费者节点,从而实现基于发布/订阅模型的消息路由。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请一个示例性实施例提供的基于mqtt协议的发布/订阅模型的示意图;

图2是本申请一个示例性实施例提供的代理网络的示意图;

图3是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由方法的方法流程图;

图4是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由方法的方法流程图;

图5是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由方法的方法流程图;

图6是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由的示意图;

图7是本申请一个示例性实施例提供的重路由机制的示意图;

图8是本申请一个示例性实施例提供的控制器工作的示意图;

图9是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由的示意图;

图10是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由的示意图;

图11是本申请一个示例性实施例提供的从数据消费者节点来看的数据传输完成的时间的对比图;

图12是本申请一个示例性实施例提供的从数据接收节点来看的数据传输完成的时间的对比图;

图13是本申请一个示例性实施例提供的传输性能的对比图;

图14是本申请一个示例性实施例提供的基于发布/订阅模型的消息路由装置的框图;

图15是本申请一个示例性实施例提供的代理方节点的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

物联网系统作为下一代信息技术改革的产物被广泛应用于各行业。随着越来越多异构设备接入物联网系统,物联网系统中需要传输交换的数据量逐渐增加,数据传输成为物联网系统面临的巨大挑战之一。

物联网系统自身具备局限性,可能会使物联网系统的数据传输的性能下降,如:物联网系统的接入设备为资源受限的设备,处理信息能力有限;物联网系统所处网络环境脆弱;物联网系统中的大量数据交换时的延迟问题等等。基于上述情况,在资源受限且脆弱的网络环境的条件下,建立一种能适用动态网络拓扑结构,有效缓解传输时延,提升系统可扩展性的路由算法,对优化物联网系统中的数据传输效率来说具有重要意义。

如上所述,物联网系统中的数据传输面临的问题包括:物联网系统所处网络环境脆弱;物联网系统的接入设备为电池供电,功率有限的设备;物联网系统中的代理方节点进行大量数据交换时出现时延问题;无法及时知道哪些代理方节点损毁,且重新手动配置会使物联网系统的数据交换不易恢复亦缺乏可靠性。

由于目前物联网系统的数据传输中常采用发布/订阅模型,故本申请基于发布/订阅模型,目的是建立一种基于发布/订阅模型的路由算法,该路由算法支持在脆弱动态的网络环境中自动找到特定主题传输的最短路径,且当某代理方节点出现问题时,另一代理方节点可自动与客户端节点建立联系,以保证数据的有效传输。

本申请实施例中所涉及的发布/订阅模型是一种基于消息队列遥测传输(messagequeuingtelemetrytransport,mqtt)协议的发布/订阅模型,mqtt协议是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于传输控制协议/因特网互联协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)协议上。mqtt最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

结合参考如下图1,对基于mqtt协议的发布/订阅模型进行简单介绍。

如图1所示,在基于mqtt协议的发布/订阅模型中,包括:发布者节点110、订阅者节点120以及代理方节点130。其中,发布者节点110与订阅者节点120为客户端节点。

订阅者节点120可以通过在代理方节点130中订阅感兴趣的主题,以接收发布者节点110推送的相应主题的消息。代理方节点130作为发布者节点110与订阅者节点120的中介,接收发布者节点110发布的消息,根据主题推送消息到相应的订阅者节点120。上述“消息”在本申请实施例中也可以理解为主题数据,指的是与主题相关的数据。

可以理解的是,代理方节点130可以由多个不同的代理方节点构成,这些代理方节点形成代理网络。

结合参考如下图2,其示出了本申请一个示例性实施例提供的代理网络的示意图。

在该代理网络中,包括至少一个代理方节点。如图2所示,代理网络包括代理方节点210、代理方节点220、代理方节点230、代理方节点240和代理方节点250。

代理方节点210是代理网络中的数据消费者节点,代理方节点210与云端服务器260建立通信连接,代理方节点210通过通信连接将接收到的主题数据上传给云端服务器260。相较于代理网络中的其他代理方节点,代理方节点210是一种性能更加可靠的交换机,具备更好的硬件资源和带宽资源。

代理方节点250是代理网络中的数据接收节点,代理方节点250接收来自客户端节点的主题数据,该客户端节点与代理方节点250建立了主题会话流。

在如图所示的代理网络中,代理方节点250需要将来自客户端节点的主题数据通过基于发布/订阅模型的消息路由方法,路由至代理方节点210处。

下面,对本申请实施例提供的基于发布/订阅模型的消息路由方法,进行示例性的说明。

图3示出了本申请一个示例性实施例提供的基于发布/订阅模型的消息路由方法的流程图,该方法可以应用于如图2所示的代理网络中,代理网络包括至少一个代理方节点,该方法包括:

步骤310,第一数据接收节点接收主题数据。

其中,主题数据是由客户端节点采集的与主题(topic)相关的数据。

第一数据接收节点是在代理网络中接收主题数据的代理方节点。可以理解的是,如图2所示,在代理网络中,除第一数据接收节点之外,也存在其他的代理方节点,多个代理方节点构成的代理网络负责路由主题数据。

客户端节点是代理网络之外的具有采集数据或数据消费的能力的节点。针对代理网络中的任意一个代理方节点,其可以下接一个或多个客户端节点。

在一种可能的实现方式中,在代理网络中,第一数据接收节点与客户端节点建立了主题会话流,该客户端节点在采集到主题数据后,通过主题会话流将主题数据传输到第一数据接收节点处。

步骤320,第一数据接收节点在代理网络中查找与主题相关的目标路由路径。

目标路由路径的起点是第一数据接收节点,终点是数据消费者节点。

其中,数据消费者节点是在代理网络中与云端服务器建立通信连接的代理方节点。可选的,数据消费者节点是代理网络中的核心交换机,相比于代理网络中的其他的代理方节点,数据消费者节点具备更好的硬件资源和带宽资源。

在一种可能的实现方式中,目标路由路径指的是从第一数据接收节点到数据消费者节点所经由的节点数最少的路由路径。

步骤330,代理网络基于目标路由路径,将主题数据由第一数据接收节点路由至数据消费者节点。

在代理网络确定好从第一数据接收节点到数据消费者节点的目标路由路径后,主题数据将根据目标路由路径在代理网络中进行路由,直至代理网络中的数据消费者节点接收到主题数据。

综上所述,本实施例提供的方法,在发布/订阅模型对应的代理网络中,代理网络中的第一数据接收节点接收到主题数据之后,将在代理网络中查找出与主题相关的目标路由路径,从而使得代理网络可以基于确定好的目标路由路径,将主题数据有效路由至代理网络中的数据消费者节点,从而实现基于发布/订阅模型的消息路由。

在示意性实施例中,第一数据接收节点将在多个可能的候选路由路径中,确定出一个传输性能较好的目标路由路径。

也即,上述步骤320可以替换实现为如下步骤:

一,在代理网络中,第一数据接收节点获取与主题相关的至少一个候选路由路径。

其中,候选路由路径均为起点是第一数据接收节点,终点是数据消费者节点的路由路径。

下面,结合参考图4,对第一数据接收节点获取与主题相关的至少一个候选路由路径的方法进行示例性的说明,该方法包括:

步骤410,代理网络中的第一代理方节点接收第二代理方节点发送的第一订阅请求,第一订阅请求携带主题、第二代理方节点至数据消费者节点之间的订阅节点队列,第二代理方节点是第一代理方节点的订阅节点。

第二代理方节点是发起订阅请求的代理方节点,第一代理方节点是接收订阅请求的代理方节点,第二代理方节点是第一代理方节点的订阅节点。

订阅节点队列是由至少一个代理方节点构成的有序的节点队列,订阅节点队列中的代理方节点的排列顺序按照订阅请求对应的订阅关系来确定。

可选的,在本申请实施例中,初始的第二代理方节点为数据消费者节点。

示例性的,结合参考图2,代理方节点210是代理网络中的数据消费者节点,代理方节点210向其邻接的代理方节点220和代理方节点230发送第一订阅请求,第一订阅请求携带主题a和订阅节点队列:代理方节点210,也即第二代理方节点是代理方节点210,第一代理方节点是代理方节点220和代理方节点230。

步骤420,第一代理方节点基于第一订阅请求,生成第二订阅请求,第二订阅请求携带主题,第一代理方节点至数据消费者节点之间的订阅节点队列。

在一种可能的实现方式中,第一代理方节点在接收到来自第二代理方节点的第一订阅请求后,基于第一订阅请求中的主题和第二代理方节点至数据消费者节点之间的订阅节点队列,生成第二订阅请求,第二订阅请求中携带第一订阅请求中的主题,以及第一代理方节点至数据消费者节点之间的订阅节点队列。

其中,第一代理方节点至数据消费者节点之间的订阅节点队列相较于第一订阅请求中的第二代理方节点至数据消费者节点之间的订阅节点队列,多出了第一代理方节点。

步骤430,第一代理方节点向第三代理方节点发送第二订阅请求,第一代理方节点是第三代理方节点的订阅节点。

在一种可能的实现方式中,第一代理方节点生成第二订阅请求后,向其邻接的第三代理方节点发送第二订阅请求。此时,第一代理方节点是发起订阅请求的代理方节点,第三代理方节点是接收订阅请求的代理方节点,第一代理方节点是第三代理方节点的订阅节点。

示例性的,结合参考图2。代理方节点210向其邻接的代理方节点220发送第一订阅请求,第一订阅请求携带主题a和订阅节点队列:代理方节点210,代理方节点220向其邻接的代理方节点240发送第二订阅请求,第二订阅请求携带主题a和订阅节点队列:代理方节点220、代理方节点210,也即第一代理方节点是代理方节点220,第二代理方节点是代理方节点210,第三代理方节点是代理方节点240。

步骤440,在代理网络中迭代进行上述步骤,直至第一数据接收节点接收到第一数据接收节点的订阅节点发送的第n订阅请求,n为正整数,第n订阅请求携带主题,第一数据接收节点的订阅节点至数据消费者节点之间的订阅节点队列。

示例性的,结合参考图2。代理方节点240向其邻接的代理方节点250发送第n订阅请求,第n订阅请求携带主题a和订阅节点队列:代理方节点240、代理方节点220和代理方节点210,其中,代理方节点250是第一数据接收节点,代理方节点240是第一数据接收节点的订阅节点。

步骤450,第一数据接收节点基于第n订阅请求,获取与主题相关的候选路由路径。

在一种可能的实现方式中,第一数据接收节点在接收到其邻接的订阅节点发送的第n订阅请求后,获取第n订阅请求中携带的主题以及第一数据接收节点的订阅节点至数据消费者节点之间的订阅节点队列,将由第一数据接收节点的订阅节点至数据消费者节点之间的订阅节点队列所对应的路由路径,以及第一数据接收节点至第一数据接收节点的订阅节点之间的路由路径所构成的路由路径确定为与主题相关的候选路由路径。

示例性的,结合参考图2,代理方节点240向其邻接的代理方节点250发送第n订阅请求,第n订阅请求携带主题a和订阅节点队列:代理方节点240、代理方节点220和代理方节点210,其中,代理方节点250是第一数据接收节点,代理方节点240是第一数据接收节点的订阅节点。则代理方节点250可以基于第n订阅请求,确定与主题相关的候选路由路径包括:代理方节点250、代理方节点240、代理方节点220和代理方节点210。

二,第一数据接收节点在候选路由路径中确定出目标路由路径。

在一种可能的实现方式中,第一数据接收节点将依据各个候选路由路径中的节点数,确定出目标路由路径。

也即:第一数据接收节点确定候选路由路径中包括的代理方节点的节点数;第一数据接收节点将节点数最少的候选路由路径,确定为目标路由路径。

示例性的,结合参考图2,代理方节点250是第一数据接收节点,代理方节点210是数据消费者节点。候选路由路径1包括:代理方节点250、代理方节点240、代理方节点220和代理方节点210。候选路由路径2包括:代理方节点250、代理方节点230和代理方节点210。候选路由路径1中包括的代理方节点的节点数为4,候选路由路径2中包括的代理方节点的节点数为3,则目标路由路径为节点数最少的候选路由路径2。

综上所述,本实施例提供的方法,代理网络中的代理方节点通过向邻近的其他代理方节点发送订阅请求,订阅请求中携带主题以及该代理方节点至数据消费者节点之间的订阅节点队列,从而最终得到多个第一数据接收节点至数据消费者节点的候选路由路径,代理网络可以采用节点数最少的候选路由路径为目标路由路径,从而减少路由所耗费的资源以及减少数据传输时间。

在示意性实施例中,代理方节点对应有路由表,目标路由路径中的代理方节点的路由表中将会存储有目标路由路径有关的信息。

代理方节点对应的路由表中包括如下信息中的至少一种:

代理方节点的节点信息;

代理方节点的订阅节点的节点信息;

目标路由路径的主题;

代理方节点至数据消费者节点之间的订阅节点队列的节点数。

图5示出了本申请一个示例性实施例提供的基于发布/订阅模型的消息路由方法的流程图,该方法可以应用于如图2所示的代理网络中,代理网络包括至少一个代理方节点,该方法包括:

步骤510,第一数据接收节点接收主题数据。

本步骤的实施方式参见上述步骤310,在此不进行赘述。

步骤520,第一数据接收节点在代理网络中查找与主题相关的目标路由路径。

目标路由路径的起点是第一数据接收节点,终点是数据消费者节点。

本步骤的实施方式参见上述步骤510,在此不进行赘述。

步骤530,目标路由路径中的代理方节点根据路由表中的代理方节点的订阅节点的节点信息,将主题数据发送至订阅节点。

在一种可能的实现方式中,针对目标路由路径中的任一代理方节点,该代理方节点在路由表查询中与主题数据中的主题所对应的路由信息,确定路由信息中的代理方节点的订阅节点的节点信息,并将主题数据转发给代理方节点的订阅节点。

步骤540,在代理网络中迭代进行上述步骤,直至数据消费者节点接收到数据消费者节点的订阅节点发送的主题数据。

示例性的,结合参考图6,假设客户端节点9向代理方节点6发布了主题名为a的数据,代理方节点1是数据消费者节点,代理方节点1具备与互联网或者云端服务器通信的能力。

根据图6中所示的订阅关系:代理方节点1订阅代理方节点2,代理方节点2订阅相邻的代理方节点1、3、4、5,代理方节点3订阅相邻的代理方节点2、4、6,代理方节点4订阅相邻的代理方节点2、4、6、7,代理方节点5订阅相邻的代理方节点2、7,代理方节点6订阅相邻的代理方节点3、4、7,代理方节点7订阅相邻的代理方节点5、4、6。

根据订阅关系,各个代理方节点会有关于主题a的路由路径:

代理方节点2关于a的路由路径:2、1/a;

代理方节点3关于a的路由路径:3、2、1/a;3、4、2、1/a;

代理方节点4关于a的路由路径:4、2、1/a;4、3、2、1/a;

……..

代理方节点6关于a的路由路径:6、4、2、1/a;6、7、4、3、2、1/a;6、7、5、2、1/a;6、3、2、1/a;…….

假设客户端节点9向代理方节点6发布了主题名为a的主题数据,也即代理方节点6是第一数据接收节点,代理方节点6需要将主题数据路由给作为数据消费者节点的代理方节点1,由代理方节点1将主题数据上传给互联网或者云端服务器。

根据“代理方节点6关于a的路由路径:6、4、2、1/a;6、7、4、3、2、1/a;6、7、5、2、1/a;6、3、2、1/a;…….”,代理方节点6对各种可能的路由路径进行分析,确定每条可能的路由路径中包含的节点数,将节点数最小的路由路径确定为目标路由路径。如:代理方节点6将路由路径6、4、2、1/a作为目标路由路径。

代理方节点6对应的路由表如下表一所示:

表一

代理方节点4对应的路由表如下表二所示:

表二

代理方节点2对应的路由表如下表三所示:

表三

代理方节点1对应的路由表如下表四所示:

表四

综上所述,本实施例提供的方法,在代理方节点对应的路由表中携带如下信息:代理方节点的节点信息;代理方节点的订阅节点的节点信息;目标路由路径的主题;代理方节点至数据消费者节点之间的订阅节点队列的节点数,以使得主题数据根据路由表中的信息的指示,进行准确的路由。

在示意性实施例中,代理网络由控制器进行调度管理。

在一种可能的实现方式中,响应于第一数据接收节点崩溃,代理网络根据控制器的指示,将客户端节点用于传输主题数据的主题会话流由第一数据接收节点转移至代理网络中的第二数据接收节点。

如图6所示,每一个代理方节点都可能会与大量的客户端节点进行连接,当一方代理方节点出现问题时,客户端节点可与另一代理方节点重新建立联系,即重路由。在本申请实施例中,配置一个专门的控制器来调度包括代理网络和客户端节点在内的整个物联网网络。其中,控制器并不用于数据通信,主要是用于管理物联网网络节点,自动计算找出替代的第二数据接收节点并将主题会话流从崩溃的第一数据接收节点转移至可代替的第二数据接收节点。

在一种可能的实现方式中,第二数据接收节点与客户端节点之间的第一通信能力与第一数据接收节点与客户端节点之间的第二通信能力的相似度达到目标条件。

也即,在第二数据接收节点与客户端节点之间的第一通信能力与第一数据接收节点与客户端节点之间的第二通信能力相近的情况下,控制器将主题会话流从崩溃的第一数据接收节点转移至可代替的第二数据接收节点。

示例性的,结合参考图7,一方的代理方节点崩溃时,主题数据通过重路由机制与另一方的代理方节点进行通信的示例。如图所示,代理方节点x1的主题数据转移至代理方节点y3,代理方节点x2的主题数据转移至代理方节点y1,代理方节点xn的主题数据转移至代理方节点yn。

示例性的,结合参考图8,代理方节点b1与客户端节点a、客户端节点b和客户端节点c进行连接,代理方节点b2与客户端节点d、客户端节点e和客户端节点f进行连接。在代理方节点b1崩溃的情况下,客户端节点a、客户端节点b和客户端节点c将转为与代理方节点b2建立连接。

综上所述,本实施例提供的方法,为代理网络配置控制器,当一方代理方节点崩溃时,可自动找到另一合适的代理方节点接管主题会话流,使数据传输过程更加平稳连续。

下面,通过实验对如上方法实施例进行验证。

本申请在具有mosquitto和其客户端libmosquitto的ubuntu系统上使用c协议和mqtt协议实施上述算法的模型。其中,mosquitto是mqtt协议的开源实现。

在该系统中设置了25个节点,其中一部分作为代理方节点,另一部分作为客户端节点。在客户端节点中,部署一个shell程序来持续发布数据。并且在代理网络节点用订阅来收集数据。

实验采用25个虚拟机作为测试机来进行测试。而虚拟机的资源分配是受限的,例如,每个节点的内存少于300m。节点被分为两部分:一部分主要是代理网络,另一部分本用于生成数据。在每个节点处都设置一个mosquitto作为代理方。为了测试数据的任一规模,使用无限循环的shell脚本,连续地每秒发布一个主题,脚本内容如下:

#!/bin/sh

whiletrue;do

echohello

sleep1

done|mosquitto_pub-1-t“topic”

其他节点通过mosquitto_sub用计数器来获得相应数据。计数器用于控制数据规模,使用libmosquittolibrary和虚拟机来构建物联网模拟网络。

如图9和图10所示,节点1至7是代理方节点,其余节点是客户端节点。代理方节点1是数据消费者节点。代理方节点6是数据接收节点。由物联网收集的主题数据将会首先传输给代理方节点6,然后通过代理网络将主题数据传递给代理方节点1。本申请对应的基于发布/订阅模型的消息路由方法可确定代理方节点带有的主题及主题数据所在的节点位置,并且动态的采用在数据消费者节点和数据接收节点之间的最短路径。最短路径意味着在数据传输中所需的节点更少,而更少的节点可以有效减少主题数据的传输时间。在图9中,数据传输会依次通过代理方节点6,代理方节点7,代理方节点4,代理方节点3,代理方节点2,代理方节点1,而最短路径是图10中所示的代理方节点6,代理方节点4,代理方节点2,代理方节点1。

为了获得数据规模对于数据传输路径的影响,实验利用不同工作负载下的评估结果来进行测试,测试的主要的性能指标是数据传输完成的时间。主题数的范围为从500项至10000项,其中每500项为一步。

将是否采用最短路径的数据传输时间进行对比发现,采用最短路径的数据传输完成的时间基本上远少于没有采用最短路径的数据传输完成的时间,比对结果如图11、图12所示。另外,如图13所示,数据的传输路径对整个网络系统具有影响,就结果而言,最短路径相比于非最短路径拥有更好的传输性能。

如上所述,可验证本申请所示出的基于发布/订阅模型的消息路由方法在消息路由中的高效性,证明其可在资源受限、脆弱的网络环境中优化物联网数据的传输。此外,此算法还可基于发布/订阅模型广泛应用于物联网系统。

以下为本申请的装置实施例,对于装置实施例中未详细描述的细节,可以结合参考上述方法实施例中相应的记载,本文不再赘述。

图14示出了本申请的一个示例性实施例提供的基于发布/订阅模型的消息路由装置的的结构示意图。该装置可以通过软件、硬件或者两者的结合实现成为服务器的全部或一部分,该装置包括:接收模块1401、查找模块1402和路由模块1403;

所述接收模块1401,用于供第一数据接收节点接收主题数据,所述主题数据是由客户端节点采集的与主题相关的数据,所述第一数据接收节点是在所述代理网络中接收所述主题数据的代理方节点;

所述查找模块1402,用于供所述第一数据接收节点在所述代理网络中查找与所述主题相关的目标路由路径,所述目标路由路径的起点是所述第一数据接收节点,终点是数据消费者节点,所述数据消费者节点是在所述代理网络中与云端服务器建立通信连接的代理方节点;

所述路由模块1403,用于供所述代理网络基于所述目标路由路径,将所述主题数据由所述第一数据接收节点路由至所述数据消费者节点。

在一个可选的实施例中,所述查找模块1402,用于供所述第一数据接收节点在所述代理网络中获取与所述主题相关的至少一个候选路由路径;所述第一数据接收节点在所述候选路由路径中确定出所述目标路由路径。

在一个可选的实施例中,所述查找模块1402,用于,

所述代理网络中的第一代理方节点接收第二代理方节点发送的第一订阅请求,所述第一订阅请求携带所述主题、所述第二代理方节点至所述数据消费者节点之间的订阅节点队列,所述第二代理方节点是所述第一代理方节点的订阅节点;所述第一代理方节点基于所述第一订阅请求,生成第二订阅请求,所述第二订阅请求携带所述主题,所述第一代理方节点至所述数据消费者节点之间的订阅节点队列;所述第一代理方节点向第三代理方节点发送所述第二订阅请求,所述第一代理方节点是所述第三代理方节点的订阅节点;

在所述代理网络中迭代进行上述步骤,直至所述第一数据接收节点接收到所述第一数据接收节点的订阅节点发送的第n订阅请求,所述n为正整数,所述第n订阅请求携带所述主题,所述第一数据接收节点的订阅节点至所述数据消费者节点之间的订阅节点队列;

所述第一数据接收节点基于所述第n订阅请求,获取与所述主题相关的所述候选路由路径。

在一个可选的实施例中,所述查找模块1402,用于供所述第一数据接收节点确定所述候选路由路径中包括的代理方节点的节点数;所述第一数据接收节点将所述节点数最少的候选路由路径,确定为所述目标路由路径。

在一个可选的实施例中,针对所述目标路由路径中的代理方节点,所述代理方节点对应的路由表中包括如下信息中的至少一种:

所述代理方节点的节点信息;

所述代理方节点的订阅节点的节点信息;

所述目标路由路径的主题;

所述代理方节点至所述数据消费者节点之间的订阅节点队列的节点数。

在一个可选的实施例中,所述路由模块1403,用于供所述目标路由路径中的代理方节点根据所述路由表中的所述代理方节点的订阅节点的节点信息,将所述主题数据发送至所述订阅节点;在所述代理网络中迭代进行上述步骤,直至所述数据消费者节点接收到所述数据消费者节点的订阅节点发送的所述主题数据。

在一个可选的实施例中,所述装置还包括:转移模块;所述转移模块,用于响应于所述第一数据接收节点崩溃,所述代理网络根据所述控制器的指示,将所述客户端节点用于传输所述主题数据的主题会话流由所述第一数据接收节点转移至所述代理网络中的第二数据接收节点。

在一个可选的实施例中,所述第二数据接收节点与所述客户端节点之间的第一通信能力与所述第一数据接收节点与所述客户端节点之间的第二通信能力的相似度达到目标条件。

图15是本申请一个实施例提供的代理方节点的结构示意图。具体来讲:代理方节点1500包括中央处理单元(英文:centralprocessingunit,简称:cpu)1501、包括随机存取存储器(英文:randomaccessmemory,简称:ram)1502和只读存储器(英文:read-onlymemory,简称:rom)1503的系统存储器1504,以及连接系统存储器1504和中央处理单元1501的系统总线1505。代理方节点1500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1506,和用于存储操作系统1513、应用程序1514和其他程序模块1515的大容量存储设备1507。

基本输入/输出系统1506包括有用于显示信息的显示器1508和用于输入信息的诸如鼠标、键盘之类的输入设备1509。其中显示器15015和输入设备1509都通过连接到系统总线1505的输入/输出控制器1510连接到中央处理单元1501。基本输入/输出系统1506还可以包括输入/输出控制器1510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器1510还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备1507通过连接到系统总线1505的大容量存储控制器(未示出)连接到中央处理单元1501。大容量存储设备1507及其相关联的计算机可读介质为代理方节点1500提供非易失性存储。也就是说,大容量存储设备1507可以包括诸如硬盘或者只读光盘(英文:compactdiscread-onlymemory,简称:cd-rom)驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、可擦除可编程只读存储器(英文:erasableprogrammableread-onlymemory,简称:eprom)、电可擦除可编程只读存储器(英文:electricallyerasableprogrammableread-onlymemory,简称:eeprom)、闪存或其他固态存储其技术,cd-rom、数字通用光盘(英文:digitalversatiledisc,简称:dvd)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1504和大容量存储设备1507可以统称为存储器。

根据本申请的各种实施例,代理方节点1500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即代理方节点1500可以通过连接在系统总线1505上的网络接口单元1511连接到网络1512,或者说,也可以使用网络接口单元1511来连接到其他类型的网络或远程计算机系统(未示出)。

本申请还提供一种计算机设备,该计算机设备包括:处理器和存储器,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的基于发布/订阅模型的消息路由方法。

本申请还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的基于发布/订阅模型的消息路由方法。

本申请还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述可选实现方式中提供的基于发布/订阅模型的消息路由方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1