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

一种基于VSA的物联网实体服务发现方法及计算机可读存储介质

文献发布时间:2023-06-19 19:30:30


一种基于VSA的物联网实体服务发现方法及计算机可读存储介质

技术领域

本发明涉及服务发现技术领域,特别涉及一种基于VSA的物联网实体服务发现方法及计算机可读存储介质。

背景技术

物联网技术将现实物理世界中大量无处不在的异构设备连接到互联网。物联网覆盖了医疗、交通、教育、农业等广泛的真实场景,扩展了边缘协同的智能设备数量,为用户提供服务。因此,大量的服务不断地在物联网环境中产生,服务种类复杂,在同一场景下的服务也会出现大量的冗余,导致资源的利用率降低。

为此服务发现机制孕育而生,通过任务或服务的定位发现,以减少重复部署带来的资源浪费问题。服务发现是指通过一定的策略和机制在网络中找到可用的服务(如设备资源、信息处理、数据采集等),它主要分为服务的请求者和服务的提供者,前者描述了他们所需要使用的目标服务或者功能,而后者描述了他们可以提供的服务。随着物联网设备的数量日益增加,服务的数量也在不断增加,发现和定位服务成为一个重要的挑战。因此,物联网场景下的服务发现也成为研究的热点。

目前许多系统采用集中式的服务发现算法,通过使用注册中心在服务器上进行服务或者任务的注册和查询,服务器通常是预定义的、稳定的基础设施,专门用来进行系统的服务管理,但是因为设备数量多,搜索空间大,网络流量大,无法有效管理,导致可伸缩性问题,故很难实现。为解决这一技术问题,现有技术中也逐渐出现了一些服务发现方案,例如:分布式的服务发现方案,虽然分布式的服务发现方案在一定程度上解决了传统的基于注册中心的服务发现方式的问题,但是分布式的服务发现方案仍然面临着其他挑战,如动态可用性、地理位置的限制、网络不稳定等等。

因此,需要对现有的服务发现方法作进一步改进。

发明内容

本发明所要解决的第一个技术问题是针对上述现有技术,而提供一种基于VSA的物联网实体服务发现方法,解决了在物联网环境下,大量实体服务通过注册中心或数据库的方式进行查找发现的效率低、代价高的问题,还解决了在分布式服务发现中,服务发现的不可靠性问题,实现了高精确、高效、高鲁棒的物联网实体服务发现。

本发明所要解决的第二个技术问题是针对上述现有技术,而提供一种能执行上述基于VSA的物联网实体服务发现方法的计算机可读存储介质。

本发明解决上述第一个技术问题所采用的技术方案为:一种基于VSA的物联网实体服务发现方法,用于从物联网A个节点部署的A个任务中找到与服务请求相匹配的任务,其中A个节点中每个节点分别部署一个任务,

A 为正整数,其特征在于包括如下步骤:

步骤1、在每个任务部署到对应的节点前,通过VSA模型对任务的JSON工作流进行编码,得到每个JSON工作流所对应的超维向量HV_a以及编码中使用的叠加次数M

步骤2、每个节点接收服务请求所对应的超维向量HV_0和叠加次数M

步骤3、每个节点执行服务发现,具体为:

判断M

作为改进,所述步骤1中对每个JSON工作流进行编码的具体步骤为:

步骤1-1、新建一个空的超维向量HV和空的原子向量存储器C;并设置超维向量HV的维度大小为N,向量空间V∈{0,1}

步骤1-2、设JSON工作流中具有b个任务模块,其中b为正整数,每个任务模块中包含多个关键字,将JSON工作流中的每个关键字映射成原子向量,并将映射的原子向量存储在原子向量存储器C中;

每个任务模块中的关键字均包括type键对应的值和其他有效键对应的值,type键为当前任务模块的类型,每个关键字映射的原子向量均为由步骤1-1中的向量空间随机生成的一个N维向量;

步骤1-3、设i的初始值为1;

步骤1-4、将当前JSON工作流的第i个任务模块中除type键以外的其他有效关键字以异或的方式进行绑定,组成第一向量ARG

其中,

步骤1-5、对第一向量ARG

步骤1-6、将第二向量PARG

步骤1-7、将第三向量HV

步骤1-8、将当前叠加次数Num加上2后更新当前叠加次数Num;

步骤1-9、判断i的值是否为b,如是,则转入到步骤1-10;如否,则将当前i的值加上1后更新当前i值,并依次执行步骤1-4~步骤1-8;

步骤1-10、输出最终的超维向量HV’和最终的叠加次数Num’,并将最终的超维向量HV’与向量空间随机生成的一个N维随机向量进行累加,得到累加后的超维向量HV”;

步骤1-11、使e依次取值为1、2、…N,分别判断累加后的超维向量HV”中第e个位置的元素是否小于(Num’+1)/2,如是,则将累加后的超维向量HV”中第e个位置的元素置为0;如否,则将累加后的超维向量HV”中第e个位置的元素置为1;

步骤1-12、将步骤1-11中处理后的超维向量HV”作为当前JSON工作流编码完成后的超维向量。

优选地,所述步骤1-1中N的取值为10000。

为了减少任务系统的规模,所述步骤1-2中在将JSON工作流中的每个关键字映射成原子向量前还包括:

对JSON工作流的关键字进行筛选,过滤掉不影响任务组成的特征,最终将筛选出的关键字映射成原子向量。

进一步地,所述步骤3中服务发现的具体过程为:

步骤3-1、判断M

步骤3-2、获取超维向量HV_a编码过程中的最终超维向量HV’表达式,具体为:

HV’=HV

=type

其中,ρ

步骤3-3、将超维向量HV_a编码过程中的各个中间向量按照下述的顺序进行排序,得到向量集V_a,向量集V_a中的向量从先至后依次为:

type

步骤3-4、将向量集V中向量所处的位置记为m,m的初始值为1;

步骤3-5、计算超维向量HV_a编码过程中得到的向量集V_a中第m个向量和HV_0编码过程中得到的向量集V_0中第m个向量之间的归一化汉明距离L,判断L是否小于预设阈值L0,如是,则第m个向量匹配成功,并转入到步骤3-6;如否,则表示匹配失败,结束;

步骤3-6、将当前向量集V_a中每个向量均循环右移一位来更新向量集V_a,同时将当前向量集V_0中每个向量均循环右移两位来更新向量集V_0,判断m的值是否为M

本发明解决上述第二个技术问题所采用的技术方案为:一种计算机可读存储介质,其特征在于:所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的物联网实体服务发现方法,以从物联网A个节点部署的A个任务中找到与请求相匹配的任务,并输出发现的任务结果。

与现有技术相比,本发明的优点在于:通过使用VSA模型对每个JSON工作流进行编码,使JSON工作流转变成一个超维向量,从而进行分布式表示,并逐一进行暴露匹配,在空间中两个一样的向量仍然是比其他任何向量更加接近彼此。因此本方法解决了在物联网环境下,大量实体服务通过注册中心或数据库的方式进行查找发现的效率低、代价高的问题,并且解决了在分布式服务发现中,服务发现的不可靠性问题,实现了高精确、高效、高鲁棒的物联网实体服务发现。

附图说明

图1为本发明实施例中基于VSA的物联网实体服务发现方法的流程图。

图2为本发明实施例中任务划分的示意图;

图3为本发明实施例中基于VSA和基于数据库两种方式进行服务发现所需的时间图;

图4为本发明实施例中不同服务复杂度情况下的归一化汉明距离结果对比图;

图5为本发明实施例中不同服务复杂度情况下不匹配的结果对比图;

图6为本发明实施例中不同服务复杂度情况下的距离最小,最大和平均值对比图;

图7为本发明实施例中不同服务发现方式的响应时延比较图。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。

本实施例中的基于VSA的物联网实体服务发现方法用于从物联网A个节点部署的A个任务中找到与服务请求相匹配的任务,其中A个节点中每个节点分别部署一个任务,A为正整数。

如图1所示,本实施例中的基于VSA的物联网实体服务发现方法包括如下步骤:

步骤1、在每个任务部署到对应的节点前,通过VSA模型对任务的JSON工作流进行编码,得到每个JSON工作流所对应的超维向量HV_a以及编码中使用的叠加次数M

向量符号架构(VSA)是心理学家R.W.Gayler创造的一个术语,是一组用于在高维空间中表示和操作数据的模型。该思想最初是在知心理学和认知神经科学作为符号推理的连接主义模型提出的架构。在VSA中,信息由非常高的维度向量进行表示,这些向量被称为高向量或超维向量。符号用超维向量表示,编码信息分布在向量的所有分量上。矢量符号体系结构是一种有损的降维方法,使大量的数据被压缩成一个固定大小的向量的方式捕捉协会之间的相似之处以及使分类建立数据。这样的向量表示是递归的,就像Hinton最初提出的那样,因为它们允许用相同的格式来表示更高层次的抽象,就像它们的低级组件一样。VSA能够支持大量的认知任务,例如语义组成和匹配、表示意义和秩序、类比映射、逻辑推理。它们对噪音的适应能力很强,有神经学上似是而非的类似物,可以在现有的分布式认知架构中加以利用;

对每个JSON工作流进行编码的具体步骤为:

步骤1-1、新建一个空的超维向量HV和空的原子向量存储器C;并设置超维向量HV的维度大小为N,向量空间V∈{0,1}

本实施例中,N的取值为10000;

步骤1-2、设JSON工作流中具有b个任务模块,其中b为正整数,每个任务模块中包含多个关键字,将JSON工作流中的每个关键字映射成原子向量,并将映射的原子向量存储在原子向量存储器C中;其中任务模块在工作流中表示各任务之间的关系;

步骤1-2中在将JSON工作流中的每个关键字映射成原子向量前还包括:

对JSON工作流的关键字进行筛选,过滤掉不影响任务组成的特征,最终将筛选出的关键字映射成原子向量;

每个任务模块中的关键字均包括type键对应的值和其他有效键对应的值,type键为当前任务模块的类型,每个关键字映射的原子向量均为由步骤1-1中的向量空间随机生成的一个N维向量;

步骤1-3、设i的初始值为1;

步骤1-4、将当前JSON工作流的第i个任务模块中除type键以外的其他有效关键字以异或的方式进行绑定,组成第一向量ARG

其中,

步骤1-5、对第一向量ARG

步骤1-6、将第二向量PARG

步骤1-7、将第三向量HV

步骤1-8、将当前叠加次数Num加上2后更新当前叠加次数Num;

步骤1-9、判断i的值是否为b,如是,则转入到步骤1-10;如否,则将当前i的值加上1后更新当前i值,并依次执行步骤1-4~步骤1-8;

步骤1-10、输出最终的超维向量HV’和最终的叠加次数Num’,并将最终的超维向量HV’与向量空间随机生成的一个N维随机向量进行累加,得到累加后的超维向量HV”;

步骤1-11、使e依次取值为1、2、…N,分别判断累加后的超维向量HV”中第e个位置的元素是否小于(Num’+1)/2,如是,则将累加后的超维向量HV”中第e个位置的元素置为0;如否,则将累加后的超维向量HV”中第e个位置的元素置为1;

步骤1-12、将步骤1-11中处理后的超维向量HV”作为当前JSON工作流编码完成后的超维向量;

记第a个节点部署的任务所对应的超维向量为HV_a,并记表示HV_a的叠加次数为M

步骤2、每个节点接收服务请求所对应的超维向量HV_0和叠加次数M

其中服务请求所对应的超维向量HV_0和叠加次数M

步骤3、每个节点执行服务发现,具体为:

判断M

匹配方法具体为:

步骤3-1、判断M

步骤3-2、获取超维向量HV_a编码过程中的最终超维向量HV’表达式,具体为:

HV’=HV

=type

其中,ρ

步骤3-3、将超维向量HV_a编码过程中的各个中间向量按照下述的顺序进行排序,得到向量集V_a,向量集V_a中的向量从先至后依次为:

type

步骤3-4、将向量集V中向量所处的位置记为m,m的初始值为1;

步骤3-5、计算超维向量HV_a编码过程中得到的向量集V_a中第m个向量和HV_0编码过程中得到的向量集V_0中第m个向量之间的归一化汉明距离L,判断L是否小于预设阈值L0,如是,则第m个向量匹配成功,并转入到步骤3-6;如否,则表示匹配失败,结束;本实施例中,L0=N*0.48;

步骤3-6、将当前向量集V_a中每个向量均循环右移一位来更新向量集V_a,同时将当前向量集V_0中每个向量均循环右移两位来更新向量集V_0,判断m的值是否为M

当任务匹配失败时,节点只会将匹配失败的信息发送给请求方,这里发送的目的不仅是告诉请求方任务匹配失败,还有一个目的是告诉请求方自己运行正常,系统从而做出判断处理。

另外,本实施例的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的物联网实体服务发现方法,以从物联网A个节点部署的A个任务中找到与请求相匹配的任务,并输出发现的任务结果。

为了进行方法的测试,本实施例中使用一台桌面PC作为平台的主控节点(Master)(CPU:4核Intel(R)Core(TM)i5-7500 CPU@3.40GHz内存:16G硬盘存储:1T),并将以下两种不同类型的设备加入到NBUFlow中,(1)1台虚拟机作为边缘服务器(Edge Server)(CPU:4核Intel(R)Core(TM)i5-10500 CPU@3.10GHz内存:8G存储容量:60G),(2)2个树莓派4B作为设备层节点(Pi1,Pi2)(CPU:4核ARMv7,内存:4G,存储容量都为16G),并使用WiFi网络接入到平台中。

与此同时,为了便于测试,本实施例中初始化每个树莓派节点和边缘服务器节点都安装了摄像头设备并部署了一个捕获图像的实体服务,如图2所示中的Camera节点,其中两个树莓派Pi1和Pi2中的服务参数不一样,边缘服务器的服务参数和Pi1参数一致。实验的内容主要分为两个方面,一方面是验证其高效的服务发现机制,另一方面是验证该方法的高精确性以及高鲁棒性。

首先是高效性,设计了基于注册中心的方式进行服务查找发现,使用经典的MySQL数据库用来存储服务数据。在主控节点上部署MySQL数据库,并将服务特征进行存储,为了突出实验的效果,分别随机生成了100份、1000份和10000份服务数据,依次对其进行查询测试,结果如图3所示,在基于数据库情况下,服务发现的时间会随着服务数量的增加而快速增加。在物联网环境下,服务数量众多且易于发生变化,基于数据库的方式,每当服务参数变更,数据库就得增加一条数据或者修改原数据,导致管理难度加大,不易维护。而基于VSA的方式在图3中可以看见,匹配时间在数据量同等倍数增大时,变化的幅度相比数据库查询的方式会小很多,仍然能够保持高效的工作。

其次是高精确性和高鲁棒性,设计了在分布式的服务发现环境下,服务发现的准确性验证,同样以图2所示的Camera服务为例,基于VSA的方式进行发现,在匹配到相同服务的情况下,会优先选择先响应的节点。这里,当匹配与Pi1相同的服务时,会得到两个结果,另外一个是边缘服务器的,在本实验的环境下,边缘服务器的响应会快于Pi1,因此会得到边缘服务器的匹配结果。相同的实验分别测试了1000次,得到了不同任务复杂度情况下的归一化汉明距离情况,结果如图4和图5所示。其中当两个向量距离在0.5左右时,表示服务不匹配,当在某个阈值以下时表示服务匹配。本场景下,将阈值设置为0.48,则在任务复杂度为5(在本场景下为叠加的NodeRed模块数量,一般情况下实体服务的模块数量基本上是一个或者两个组成)的情况下仍然能够得到几乎100%成功率的服务发现。并且通过图5和图6可以看出,该发现机制的稳定性也还不错,基本上没有大的波动,在服务复杂度变化的情况下也能保持稳定。

接着,对于分布式的服务发现,实验模拟了基于mqtt的分布式的发现模式,通过构造任务描述树进行主题发现,如/edge/camera/image_size/200*300,该主题表示需要在边缘端的一个图像捕获服务,需要图片质量200*300像素。该方案通过在服务构造时通过定义过的对应的主题进行实体服务发现,将主题树的存储在不同的网关节点,通过路由进行转发请求,该方式可以有效的进行服务发现,并能保证系统的稳定性,不会因为某个节点失败而无法运行的问题,但是该方式在初始化服务树时会产生大量代价,并且在新服务产生时,需要修改所有网关存储的主题树。此外通过在发现效率的实验上,基于VSA的方案在稳定性和时延上都有较好的表现。

最后对基于哈希表分布式结构化服务发现方式进行实验,采用经典的Chord算法实现一致性哈希,由于搭建分布式架构节点数量有限,我们在NBUFlow平台中,通过设置多个nodered作为虚拟节点进行测试,为了减少网络等其他因素的影响,统一采用MQTT协议进行通信,并测试了单次响应的平均时延作为基准,如图7中MQTT方式所示。实验室我们分别测试了在10、20到50个节点下不同服务发现方式响应的时延,其中DHT是分布式哈希表方式,FLOODING是采用洪泛方式发送服务发现请求,VSA是我们的方案,图中可以看出,DHT和FLOODING在节点数量少的情况下可以保持不错的响应速度,但在节点增加时,响应时间快速增加,主要归咎于节点增加导致路由跳数增加,以及注册服务的成本增加。而VSA表现良好,其原因简要来讲,首先由于VSA采用边缘节点进行路由转发,能够在通信上保持稳定,其次采用的发现模式不需要每个节点都管理所有服务注册,通过简单的异或运算,从而达到稳定且快速的响应。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术分类

06120115931024