[0099] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0100] 图1为本发明所述的创建数据树流程示意图。
[0101] 图2为本发明所述的从服务器获取数据流程示意图。
[0102] 图3为本发明所述的从路由器获取数据流程示意图。
[0103] 图4为本发明所述的数据更新流程示意图。具体实施方式:
[0104] 本发明提供了一种多路径的大数据网络实现方法,节点通过本发明提供的大数据网络实现方法能够快速获取所需数据,从而降低数据通信延迟和代价,提高服务质量。本发明可应用于智能医疗、路况检测等诸多领域,具有广泛的应用前景。
[0105] 图1为本发明所述的创建数据树流程示意图。所述网络包括服务器、路由器和节点;服务器和节点与一个路由器链路相连,所有的路由器构建成路由骨干网;
[0106] 一种类型的数据由数据ID唯一标识;服务器能产生、保存和提供一种类型的数据,一种类型的数据只能由一个服务器来产生;一个节点能够获取一种类型的数据;路由器能保存和提供一种类型的数据;一个路由器同一时刻只能保存和提供一种类型的数据;
[0107] 对于每种类型的数据,一个路由器维护一个转发表,该转发表的表名为标识该种类型数据的数据ID;一个转发表项包含序列号、硬件ID和距离域;
[0108] 每种类型的数据对应一个数据树,该数据树的根节点为产生该种类型数据的服务器,服务器通过数据树消息来建立数据树;
[0109] 一个数据树消息包含消息类型、数据ID、硬件ID和距离域;
[0110] 一个服务器、路由器或者节点共同维护一个数据表,一个数据表项包含数据ID域、数据域和生命周期域;
[0111] 数据D1由数据ID DID1唯一标识,服务器S1产生数据D1后,通过下述过程创建数据树:
[0112] 步骤101:开始;
[0113] 步骤102:服务器S1创建一个数据表项,该数据表项的数据ID等于DID1,数据域值等于数据D1,生命周期域值为预先设置值;服务器S1发送数据树消息,该数据树消息的消息类型为1,数据ID为DID1,硬件ID为服务器S1的硬件ID,距离域值等于1;
[0114] 步骤103:如果一个节点或者服务器接收到数据树消息,则执行步骤104,否则执行步骤105;
[0115] 步骤104:接收到数据树消息的节点或者服务器丢弃该数据树消息,执行步骤112;
[0116] 步骤105:接收到数据树消息的路由器判断是否存在一个转发表,该转发表的表名等于该数据树消息的数据ID,如果存在,则执行步骤107,否则执行步骤106;
[0117] 步骤106:接收到数据树消息的路由器创建一个转发表,该转发表的表名等于该数据树消息的数据ID;
[0118] 步骤107:接收到数据树消息的路由器选择一个转发表,该转发表的表名等于该数据树消息的数据ID,路由器判断该转发表中是否存在一个转发表项,该转发表项的硬件ID域值等于该数据树消息的硬件ID域值,如果是,则执行步骤109,否则执行步骤108;
[0119] 步骤108:接收到数据树消息的路由器选择一个转发表,该转发表的表名等于该数据树消息的数据ID,该路由器计算该转发表中转发表项的总数n,路由器创建一个转发表项,该转发表项的序列号为n+1,硬件ID等于该数据树消息的硬件ID,距离等于该数据树消息中的距离域值,执行步骤111;
[0120] 步骤109:接收到数据树消息的路由器选择一个转发表,该转发表的表名等于该数据树消息的数据ID,路由器在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该数据树消息的硬件ID域值,如果该转发表项的距离域值大于该数据树消息的距离域值,则执行步骤110,否则执行步骤112;
[0121] 步骤110:接收到数据树消息的路由器选择一个转发表,该转发表的表名等于该数据树消息的数据ID,路由器在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该数据树消息的硬件ID域值,将该转发表项的距离域值更新为该数据树消息中的距离域值;
[0122] 步骤111:接收到数据树消息的路由器将该数据树消息的距离域值递增1,将该数据树消息的硬件ID更新为自己的硬件ID,转发该数据树消息,执行步骤103;
[0123] 步骤112:结束。
[0124] 图2为本发明所述的从服务器获取数据流程示意图。一个节点通过请求消息和响应消息获取数据;
[0125] 请求消息包含消息类型、数据ID、目的硬件ID和源硬件ID域;
[0126] 响应消息包含消息类型、数据ID、目的硬件ID和数据域;
[0127] 数据D1由数据ID DID1唯一标识;如果一个路由器接收到一个请求消息,该请求消息的数据ID等于DID1,该路由器选择选择一个转发表,该转发表的表名等于DID1,并计算该转发表中转发表项的总数n1,然后利用公式(1)获取下一跳所对应的转发表项的序列号E1;
[0128] E1=DID1 MOD n1+1 公式(1)
[0129] 每个路由器维护一个请求表,一个请求表项包含数据ID域和硬件ID域;
[0130] 一个路由器定期广播信标消息,一个信标消息由源硬件ID域和负载域构成;
[0131] 路由器R1定期广播信标消息,该信标消息的源硬件ID为路由器R1的硬件ID,负载为空;与路由器R1链路相连的节点或者服务器接收到该信标消息后,保存该信标消息的源硬件ID;与路由器R1链路相连的路由器接收到该信标消息后,丢弃该信标消息;
[0132] 数据D1由数据ID DID1唯一标识,数据D1由服务器S1生成,节点N1与路由器R1链路相连;如果网络中任何一个路由器的数据表中都没有保存数据D1,则节点N1通过下述过程获取数据D1:
[0133] 步骤201:开始;
[0134] 步骤202:节点N1发送请求消息,该请求消息的消息类型为2,数据ID为DID1,目的硬件ID为路由器R1的硬件ID,源硬件ID为节点N1的硬件ID;
[0135] 步骤203:判断是否服务器S1接收到该请求消息,是则执行步骤212,否则执行步骤204;
[0136] 步骤204:判断是否节点接收到该请求消息,是则执行步骤205,否则执行步骤206;
[0137] 步骤205:接收到请求消息的节点丢弃该请求消息,执行步骤212;
[0138] 步骤206:接收到请求消息的路由器判断自己的硬件ID是否等于该请求消息的目的硬件ID,如果是,则执行步骤208,否则执行步骤207;
[0139] 步骤207:接收到请求消息的路由器丢弃该请求消息,执行步骤212;
[0140] 步骤208:接收到请求消息的路由器判断请求表中是否存在一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且该请求表项的硬件ID等于该请求消息的源硬件ID,如果存在,则执行步骤213,否则执行步骤209;
[0141] 步骤209:接收到请求消息的路由器判断请求表中是否存在一个请求表项,该请求表项的数据ID等于该请求消息的数据ID,如果存在,则执行步骤210,否则执行步骤211;
[0142] 步骤210:接收到请求消息的路由器创建一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且硬件ID等于该请求消息的源硬件ID,执行步骤213;
[0143] 步骤211:接收到请求消息的路由器创建一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且硬件ID等于该请求消息的源硬件ID;该路由器选择一个转发表,该转发表的表名等于该请求消息的数据ID,利用公式(1)获取下一跳所对应的转发表项的序列号E1,从该转发表中选择序列号为E1的转发表项,将该请求消息的目的硬件ID更新为该转发表项的硬件ID,将该请求消息的源硬件ID更新为该路由器的硬件ID,转发该请求消息,执行步骤203;
[0144] 步骤212:服务器S1接收到请求消息后,查看数据表并选择一个数据表项,该数据表项的数据ID等于该请求消息的数据ID,发送一个响应消息,该响应消息的消息类型为3,数据ID等于该请求消息的数据ID,目的硬件ID等于该请求消息的源硬件ID,数据域等于选中的数据表项;
[0145] 步骤213:判断是否一个节点接收到响应消息,则执行步骤219,否则执行步骤214;
[0146] 步骤214:判断是否服务器接收到该响应消息,则执行步骤215,否则执行步骤216;
[0147] 步骤215:接收到该响应消息的服务器丢弃该响应消息,执行步骤222;
[0148] 步骤216:接收到该响应消息的路由器判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果等于,则执行步骤218,否则执行步骤217;
[0149] 步骤217:接收到该响应消息的路由器丢弃该响应消息,执行步骤222;
[0150] 步骤218:接收到该响应消息的路由器查看数据表并清空数据表,同时创建一个数据表项,该数据表项的数据ID,数据域值以及生命周期分别等于该响应消息负载中的数据表项的数据ID,数据域值以及生命周期;该路由器查看请求表,选择所有数据ID等于该响应消息数据ID的请求表项,对于每个选择的请求表项执行下述操作:该路由器将该请求表项的目的硬件ID更新为该请求表项的硬件ID,转发该响应消息,执行步骤213;
[0151] 步骤219:接收到该响应消息的节点判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果等于,则执行步骤221,否则执行步骤220;
[0152] 步骤220:接收到该响应消息的节点丢弃该响应消息,执行步骤222;
[0153] 步骤221:接收到该响应消息的节点创建一个数据表项,该数据表项的数据ID,数据域值以及生命周期分别等于该响应消息负载中的数据表项的数据ID,数据域值以及生命周期;
[0154] 步骤222:结束。
[0155] 图3为本发明所述的从路由器获取数据流程示意图。数据D1由数据ID DID1唯一标识,数据D1由服务器S1生成,节点N1与路由器R1链路相连,如果网络中有两个以上的路由器的数据表中保存数据D1,则节点N1通过下述过程获取数据D1:
[0156] 步骤301:开始;
[0157] 步骤302:节点N1发送请求消息,该请求消息的消息类型为2,数据ID为DID1,目的硬件ID为路由器R1的硬件ID,源硬件ID为节点N1的硬件ID;
[0158] 步骤303:判断是否服务器S1接收到该请求消息,是则执行步骤314,否则执行步骤304;
[0159] 步骤304:判断是否节点接收到该请求消息,是则执行步骤305,否则执行步骤306;
[0160] 步骤305:接收到请求消息的节点丢弃该请求消息,执行步骤315;
[0161] 步骤306:接收到请求消息的路由器判断自己的硬件ID是否等于该请求消息的目的硬件ID,如果是,则执行步骤308,否则执行步骤307;
[0162] 步骤307:接收到请求消息的路由器丢弃该请求消息,执行步骤315;
[0163] 步骤308:接收到请求消息的路由器查看数据表,判断是否存在一个数据表项,该数据表项的数据ID等于该请求消息的数据ID,是则执行步骤309,否则执行步骤310;
[0164] 步骤309:接收到请求消息的路由器查看数据表,选择一个数据表项,该数据表项的数据ID等于该请求消息的数据ID,发送一个响应消息,该响应消息的消息类型为3,数据ID等于该请求消息的数据ID,目的硬件ID等于该请求消息的源硬件ID,数据域等于选中的数据表项,执行步骤315;
[0165] 步骤310:接收到请求消息的路由器判断请求表中是否存在一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且该请求表项的硬件ID等于该请求消息的源硬件ID,如果存在,则执行步骤315,否则执行步骤311;
[0166] 步骤311:接收到请求消息的路由器判断请求表中是否存在一个请求表项,该请求表项的数据ID等于该请求消息的数据ID,如果存在,则执行步骤312,否则执行步骤313;
[0167] 步骤312:接收到请求消息的路由器创建一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且硬件ID等于该请求消息的源硬件ID,执行步骤315;
[0168] 步骤313:接收到请求消息的路由器创建一个请求表项,该请求表项的数据ID等于该请求消息的数据ID且硬件ID等于该请求消息的源硬件ID;该路由器选择一个转发表,该转发表的表名等于该请求消息的数据ID,利用公式(1)获取下一跳所对应的转发表项的序列号E1,从该转发表中选择序列号为E1的转发表项,将该请求消息的目的硬件ID更新为该转发表项的硬件ID,将该请求消息的源硬件ID更新为该路由器的硬件ID,转发该请求消息,执行步骤303;
[0169] 步骤314:服务器S1接收到请求消息后,查看数据表并选择一个数据表项,该数据表项的数据ID等于该请求消息的数据ID,发送一个响应消息,该响应消息的消息类型为3,数据ID等于该请求消息的数据ID,目的硬件ID等于该请求消息的源硬件ID,数据域等于选中的数据表项;
[0170] 步骤315:判断是否一个节点接收到响应消息,是则执行步骤321,否则执行步骤316;
[0171] 步骤316:判断是否服务器接收到该响应消息,是则执行步骤317,否则执行步骤318;
[0172] 步骤317:接收到该响应消息的服务器丢弃该响应消息,执行步骤324;
[0173] 步骤318:接收到该响应消息的路由器判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果等于,则执行步骤320,否则执行步骤319;
[0174] 步骤319:接收到该响应消息的路由器丢弃该响应消息,执行步骤324;
[0175] 步骤320:接收到该响应消息的路由器查看数据表并清空数据表,同时创建一个数据表项,该数据表项的数据ID,数据域值以及生命周期分别等于该响应消息负载中的数据表项的数据ID,数据域值以及生命周期;该路由器查看请求表,选择所有数据ID等于该响应消息数据ID的请求表项,对于每个选择的请求表项执行下述操作:该路由器将该请求表项的目的硬件ID更新为该请求表项的硬件ID,转发该响应消息,执行步骤315;
[0176] 步骤321:接收到该响应消息的节点判断自己的硬件ID是否等于该响应消息的目的硬件ID,如果等于,则执行步骤323,否则执行步骤322;
[0177] 步骤322:接收到该响应消息的节点丢弃该响应消息,执行步骤324;
[0178] 步骤323:接收到该响应消息的节点创建一个数据表项,该数据表项的数据ID,数据域值以及生命周期分别等于该响应消息负载中的数据表项的数据ID,数据域值以及生命周期;
[0179] 步骤324:结束。
[0180] 图4为本发明所述的数据更新流程示意图。服务器使用更新消息来更新所产生的数据;更新消息包含消息类型、数据ID域、数据域、源硬件ID域和距离域;
[0181] 数据D1由数据ID DID1唯一标识,数据D1由服务器S1生成;如果服务器S1更新了数据D1,则执行下述过程执行更新操作:
[0182] 步骤401:开始;
[0183] 步骤402:服务器S1选择一个数据表项,该数据表项的数据ID为DID1,将该数据表项的数据域值更新为更新后的数据,生命周期设置为最大值;发送一个更新消息,该更新消息的消息类型为5,数据ID为DID1,数据域值为更新后的数据表项,源硬件ID为服务器S1的硬件ID,距离域值等于1;
[0184] 步骤403:判断是否服务器接收到该更新消息,是则执行步骤404,否则执行步骤405;
[0185] 步骤404:接收到更新消息的服务器丢弃该更新消息,执行步骤412;
[0186] 步骤405:判断是否节点接收到该更新消息,是则执行步骤406,否则执行步骤407;
[0187] 步骤406:接收到更新消息的节点查看数据表,判断是否存在一个数据表项,该数据表项的数据ID等于该更新消息的数据ID,是则将该数据表项的数据域和生命周期域更新为该更新消息数据域值中的数据表项的数据域和生命周期域值;否则,该节点丢弃该更新消息,执行步骤412;
[0188] 步骤407:接收到更新消息的路由器查看数据表,判断否是存在一个数据表项,该数据表项的数据ID等于该更新消息的数据ID,则将该数据表项的数据域和生命周期域更新为该更新消息数据域值中的数据表项的数据域和生命周期域值;该路由器选择一个转发表,该转发表的表名为该更新消息的数据ID,在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该更新消息的源硬件ID域值,判断该转发表项的距离域值是否小于该更新消息的距离域值,是则执行步骤408,否则执行步骤409;
[0189] 步骤408:接收到更新消息的路由器丢弃该更新消息,执行步骤412;
[0190] 步骤409:接收到更新消息的路由器选择一个转发表,该转发表的表名为该更新消息的数据ID,在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该更新消息的源硬件ID域值,判断该转发表项的距离域值是否大于该更新消息的距离域值,是则执行步骤410,否则执行步骤411;
[0191] 步骤410:接收到更新消息的路由器将选择一个转发表,该转发表的表名为该更新消息的数据ID,在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该更新消息的源硬件ID域值,将该转发表项的距离域值更新为该更新消息中的距离域值,该路由器将更新消息距离域值递增1,将源硬件ID更新为自己的硬件ID,转发该更新消息,执行步骤403;
[0192] 步骤411:接收到更新消息的路由器将选择一个转发表,该转发表的表名为该更新消息的数据ID,在该转发表中选择一个转发表项,该转发表项的硬件ID域值等于该更新消息的源硬件ID域值,将更新消息距离域值递增1,将源硬件ID更新为自己的硬件ID,转发该更新消息,执行步骤403;
[0193] 步骤412:结束。
[0194] 实施例1
[0195] 基于表1的仿真参数,本实施例模拟了本发明中的一种多路径的大数据网络实现方法,服务器产生数据后,执行步骤101-112建立转发表,网络运行初期,由于路由器的数据表中没有备份所需数据,所以节点通过执行步骤201-222获取数据,在节点执行步骤201-222过程中,路由器在数据表中备份了数据,因此网络运行中期和后期,节点通过执行步骤
301-324获取数据,如果服务器对数据进行了更新,则执行步骤401-412进行数据更新。本方法的性能分析如下:当数据传输量增加时,网络性能下降,数据获取延迟有所增加,当数据传输量降低时,网络性能增强,数据获取延迟有所下降,数据获取的平均延迟为1.47s。
[0196] 表1仿真参数
[0197]
[0198] 本发明提供了一种多路径的大数据网络实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。