一种基于分布式的网络服务部署和发现的实现方法转让专利

申请号 : CN202010190884.7

文献号 : CN111277497A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王晓喃蔡少豪陆奕敏

申请人 : 常熟理工学院

摘要 :

本发明提供了一种基于分布式的网络服务部署和发现的实现方法,所述网络包含路由器和节点,路由器包括中心路由器、边界路由器和接入路由器,所述网络中只有一个中心路由器;一个中心路由器配置两个以上的有线接口,每个接口连接一个边界路由器;一个边界路由器配置一个上游接口和两个以上的下游接口,上游接口和下游接口均为有线接口,上游接口连接中心路由器,下游接口连接接入路由器;用户通过本发明所提供的网络服务部署和发现的实现方法能够快速获取数据,从而有效缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。

权利要求 :

1.一种基于分布式的网络服务部署和发现的实现方法,其特征在于,所述网络包含路由器和节点,路由器包括中心路由器、边界路由器和接入路由器,所述网络中只有一个中心路由器;

一个中心路由器配置两个以上的有线接口,每个接口连接一个边界路由器;

一个边界路由器配置一个上游接口和两个以上的下游接口,上游接口和下游接口均为有线接口,上游接口连接中心路由器,下游接口连接接入路由器;

一个接入路由器配置一个有线接口和一个无线接口,有线接口与边界路由器相连,无线接口与节点相连;每个节点配置一个无线接口,与接入路由器相连;

所述网络划分为两个以上的边缘网络,一个边缘网络由一个网络ID标识;

一个边缘网络包含一个边界路由器和两个以上的接入路由器,接入路由器与对应的边界路由器相连;

一种与地理位置相关的数据类型由名称标识,一个名称由名称ID和坐标构成,名称ID标识数据的类型、坐标标识与数据相关的地理位置,一个接入路由器能够提供多种类型的数据,所述数据为预先设置,定义所述数据的名称中的坐标等于该接入路由器的坐标,一个接入路由器保存一个数据表,一个数据表项包含名称和数据,针对该接入路由器所能提供的每一种类型的数据DA0,该接入路由器创建一个数据表项,该数据表项的名称等于定义数据DA0的名称,数据域值等于数据DA0;

每个接入路由器的坐标具有网络唯一性;

每个边界路由器保存一个服务表,每个服务表项包含名称集合、接口ID、坐标和生命周期;

一个消息由消息ID标识;

一个注册消息包含消息ID、名称集合和坐标;

在接入路由器AR1与边界路由器ER1相连,边界路由器ER1位于边缘网络EN1中,接入路由器AR1所能提供的数据的名称集合为NS1的条件下,接入路由器AR1定期执行下述操作:步骤101:开始;

步骤102:接入路由器AR1从有线接口发送一个注册消息,该注册消息的名称集合为NS1,坐标为接入路由器AR1自己的坐标;

步骤103:从接口f1接收到注册消息的边界路由器ER1查看服务表,如果存在一个服务表项,该服务表项的接口ID等于f1,则将该服务表项的名称集合和坐标分别更新为该注册消息中的名称集合和坐标,将生命周期设置为最大值,否则创建一个服务表项,该服务表项的接口ID等于f1,该服务表项的名称集合和坐标分别设置为该注册消息中的名称集合和坐标,将生命周期设置为最大值;

步骤104:结束;

边界路由器ER1创建服务表后,选择一个服务表项E1,服务表项E1中坐标值中的横坐标xmax大于其他所有服务表项坐标值中的横坐标,选择一个服务表项E2,服务表项E2中坐标值中的横坐标xmin小于其他所有服务表项坐标值中的横坐标,选择一个服务表项E3,服务表项E3中坐标值中的纵坐标ymax大于其他所有服务表项坐标值中的纵坐标,选择一个服务表项E4,服务表项E4中坐标值中的纵坐标ymin小于其他所有服务表项坐标值中的纵坐标,边界路由器ER1将边缘网络EN1的网络ID设置为((xmax+xmin)/2,(ymax+ymin)/2)。

2.根据权利要求1所述的一种基于分布式的网络服务部署和发现的实现方法,其特征在于,中心路由器保存一个网络表,一个网络表项包含网络ID、接口ID和生命周期;

一个发布消息包含消息ID和网络ID;

在边界路由器ER1位于边缘网络EN1中,与中心路由器CR1相连的条件下,边界路由器ER1定期执行下述操作:步骤201:开始;

步骤202:边界路由器ER1从上游接口发送一个发布消息,该发布消息的消息ID为2,网络ID等于边缘网络EN1的网络ID;

步骤203:从接口f2接收到该发布消息的中心路由器CR1查看网络表,判断是否存在一个接口ID等于f2网络表项,是则执行步骤204,否则执行步骤205;

步骤204:从接口f2接收到该发布消息的中心路由器CR1选择一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID更新为该发布消息中的网络ID,将生命周期设置为最大值,执行步骤206;

步骤205:从接口f2接收到该发布消息的中心路由器CR1创建一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID设置为该发布消息中的网络ID,将生命周期设置为最大值;

步骤206:结束。

3.根据权利要求2所述的一种基于分布式的网络服务部署和发现的实现方法,其特征在于,中心路由器、边界路由器以及接入路由器分别保存一个请求表,一个请求表项包含接口ID和名称;

一个请求消息包含消息ID和名称;

一个响应消息包含消息ID、名称和数据;

在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1大于阈值TH0,节点D1则通过下述过程获取数据DA1:步骤301:开始;

步骤302:节点D1发送一个请求消息,该请求消息的消息ID为3,名称等于NA1;

步骤303:从接口x1接收到该请求消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该请求消息中的名称,是则执行步骤304,否则执行步骤305;

步骤304:从接口x1接收到该请求消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x1发送一个响应消息,该响应消息的消息ID为

4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;

步骤305:从接口x1接收到该请求消息的接入路由器AR1查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,是则执行步骤

315,否则执行步骤306;

步骤306:从接口x1接收到该请求消息的接入路由器AR1创建一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,如果接入路由器AR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤307,否则执行步骤315;

步骤307:从接口x1接收到该请求消息的接入路由器AR1从有线接口转发该请求消息;

步骤308:从接口x2接收到该请求消息的边界路由器查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤309;

步骤309:从接口x2接收到该请求消息的边界路由器创建一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,如果边界路由器只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤310,否则执行步骤315;

步骤310:从接口x2接收到该请求消息的边界路由器判断是否存在一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,是则执行步骤311,否则执行步骤312;

步骤311:从接口x2接收到该请求消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,从该服务表项的接口ID所标识的接口转发该请求消息,从接口x4接收到该请求消息的接入路由器选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x4发送一个响应消息,该响应消息的消息ID为4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;

步骤312:从接口x2接收到该请求消息的边界路由器从上游接口转发该请求消息,中心路由器CR1从接口x3接收到该请求消息后,查看请求表,如果存在一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤313;

步骤313:从接口x3接收到该请求消息的中心路由器CR1创建一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,如果中心路由器CR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤314,否则执行步骤315;

步骤314:从接口x3接收到该请求消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID与该请求消息中名称中的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该请求消息,执行步骤308;

步骤315:如果节点接收到该响应消息,则执行步骤317,否则执行步骤316;

步骤316:接收到该响应消息的路由器选择所有名称等于该响应消息中名称的请求表项,针对每个请求表项,从该请求表项的接口ID所标识的接口转发该响应消息,删除该请求表项,执行步骤315;

步骤317:接收到响应消息的节点保存该响应消息中的数据;

步骤318:结束。

4.根据权利要求3所述的一种基于分布式的网络服务部署和发现的实现方法,其特征在于,一个节点由一个地址标识、一个地址包含前缀和接口ID集合;

一个查询消息包含消息ID、地址和名称;

一个数据消息包含消息ID、地址、名称和数据;

在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1不大于阈值TH0,节点D1则通过下述过程获取数据DA1:步骤401:开始;

步骤402:节点D1构建一个地址,该地址的前缀和接口ID集合均为空,节点D1发送一个查询消息,该查询消息的消息ID为5,地址等于构建的地址,名称等于NA1;

步骤403:从接口y1接收到该查询消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该查询消息中的名称,是则执行步骤404,否则执行步骤405;

步骤404:从接口y1接收到该查询消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y1发送一个数据消息,该数据消息的消息ID为

6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;

步骤405:从接口y1接收到该查询消息的接入路由器AR1将y1加入到查询消息中地址的接口ID集合中并作为最后一个元素,从有线接口转发该查询消息;

步骤406:从接口y2接收到该查询消息的边界路由器将y2加入到查询消息中地址的接口ID集合中并作为最后一个元素,判断是否存在一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,是则执行步骤407,否则执行步骤408;

步骤407:从接口y2接收到该查询消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,从该服务表项的接口ID所标识的接口转发该查询消息,从接口y4接收到该查询消息的接入路由器选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y4发送一个数据消息,该数据消息的消息ID为6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;

步骤408:从接口y2接收到该查询消息的边界路由器从上游接口转发该查询消息,中心路由器CR1从接口y3接收到该查询消息后,选择一个网络表项,该网络表项的接口ID等于y3,将该查询消息中地址的前缀设置为该网络表项的网络ID,中心路由器CR1选中一个网络表项,该网络表项的网络ID与该查询消息中名称的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该查询消息,执行步骤406;

步骤409:如果节点D1接收到该数据消息,则执行步骤413,否则执行步骤410;

步骤410:如果中心路由器CR1接收到该数据消息,则执行步骤411,否则执行步骤412;

步骤411:接收到该数据消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID等于该数据消息中地址的前缀,从该网络表项的接口ID所标识的接口转发该数据消息,执行步骤409;

步骤412:接收到该数据消息的边界路由器或者接入路由器选中一个接口,该接口的接口ID等于该数据消息中地址的接口ID集合中的最后一个元素,从该数据消息中地址的接口ID集合中删除最后一个元素,从选中的接口转发该数据消息,执行步骤409;

步骤413:接收到该数据消息的节点D1保存该数据消息中的数据;

步骤414:结束。

说明书 :

一种基于分布式的网络服务部署和发现的实现方法

技术领域

[0001] 本发明涉及一种实现方法,尤其涉及的是一种基于分布式的网络服务部署和发现的实现方法。

背景技术

[0002] 近年来,很多研究工作致力于网络服务的部署和发现,以便通过网络能够快速获取网络服务。随着网络的发展,网络服务的部署和发现会成为提供服务的一项重要研究方向。
[0003] 目前,网络的实现模式是通过广播来实现,因此延迟和代价都比较大,降低了网络服务性能。因此,如何降低网络提供数据的延迟和代价成为近年来研究的热点问题。

发明内容

[0004] 发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于分布式的网络服务部署和发现的实现方法。
[0005] 技术方案:本发明公开了一种基于分布式的网络服务部署和发现的实现方法,所述网络包含路由器和节点,路由器包括中心路由器、边界路由器和接入路由器,所述网络中只有一个中心路由器;
[0006] 一个中心路由器配置两个以上的有线接口,每个接口连接一个边界路由器;
[0007] 一个边界路由器配置一个上游接口和两个以上的下游接口,上游接口和下游接口均为有线接口,上游接口连接中心路由器,下游接口连接接入路由器;
[0008] 一个接入路由器配置一个有线接口和一个无线接口,有线接口与边界路由器相连,无线接口与节点相连;每个节点配置一个无线接口,与接入路由器相连;
[0009] 所述网络划分为两个以上的边缘网络,一个边缘网络由一个网络ID标识;
[0010] 一个边缘网络包含一个边界路由器和两个以上的接入路由器,接入路由器与对应的边界路由器相连;
[0011] 一种与地理位置相关的数据类型由名称标识,一个名称由名称ID和坐标构成,名称ID标识数据的类型、坐标标识与数据相关的地理位置,例如某个地区的饭店信息,一个接入路由器能够提供多种类型的数据,所述数据为预先设置,定义所述数据的名称中的坐标等于该接入路由器的坐标,一个接入路由器保存一个数据表,一个数据表项包含名称和数据,针对该接入路由器所能提供的每一种类型的数据DA0,该接入路由器创建一个数据表项,该数据表项的名称等于定义数据DA0的名称,数据域值等于数据DA0;
[0012] 每个接入路由器的坐标具有网络唯一性;
[0013] 每个边界路由器保存一个服务表,每个服务表项包含名称集合、接口ID、坐标和生命周期;
[0014] 一个消息由消息ID标识;
[0015] 一个注册消息包含消息ID、名称集合和坐标;
[0016] 在接入路由器AR1与边界路由器ER1相连,边界路由器ER1位于边缘网络EN1中,接入路由器AR1所能提供的数据的名称集合为NS1的条件下,接入路由器AR1定期执行下述操作:
[0017] 步骤101:开始;
[0018] 步骤102:接入路由器AR1从有线接口发送一个注册消息,该注册消息的名称集合为NS1,坐标为接入路由器AR1自己的坐标;
[0019] 步骤103:从接口f1接收到注册消息的边界路由器ER1查看服务表,如果存在一个服务表项,该服务表项的接口ID等于f1,则将该服务表项的名称集合和坐标分别更新为该注册消息中的名称集合和坐标,将生命周期设置为最大值,否则创建一个服务表项,该服务表项的接口ID等于f1,该服务表项的名称集合和坐标分别设置为该注册消息中的名称集合和坐标,将生命周期设置为最大值;
[0020] 步骤104:结束;
[0021] 边界路由器ER1创建服务表后,选择一个服务表项E1,服务表项E1中坐标值中的横坐标xmax大于其他所有服务表项坐标值中的横坐标,选择一个服务表项E2,服务表项E2中坐标值中的横坐标xmin小于其他所有服务表项坐标值中的横坐标,选择一个服务表项E3,服务表项E3中坐标值中的纵坐标ymax大于其他所有服务表项坐标值中的纵坐标,选择一个服务表项E4,服务表项E4中坐标值中的纵坐标ymin小于其他所有服务表项坐标值中的纵坐标,边界路由器ER1将边缘网络EN1的网络ID设置为((xmax+xmin)/2,(ymax+ymin)/2)。
[0022] 接入路由器通过上述过程向所连接的边界路由器建立服务表,这样边界路由器可以获取所在边缘网络的接入路由器的坐标、与自己连接的接口的接口ID以及所能提供的数据的名称集合,这样,边界路由器通过服务表中的坐标能够计算并保存所在边缘网络的网络ID,同时通过接口ID将消息转发给正确的接入路由器进而实现正确的数据通信。
[0023] 本发明所述方法中,中心路由器保存一个网络表,一个网络表项包含网络ID、接口ID和生命周期;
[0024] 一个发布消息包含消息ID和网络ID;
[0025] 在边界路由器ER1位于边缘网络EN1中,与中心路由器CR1相连的条件下,边界路由器ER1定期执行下述操作:
[0026] 步骤201:开始;
[0027] 步骤202:边界路由器ER1从上游接口发送一个发布消息,该发布消息的消息ID为2,网络ID等于边缘网络EN1的网络ID;
[0028] 步骤203:从接口f2接收到该发布消息的中心路由器CR1查看网络表,判断是否存在一个接口ID等于f2网络表项,是则执行步骤204,否则执行步骤205;
[0029] 步骤204:从接口f2接收到该发布消息的中心路由器CR1选择一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID更新为该发布消息中的网络ID,将生命周期设置为最大值,大值取值范围为500ms-1000ms,执行步骤206;
[0030] 步骤205:从接口f2接收到该发布消息的中心路由器CR1创建一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID设置为该发布消息中的网络ID,将生命周期设置为最大值;
[0031] 步骤206:结束。
[0032] 边界路由器通过上述过程向中心路由器注册,中心路由器针对自己的每个接口ID建立网络表项从而获取所连接的边界路由器所在的边缘网络的网络ID,由于网络表项通过生命周期确保每个网络表项的实时性和正确性,从而确保了消息转发的正确性以及数据通信的正确性。
[0033] 本发明所述方法中,中心路由器、边界路由器以及接入路由器分别保存一个请求表,一个请求表项包含接口ID和名称;
[0034] 一个请求消息包含消息ID和名称;
[0035] 一个响应消息包含消息ID、名称和数据;
[0036] 在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1大于阈值TH0,例如1MB,节点D1则通过下述过程获取数据DA1:
[0037] 步骤301:开始;
[0038] 步骤302:节点D1发送一个请求消息,该请求消息的消息ID为3,名称等于NA1;
[0039] 步骤303:从接口x1接收到该请求消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该请求消息中的名称,是则执行步骤304,否则执行步骤305;
[0040] 步骤304:从接口x1接收到该请求消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x1发送一个响应消息,该响应消息的消息ID为4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;
[0041] 步骤305:从接口x1接收到该请求消息的接入路由器AR1查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,是则执行步骤315,否则执行步骤306;
[0042] 步骤306:从接口x1接收到该请求消息的接入路由器AR1创建一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,如果接入路由器AR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤307,否则执行步骤315;
[0043] 步骤307:从接口x1接收到该请求消息的接入路由器AR1从有线接口转发该请求消息;
[0044] 步骤308:从接口x2接收到该请求消息的边界路由器查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤309;
[0045] 步骤309:从接口x2接收到该请求消息的边界路由器创建一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,如果边界路由器只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤310,否则执行步骤315;
[0046] 步骤310:从接口x2接收到该请求消息的边界路由器判断是否存在一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,是则执行步骤311,否则执行步骤312;
[0047] 步骤311:从接口x2接收到该请求消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,从该服务表项的接口ID所标识的接口转发该请求消息,从接口x4接收到该请求消息的接入路由器选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x4发送一个响应消息,该响应消息的消息ID为4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;
[0048] 步骤312:从接口x2接收到该请求消息的边界路由器从上游接口转发该请求消息,中心路由器CR1从接口x3接收到该请求消息后,查看请求表,如果存在一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤313;
[0049] 步骤313:从接口x3接收到该请求消息的中心路由器CR1创建一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,如果中心路由器CR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤314,否则执行步骤315;
[0050] 步骤314:从接口x3接收到该请求消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID与该请求消息中名称中的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该请求消息,执行步骤308;
[0051] 步骤315:如果节点接收到该响应消息,则执行步骤317,否则执行步骤316;
[0052] 步骤316:接收到该响应消息的路由器选择所有名称等于该响应消息中名称的请求表项,针对每个请求表项,从该请求表项的接口ID所标识的接口转发该响应消息,删除该请求表项,执行步骤315;
[0053] 步骤317:接收到响应消息的节点保存该响应消息中的数据;
[0054] 步骤318:结束。
[0055] 节点通过上述过程通过服务表和请求表获取数据,由于上述过程中服务表项可以根据接口ID将请求消息转发到正确的接入路由器提供数据,因此确保了数据通信性能成功率,同时,两个以上的节点通过请求表能够通过一次通信过程获取数据从而有效降低数据通信代价和延迟,进而提高了数据通信效率。
[0056] 本发明所述方法中,一个节点由一个地址标识、一个地址包含前缀和接口ID集合;
[0057] 一个查询消息包含消息ID、地址和名称;
[0058] 一个数据消息包含消息ID、地址、名称和数据;
[0059] 在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1不大于阈值TH0,例如1MB,节点D1则通过下述过程获取数据DA1:
[0060] 步骤401:开始;
[0061] 步骤402:节点D1构建一个地址,该地址的前缀和接口ID集合均为空,节点D1发送一个查询消息,该查询消息的消息ID为5,地址等于构建的地址,名称等于NA1;
[0062] 步骤403:从接口y1接收到该查询消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该查询消息中的名称,是则执行步骤404,否则执行步骤405;
[0063] 步骤404:从接口y1接收到该查询消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y1发送一个数据消息,该数据消息的消息ID为6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;
[0064] 步骤405:从接口y1接收到该查询消息的接入路由器AR1将y1加入到查询消息中地址的接口ID集合中并作为最后一个元素,从有线接口转发该查询消息;
[0065] 步骤406:从接口y2接收到该查询消息的边界路由器将y2加入到查询消息中地址的接口ID集合中并作为最后一个元素,判断是否存在一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,是则执行步骤407,否则执行步骤408;
[0066] 步骤407:从接口y2接收到该查询消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,从该服务表项的接口ID所标识的接口转发该查询消息,从接口y4接收到该查询消息的接入路由器选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y4发送一个数据消息,该数据消息的消息ID为6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;
[0067] 步骤408:从接口y2接收到该查询消息的边界路由器从上游接口转发该查询消息,中心路由器CR1从接口y3接收到该查询消息后,选择一个网络表项,该网络表项的接口ID等于y3,将该查询消息中地址的前缀设置为该网络表项的网络ID,中心路由器CR1选中一个网络表项,该网络表项的网络ID与该查询消息中名称的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该查询消息,执行步骤406;
[0068] 步骤409:如果节点D1接收到该数据消息,则执行步骤413,否则执行步骤410;
[0069] 步骤410:如果中心路由器CR1接收到该数据消息,则执行步骤411,否则执行步骤412;
[0070] 步骤411:接收到该数据消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID等于该数据消息中地址的前缀,从该网络表项的接口ID所标识的接口转发该数据消息,执行步骤409;
[0071] 步骤412:接收到该数据消息的边界路由器或者接入路由器选中一个接口,该接口的接口ID等于该数据消息中地址的接口ID集合中的最后一个元素,从该数据消息中地址的接口ID集合中删除最后一个元素,从选中的接口转发该数据消息,执行步骤409;
[0072] 步骤413:接收到该数据消息的节点D1保存该数据消息中的数据;
[0073] 步骤414:结束。
[0074] 节点通过上述过程通过服务表和地址获取数据,由于上述过程中服务表项可以根据接口ID将请求消息转发到正确的接入路由器提供数据,因此确保了数据通信性能成功率,同时,节点通过地址能够争取获取数据从而进一步确保了数据正确性和有效性。
[0075] 有益效果:本发明提供了一种基于分布式的网络服务部署和发现的实现方法,用户通过本发明所提供的网络服务部署和发现的实现方法能够快速获取数据,从而有效缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。

附图说明

[0076] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0077] 图1为本发明所述的建立服务表流程示意图。
[0078] 图2为本发明所述的建立网络表流程示意图。
[0079] 图3为本发明所述的数据通信流程示意图。
[0080] 图4为本发明所述的获取数据流程示意图。具体实施方式:
[0081] 本发明提供了一种基于分布式的网络服务部署和发现的实现方法,用户通过本发明所提供的网络服务部署和发现的实现方法能够快速获取数据,从而有效缩短了获取服务数据的延迟和代价,提高了服务质量,本发明可应用于道路路况监测、环境监测等领域,具有广泛的应用前景。
[0082] 图1为本发明所述的建立服务表流程示意图。所述网络包含路由器和节点,路由器包括中心路由器、边界路由器和接入路由器,所述网络中只有一个中心路由器;
[0083] 一个中心路由器配置两个以上的有线接口,每个接口连接一个边界路由器;
[0084] 一个边界路由器配置一个上游接口和两个以上的下游接口,上游接口和下游接口均为有线接口,上游接口连接中心路由器,下游接口连接接入路由器;
[0085] 一个接入路由器配置一个有线接口和一个无线接口,有线接口与边界路由器相连,无线接口与节点相连;每个节点配置一个无线接口,与接入路由器相连;
[0086] 所述网络划分为两个以上的边缘网络,一个边缘网络由一个网络ID标识;
[0087] 一个边缘网络包含一个边界路由器和两个以上的接入路由器,接入路由器与对应的边界路由器相连;
[0088] 一种与地理位置相关的数据类型由名称标识,一个名称由名称ID和坐标构成,名称ID标识数据的类型、坐标标识与数据相关的地理位置,例如某个地区的饭店信息,一个接入路由器能够提供多种类型的数据,所述数据为预先设置,定义所述数据的名称中的坐标等于该接入路由器的坐标,一个接入路由器保存一个数据表,一个数据表项包含名称和数据,针对该接入路由器所能提供的每一种类型的数据DA0,该接入路由器创建一个数据表项,该数据表项的名称等于定义数据DA0的名称,数据域值等于数据DA0;
[0089] 每个接入路由器的坐标具有网络唯一性;
[0090] 每个边界路由器保存一个服务表,每个服务表项包含名称集合、接口ID、坐标和生命周期;
[0091] 一个消息由消息ID标识;
[0092] 一个注册消息包含消息ID、名称集合和坐标;
[0093] 在接入路由器AR1与边界路由器ER1相连,边界路由器ER1位于边缘网络EN1中,接入路由器AR1所能提供的数据的名称集合为NS1的条件下,接入路由器AR1定期执行下述操作:
[0094] 步骤101:开始;
[0095] 步骤102:接入路由器AR1从有线接口发送一个注册消息,该注册消息的名称集合为NS1,坐标为接入路由器AR1自己的坐标;
[0096] 步骤103:从接口f1接收到注册消息的边界路由器ER1查看服务表,如果存在一个服务表项,该服务表项的接口ID等于f1,则将该服务表项的名称集合和坐标分别更新为该注册消息中的名称集合和坐标,将生命周期设置为最大值,否则创建一个服务表项,该服务表项的接口ID等于f1,该服务表项的名称集合和坐标分别设置为该注册消息中的名称集合和坐标,将生命周期设置为最大值;
[0097] 步骤104:结束;
[0098] 边界路由器ER1创建服务表后,选择一个服务表项E1,服务表项E1中坐标值中的横坐标xmax大于其他所有服务表项坐标值中的横坐标,选择一个服务表项E2,服务表项E2中坐标值中的横坐标xmin小于其他所有服务表项坐标值中的横坐标,选择一个服务表项E3,服务表项E3中坐标值中的纵坐标ymax大于其他所有服务表项坐标值中的纵坐标,选择一个服务表项E4,服务表项E4中坐标值中的纵坐标ymin小于其他所有服务表项坐标值中的纵坐标,边界路由器ER1将边缘网络EN1的网络ID设置为((xmax+xmin)/2,(ymax+ymin)/2)。
[0099] 接入路由器通过上述过程向所连接的边界路由器建立服务表,这样边界路由器可以获取所在边缘网络的接入路由器的坐标、与自己连接的接口的接口ID以及所能提供的数据的名称集合,这样,边界路由器通过服务表中的坐标能够计算并保存所在边缘网络的网络ID,同时通过接口ID将消息转发给正确的接入路由器进而实现正确的数据通信。
[0100] 图2为本发明所述的建立网络表流程示意图。中心路由器保存一个网络表,一个网络表项包含网络ID、接口ID和生命周期;
[0101] 一个发布消息包含消息ID和网络ID;
[0102] 在边界路由器ER1位于边缘网络EN1中,与中心路由器CR1相连的条件下,边界路由器ER1定期执行下述操作:
[0103] 步骤201:开始;
[0104] 步骤202:边界路由器ER1从上游接口发送一个发布消息,该发布消息的消息ID为2,网络ID等于边缘网络EN1的网络ID;
[0105] 步骤203:从接口f2接收到该发布消息的中心路由器CR1查看网络表,判断是否存在一个接口ID等于f2网络表项,是则执行步骤204,否则执行步骤205;
[0106] 步骤204:从接口f2接收到该发布消息的中心路由器CR1选择一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID更新为该发布消息中的网络ID,将生命周期设置为最大值,大值取值范围为500ms-1000ms,执行步骤206;
[0107] 步骤205:从接口f2接收到该发布消息的中心路由器CR1创建一个网络表项,该网络表项的接口ID等于f2,将该网络表项的网络ID设置为该发布消息中的网络ID,将生命周期设置为最大值;
[0108] 步骤206:结束。
[0109] 边界路由器通过上述过程向中心路由器注册,中心路由器针对自己的每个接口ID建立网络表项从而获取所连接的边界路由器所在的边缘网络的网络ID,由于网络表项通过生命周期确保每个网络表项的实时性和正确性,从而确保了消息转发的正确性以及数据通信的正确性。
[0110] 图3为本发明所述的数据通信流程示意图。中心路由器、边界路由器以及接入路由器分别保存一个请求表,一个请求表项包含接口ID和名称;
[0111] 一个请求消息包含消息ID和名称;
[0112] 一个响应消息包含消息ID、名称和数据;
[0113] 在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1大于阈值TH0,例如1MB,节点D1则通过下述过程获取数据DA1:
[0114] 步骤301:开始;
[0115] 步骤302:节点D1发送一个请求消息,该请求消息的消息ID为3,名称等于NA1;
[0116] 步骤303:从接口x1接收到该请求消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该请求消息中的名称,是则执行步骤304,否则执行步骤305;
[0117] 步骤304:从接口x1接收到该请求消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x1发送一个响应消息,该响应消息的消息ID为4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;
[0118] 步骤305:从接口x1接收到该请求消息的接入路由器AR1查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,是则执行步骤315,否则执行步骤306;
[0119] 步骤306:从接口x1接收到该请求消息的接入路由器AR1创建一个请求表项,该请求表项的接口ID等于x1且名称等于该请求消息中的名称,如果接入路由器AR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤307,否则执行步骤315;
[0120] 步骤307:从接口x1接收到该请求消息的接入路由器AR1从有线接口转发该请求消息;
[0121] 步骤308:从接口x2接收到该请求消息的边界路由器查看请求表,判断是否存在一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤309;
[0122] 步骤309:从接口x2接收到该请求消息的边界路由器创建一个请求表项,该请求表项的接口ID等于x2且名称等于该请求消息中的名称,如果边界路由器只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤310,否则执行步骤315;
[0123] 步骤310:从接口x2接收到该请求消息的边界路由器判断是否存在一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,是则执行步骤311,否则执行步骤312;
[0124] 步骤311:从接口x2接收到该请求消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该请求消息中的名称,从该服务表项的接口ID所标识的接口转发该请求消息,从接口x4接收到该请求消息的接入路由器选择一个数据表项,该数据表项的名称等于该请求消息中的名称,从接口x4发送一个响应消息,该响应消息的消息ID为4,名称和数据分别等于该数据表项中的名称和数据,执行步骤315;
[0125] 步骤312:从接口x2接收到该请求消息的边界路由器从上游接口转发该请求消息,中心路由器CR1从接口x3接收到该请求消息后,查看请求表,如果存在一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,则执行步骤315,否则执行步骤313;
[0126] 步骤313:从接口x3接收到该请求消息的中心路由器CR1创建一个请求表项,该请求表项的接口ID等于x3且名称等于该请求消息中的名称,如果中心路由器CR1只存在一个名称等于该请求消息中的名称的请求表项,则执行步骤314,否则执行步骤315;
[0127] 步骤314:从接口x3接收到该请求消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID与该请求消息中名称中的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该请求消息,执行步骤308;
[0128] 步骤315:如果节点接收到该响应消息,则执行步骤317,否则执行步骤316;
[0129] 步骤316:接收到该响应消息的路由器选择所有名称等于该响应消息中名称的请求表项,针对每个请求表项,从该请求表项的接口ID所标识的接口转发该响应消息,删除该请求表项,执行步骤315;
[0130] 步骤317:接收到响应消息的节点保存该响应消息中的数据;
[0131] 步骤318:结束。
[0132] 节点通过上述过程通过服务表和请求表获取数据,由于上述过程中服务表项可以根据接口ID将请求消息转发到正确的接入路由器提供数据,因此确保了数据通信性能成功率,同时,两个以上的节点通过请求表能够通过一次通信过程获取数据从而有效降低数据通信代价和延迟,进而提高了数据通信效率。
[0133] 图4为本发明所述的获取数据流程示意图。一个节点由一个地址标识、一个地址包含前缀和接口ID集合;
[0134] 一个查询消息包含消息ID、地址和名称;
[0135] 一个数据消息包含消息ID、地址、名称和数据;
[0136] 在节点D1与接入路由器AR1链接,接入路由器AR1与边界路由器ER1连接,边界路由器ER1位于边缘网络EN1,边界路由器ER1与中心路由器CR1相连,数据DA1由名称NA1定义的条件下,如果数据DA1不大于阈值TH0,例如1MB,节点D1则通过下述过程获取数据DA1:
[0137] 步骤401:开始;
[0138] 步骤402:节点D1构建一个地址,该地址的前缀和接口ID集合均为空,节点D1发送一个查询消息,该查询消息的消息ID为5,地址等于构建的地址,名称等于NA1;
[0139] 步骤403:从接口y1接收到该查询消息的接入路由器AR1查看数据表,判断是否存在一个数据表项,该数据表项的名称等于该查询消息中的名称,是则执行步骤404,否则执行步骤405;
[0140] 步骤404:从接口y1接收到该查询消息的接入路由器AR1选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y1发送一个数据消息,该数据消息的消息ID为6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;
[0141] 步骤405:从接口y1接收到该查询消息的接入路由器AR1将y1加入到查询消息中地址的接口ID集合中并作为最后一个元素,从有线接口转发该查询消息;
[0142] 步骤406:从接口y2接收到该查询消息的边界路由器将y2加入到查询消息中地址的接口ID集合中并作为最后一个元素,判断是否存在一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,是则执行步骤407,否则执行步骤408;
[0143] 步骤407:从接口y2接收到该查询消息的边界路由器选中一个服务表项,该服务表项的名称集合中包含该查询消息中的名称,从该服务表项的接口ID所标识的接口转发该查询消息,从接口y4接收到该查询消息的接入路由器选择一个数据表项,该数据表项的名称等于该查询消息中的名称,从接口y4发送一个数据消息,该数据消息的消息ID为6,名称和地址分别等于该查询消息中的名称和地址,数据等于该数据表项中的数据,执行步骤409;
[0144] 步骤408:从接口y2接收到该查询消息的边界路由器从上游接口转发该查询消息,中心路由器CR1从接口y3接收到该查询消息后,选择一个网络表项,该网络表项的接口ID等于y3,将该查询消息中地址的前缀设置为该网络表项的网络ID,中心路由器CR1选中一个网络表项,该网络表项的网络ID与该查询消息中名称的坐标之间的距离最近,从该网络表项的接口ID所标识的接口转发该查询消息,执行步骤406;
[0145] 步骤409:如果节点D1接收到该数据消息,则执行步骤413,否则执行步骤410;
[0146] 步骤410:如果中心路由器CR1接收到该数据消息,则执行步骤411,否则执行步骤412;
[0147] 步骤411:接收到该数据消息的中心路由器CR1选择一个网络表项,该网络表项的网络ID等于该数据消息中地址的前缀,从该网络表项的接口ID所标识的接口转发该数据消息,执行步骤409;
[0148] 步骤412:接收到该数据消息的边界路由器或者接入路由器选中一个接口,该接口的接口ID等于该数据消息中地址的接口ID集合中的最后一个元素,从该数据消息中地址的接口ID集合中删除最后一个元素,从选中的接口转发该数据消息,执行步骤409;
[0149] 步骤413:接收到该数据消息的节点D1保存该数据消息中的数据;
[0150] 步骤414:结束。
[0151] 节点通过上述过程通过服务表和地址获取数据,由于上述过程中服务表项可以根据接口ID将请求消息转发到正确的接入路由器提供数据,因此确保了数据通信性能成功率,同时,节点通过地址能够争取获取数据从而进一步确保了数据正确性和有效性。
[0152] 实施例1
[0153] 基于表1的仿真参数,本实施例模拟了本发明中的一种基于分布式的网络服务部署和发现的实现方法,接入路由器AR1与边界路由器ER1相连,边界路由器ER1位于边缘网络EN1中,接入路由器AR1启动后,执行步骤101-步骤104向边界路由器发送注册消息,边界路由器接收到注册消息后建立接入路由器AR1的服务表项,例如服务表项的名称集合为{res1,res2,res3},接口ID等于1,坐标等于(29,31),生命周期等于500ms。边界路由器ER1创建服务表后,计算边缘网络EN1的网络ID,例如网络ID等于(27,33)。边界路由器ER1位于边缘网络EN1中,与中心路由器CR1相连,边界路由器ER1计算边缘网络EN1的网络ID之后,执行步骤201-206向中心路由器CR1发送发布消息,中心路由器CR1接收到发布消息后,为边界路由器ER1建立网络表项,例如,该网络表项的网络ID等于(27,33),接口ID等于2,生命周期等于500ms。如果数据DA1大于阈值TH0,例如TH0预先设置等于1MB,节点D1则执行步骤301-318获取数据DA1,在步骤301-318中,节点D1通过服务表和请求表获取数据DA1。如果数据DA1小于或者等于阈值TH0,例如TH0预先设置等于1MB,节点D1则执行步骤401-414获取数据DA1,在步骤401-414中,节点D1通过服务表和地址获取数据DA1,从而确保数据通信的正确性和成功率。性能分析如下:当数据长度较大的情况下,数据通信成功率随之下降,当传输的数据长度减少的情况下,数据通信成功率随之增加。数据获取的平均成功率为97.6%。
[0154] 表1仿真参数
[0155]
[0156] 本发明提供了一种基于分布式的网络服务部署和发现的实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。