一种人机物融合环境下的数字对象访问方法和系统

文档序号:27388506发布日期:2021-11-15 21:54阅读:118来源:国知局
1.本技术涉及通讯
技术领域
:,特别是涉及一种人机物融合环境下的数字对象访问方法和系统。
背景技术
::2.数字对象体系结构doa(digitalobjectarchitecture)是由图灵奖得主、互联网之父罗伯特·卡恩教授提出的一种软件体系结构,以数字对象为中心解决开放环境下信息系统资源之间的互操作。doa将资源抽象为数字对象并建模为描述信息、状态信息以及数据实体三个部分以屏蔽资源的异构性,将与资源的交互行为建模为搜索、解析、访问三个步骤以降低交互的复杂性。数字对象本质上是资源实体的数据抽象,互联网环境下的资源实体以信息系统中的文件、库表等数据资源为主,现有的doa面向互联网环境实现了数据资源实体的访问服务。3.人机物融合环境是指人类社会、物理世界和信息系统之间边界逐渐模糊、融合而成的新型环境。人机物融合环境中的资源以人、物实体为主,使用人机物数字对象抽象人机物资源可以屏蔽人、物实体的多样、异构的特征。4.互联网环境下的云端服务器,虽然其物理位置并不完全集中,但其丰富的计算、网络资源使得其可以在信息空间中提供稳定的数字对象访问服务以屏蔽物理位置的分散。然而,在人机物融合环境下的人、物实体具有空间属性,不可复制且可移动性受到现实世界的制约。人、物实体多产生、存储、消费于终端设备中,而终端设备在物理、网络空间上都极度分散,如何访问分散空间中的人机物数字对象是人机物环境下doa亟需解决的问题。技术实现要素:5.本技术提供一种人机物融合环境下的数字对象访问方法和系统,以解决在人机物融合环境下无法实时访问分散空间中的人机物数字对象的问题。6.为了解决上述问题,本技术采用了以下的技术方案:第一方面,本技术实施例提供了一种人机物融合环境下的数字对象访问方法,所述方法包括:基于分布式哈希表dht构建p2p网络,其中,所述p2p网络中的每个节点包括所述节点对应的节点标识;根据所述节点标识,利用kademlia算法构建每个节点对应的kad路由表;以所述p2p网络中的任意节点为目标节点,计算所述目标节点对应的kad路由表中的各个节点距离所述目标节点的逻辑距离,并根据所述各个节点距离所述目标节点的逻辑距离,构建索引二叉树;在所述索引二叉树中的任意节点获得数字对象的数据实体的情况下,将所述节点确定为临近仓库节点;所述临近仓库节点针对所述数据实体生成第一数据标识,并将所述第一数据标识依次向所述临近仓库节点的上一级父节点传递,直至所述第一数据标识到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表;在所述索引二叉树中的任意节点获得针对所述数据实体的查询请求的情况下,将所述节点确定为查询起始节点;所述查询起始节点在未存储有所述反向路由表的情况下,按照所述kad路由表,在所述索引二叉树中依次向其上一级父节点转发所述查询请求,直至所述查询请求到达包含有所述第一数据标识的反向路由表的父节点或根节点;包含有所述第一数据标识的反向路由表的父节点或根节点根据所述反向路由表,将所述查询请求转发至所述临近仓库节点;所述临近仓库节点根据所述查询请求,将所述数据实体的当前状态信息返回给所述查询起始节点。7.在本技术一实施例中,所述以所述p2p网络中的任意节点为目标节点,计算所述目标节点对应的kad路由表中的各个节点距离所述目标节点的逻辑距离的步骤,包括:采用以下异或计算公式,计算所述目标节点对应的kad路由表中的各个节点距离所述目标节点的逻辑距离;d(node1,node2)=idnode1⊕idnode2;式中,node1为目标节点,idnode1为目标节点的节点标识;node2为kad路由表中的任意节点,idnode2为kad路由表中的任意节点的节点标识;d(node1,node2)为目标节点与kad路由表中的任意节点之间的逻辑距离。8.在本技术一实施例中,所述根据所述各个节点距离所述目标节点的逻辑距离,构建索引二叉树的步骤,包括:根据所述各个节点距离所述目标节点的逻辑距离,将所述索引二叉树的第i层的树节点按照升序或者降序的顺序依次保存距离所述目标节点的逻辑距离在[2i‑1,2i)范围内的节点,其中,i为正整数。[0009]在本技术一实施例中,所述临近仓库节点针对所述数据实体生成第一数据标识,并将所述第一数据标识依次向所述临近仓库节点的上一级父节点传递,直至所述第一数据标识到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表的步骤,包括:所述临近仓库节点基于布隆过滤器生成反向路由表,所述反向路由表包括三元路由组<idnode,address,set[bfvector]>,其中,idnode为所述临近仓库节点的节点标识,address为所述临近仓库节点的网络地址,set[bfvector]为所述临近仓库节点包含的数据标识集合;所述临近仓库节点生成所述数据实体的第一数据标识,将第一数据标识写入所述临近仓库节点的set[bfvector]中,并向上一级父节点传递所述第一数据标识;所述父节点在获得所述第一数据标识的情况下,判断所述父节点是否包含指向所述临近仓库节点的反向路由表;若包括,所述父节点将所述第一数据标识写入所述父节点的set[bfvector]中,并将所述第一数据标识传递给所述父节点的下一个父节点,直至到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表;若不包括,所述父节点基于布隆过滤器生成所述父节点的三元路由组,将所述第一数据标识写入所述父节点的set[bfvector]中,并将所述第一数据标识传递给所述父节点的下一个父节点,直至到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表。[0010]在本技术一实施例中,所述查询起始节点在未存储有所述反向路由表的情况下,按照所述kad路由表,在所述索引二叉树中依次向其上一级父节点转发所述查询请求,直至所述查询请求到达包含有所述第一数据标识的反向路由表的父节点或根节点的步骤,包括:所述查询起始节点在未存储有所述反向路由表的情况下,按照所述kad路由表,在所述索引二叉树中依次向其上一级父节点转发所述查询请求,其中,所述查询请求包括所述第一数据标识和所述查询起始节点的节点标识;在所述上一级父节点中的set[bfvector]中不包含所述第一数据标识的情况下,所述上一级父节点将所述查询请求传递给下一个父节点,直至所述查询请求到达包含有所述第一数据标识的反向路由表的父节点或根节点。[0011]第二方面,基于相同发明构思,本技术实施例提供了一种人机物融合环境下的数字对象访问系统,所述系统包括:p2p网络构建模块,用于基于分布式哈希表dht构建p2p网络,其中,所述p2p网络中的每个节点包括所述节点对应的节点标识;根据所述节点标识,利用kademlia算法构建每个节点对应的kad路由表;索引二叉树构建模块,用于以所述p2p网络中的任意节点为目标节点,计算所述目标节点对应的kad路由表中的各个节点距离所述目标节点的逻辑距离,并根据所述各个节点距离所述目标节点的逻辑距离,构建索引二叉树;第一确定模块,用于在所述索引二叉树中的任意节点获得数字对象的数据实体的情况下,将所述节点确定为临近仓库节点;反向路由表构建模块,配置于所述临近仓库节点,所述反向路由表构建模块用于针对所述数据实体生成第一数据标识,并将所述第一数据标识依次向所述临近仓库节点的上一级父节点传递,直至所述第一数据标识到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表;第二确定模块,用于在所述索引二叉树中的任意节点获得针对所述数据实体的查询请求的情况下,将所述节点确定为查询起始节点;正向查询模块,配置于所述查询起始节点,所述正向查询模块在未存储有所述反向路由表的情况下,按照所述kad路由表,在所述索引二叉树中依次向其上一级父节点转发所述查询请求,直至所述查询请求到达包含有所述第一数据标识的反向路由表的父节点或根节点;反向查询模块,配置于包含有所述第一数据标识的反向路由表的父节点或根节点,所述反向查询模块用于根据所述反向路由表,将所述查询请求转发至所述临近仓库节点;信息返回模块,配置于所述临近仓库节点,所述信息返回模块用于将所述临近仓库节点针对所述查询请求返回的数字对象状态信息返回给所述查询起始节点。[0012]在本技术一实施例中,所述索引二叉树构建模块包括:距离计算子模块,采用以下异或计算公式,计算所述目标节点对应的kad路由表中的各个节点距离所述目标节点的逻辑距离;d(node1,node2)=idnode1⊕idnode2;式中,node1为目标节点,idnode1为目标节点的节点标识;node2为kad路由表中的任意节点,idnode2为kad路由表中的任意节点的节点标识;d(node1,node2)为目标节点与kad路由表中的任意节点之间的逻辑距离。[0013]在本技术一实施例中,所述索引二叉树构建模块还包括:树构建子模块,用于根据所述各个节点距离所述目标节点的逻辑距离,将所述索引二叉树的第i层的树节点按照升序或者降序的顺序依次保存距离所述目标节点的逻辑距离在[2i‑1,2i)范围内的节点,其中,i为正整数。[0014]在本技术一实施例中,所述反向路由表构建模块包括:反向路由表生成子模块,配置于所述临近仓库节点,所述反向路由表生成子模块用于基于布隆过滤器生成反向路由表,所述反向路由表包括三元路由组<idnode,address,set[bfvector]>,其中,idnode为所述临近仓库节点的节点标识,address为所述临近仓库节点的网络地址,set[bfvector]为所述临近仓库节点包含的数据标识集合;第一传递子模块,配置于所述临近仓库节点,所述第一传递子模块用于生成所述数据实体的第一数据标识,将第一数据标识写入所述临近仓库节点的set[bfvector]中,并向上一级父节点传递所述第一数据标识;判断子模块,用于在所述父节点获得所述第一数据标识的情况下,判断所述父节点是否包含指向所述临近仓库节点的反向路由表;第二传递子模块,配置于所述父节点,所述第二传递子模块用于在所述父节点包含指向所述临近仓库节点的反向路由表情况下,将所述第一数据标识写入所述父节点的set[bfvector]中,并将所述第一数据标识传递给下一个父节点,直至到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表;第三传递子模块,配置于所述父节点,所述第三传递子模块用于在所述父节点不包含指向所述临近仓库节点的反向路由表的情况下,基于布隆过滤器生成所述父节点的三元路由组,将所述第一数据标识写入所述父节点的set[bfvector]中,并将所述第一数据标识传递给下一个父节点,直至到达所述索引二叉树的根节点,以使所述父节点和所述根节点构建包含有所述第一数据标识的反向路由表。[0015]在本技术一实施例中,所述正向查询模块包括:第四传递子模块,配置于所述查询起始节点,所述第四传递子模块用于在所述查询起始节点在未存储有所述反向路由表的情况下,将所述查询请求按照所述kad路由表,依次向上一级父节点转发所述查询请求,其中,所述查询请求包括所述第一数据标识和所述查询起始节点的节点标识;第五传递子模块,配置于所述上一级父节点,所述第五传递子模块用于在所述上一级父节点中的set[bfvector]中不包含所述第一数据标识的情况下,将所述查询请求传递给下一个父节点,直至所述查询请求到达包含有所述第一数据标识的反向路由表的父节点或根节点。[0016]与现有技术相比,本技术包括以下优点:本技术实施例基于分布式哈希表dht构建p2p网络,并利用kademlia算法构建p2p网络中每个节点对应的kad路由表,以p2p网络中的任意节点为目标节点,均可根据kad路由表中各个节点距离目标节点的逻辑距离,构建索引二叉树,使得当数字对象的数据实体存储于索引二叉树中的任意节点时,数据实体对应的第一数据标识可从该节点出发,依次向该节点的上一级父节点传递第一数据标识,直至到达根节点,以使第一数据标识途径的根节点和所有的父节点均构建包含有第一数据标识的反向路由表;当索引二叉树中的任意节点获得针对数据实体的查询请求时,即在状态查询阶段,先是基于kad路由表进行正向寻址,直至查询到包含有第一数据标识的反向路由表的父节点或根节点,包含有第一数据标识的反向路由表的父节点或根节点便可直接按照反向路由表再进行反向寻址,直至找到该数据实体,最终将数据实体的当前状态信息返回给查询起始节点。本技术实施例通过构建kad路由表和反向路由表进行双向路由寻址,能够在不增加数据寻址复杂度的基础上,实现基于dht的p2p网络中数据实体的数据标识与其存储位置的解耦,允许数字对象的数据实体存储在p2p网络中的任意节点中,满足人机物融合环境下数字对象空间约束的同时也可以提高数字对象的访问效率。附图说明[0017]图1是本技术实施例中的数字对象体系结构的整体架构示意图;图2是本技术实施例中的人机物融合环境下的数字对象访问方法的步骤流程图;图3是本技术实施例中的基于双向路由的数字对象索引示意图;图4是本技术实施例中的人机物融合环境下的数字对象访问系统的连接关系示意图。[0018]附图标记:600‑人机物融合环境下的数字对象访问系统;601‑ꢀp2p网络构建模块;602‑索引二叉树构建模块;603‑第一确定模块;604‑反向路由表构建模块;605‑第二确定模块;606‑正向查询模块;607‑反向查询模块;608‑信息返回模块。具体实施方式[0019]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0020]本实施例需要说明的是,参照图1,示出了数字对象体系结构的整体架构示意图,doa的整体架构分为数据模型和交互模型两个部分。[0021]数据模型方面,doa以数字对象作为其体系结构中的基本元素,数字对象是资源的抽象表现形式。其中标识是数字对象的唯一身份标记,标识不随着数字对象的存储环境、访问环境、内容的变化而变化。一个完整的数字对象可以被分为三个部分:描述信息、数据实体以及状态信息,三者通过数字对象的标识建立关联关系,指向同一个逻辑数字对象。其中,描述信息表示数字对象和应用、业务相关的元数据,用于根据应用需求搜索所需数字对象,例如:数字对象的用途、数字对象的分类等;实体则代表了数字对象实际的内容,是互操作的真正目标;状态信息表示数字对象的当前状态,用于查找、验证数字对象,包括:数字对象的存储位置、权属信息、数字对象hash等。以一个音乐文件的数字对象为例,其描述信息包括音乐名、作者、所属专辑、音乐风格等信息;实体则是实际的音频文件,如:xxx.mp3;状态信息则包括音频文件的实际存储位置,音频文件的实际拥有者以及音频文件内容的hash值等信息。在人机物融合环境下,可以使用数字对象抽象人机物资源,提供统一的资源模型,以屏蔽人机物资源的异构性。[0022]交互模型方面,针对数字对象模型的三个组成部分,doa提出了三个构件:数字对象注册表(doregistry)、数字对象仓库(dorepository)以及标识解析系统(identifier/resolutionsystem)分别用于管理描述信息、实体以及状态信息。其中,数字对象注册表用于管理数字对象的描述信息,对外提供数字对象的索引、搜索服务,索引服务以数字对象的描述信息及标识为输入,注册表根据输入信息建立该数字对象的索引,搜索服务则根据输入的查询关键字,检索数字对象索引,返回匹配的数字对象标识;数字对象仓库实际存储数字对象,对外提供数字对象的访问服务,包括对数字对象的增删改查等行为;标识/解析系统则负责管理数字对象的状态信息,提供标识解析服务,根据目标数字对象的标识,返回数字对象的状态信息,此外,标识解析系统还负责数字对象的标识分发工作。doa还制定了两个标准协议以规范和这三个构件的交互行为,分别是:和数字对象注册表、数字对象仓库交互的数字对象接口协议doip(digitalobjectinterfaceprotocol)以及和标识/解析系统交互的标识解析协议(identifierresolutionprotocol)。其中doip协议规范了对数字对象的访问行为,在人机物环境下可以作为人机物资源互操作行为的抽象和规范,以降低互操作行为的复杂性。[0023]互联网环境下,数字对象主要产生于信息系统,由库表、文档、图片等已经存在于信息系统中的数据转变而成,比如目前最广泛的数字对象应用doi,其为已发表的论文分配唯一的标识并将其看做是数字对象。在数字对象表达方面,现有的doa实现中将数字对象看做是一种标准的数据序列化格式和最小数据单元,数据被格式化为属性、元素两个部分,属性表达元数据,实际的数据内容存放于元素字段中,之后数字对象会被分配唯一的标识并将其唯一的存储于某个数字对象仓库中。在数字对象访问方面,数字对象仓库一般以云端服务器为主,对外通过唯一的网络入口提供数字对象的访问服务,根据数字对象的标识解析器状态信息可以获取到数字对象当前所在仓库的服务地址,进而通过doip协议实现数字对象的增删改查,访问数字对象仓库的方式和现有的对象数据库的访问方式并无本质不同。在访问权限管理方面,数字对象仓库的管理者同时也是本地存储的所有数字对象的所有者,拥有对所有数字对象的修改权限。[0024]可以看出,互联网环境下,数字对象是对互联网信息系统中的实体如库表、文档、图片等数据的抽象表达,数据本质上是一串比特序列,具有易移动、可复制、静态少变的特征。因此,基于doa可有效实现互联网环境下的数据资源实体的访问。[0025]然而,在人机物融合环境下,人机物数字对象产生、存储、消费于空间分散终端设备中,访问人机物数字对象的首要需求是高效定位到分散的目标数字对象。对于互联网环境下的云端服务器,虽然其物理位置并不完全集中,但其丰富的计算、网络资源使得其可以在信息空间中提供稳定的数字对象访问服务以屏蔽物理位置的分散。然而对于终端设备而言,其物理空间更加分散,且由于资源限制无法提供稳定的访问入口。作为人机物数字对象的主要运行环境,终端设备无法提供稳定的人机物数字对象访问服务。[0026]同时,基于分布式哈希表dht(distributedhashtable)的p2p(peertopeer)网络由于其高效的数据寻址方式而被广泛应用于分布式存储中。在dht中,每个参与节点会被分配一个唯一的标识并在本地路由表中记录其他部分节点的信息,节点根据本地路由表决定消息转发的下一跳节点。通过这种方式,dht可以以完全去中心化的方式高效的将消息传递至全网的任意目标节点。一般而言,基于dht的p2p存储可以达到对数级别的节点、数据寻址复杂度,仅通过logn次的消息路由,即可从任意节点找到目标数据所在节点,其中n为网络中节点的数量。dht中的数据查找本质上也是对数据所在节点的查找,因此在传统的dht中一般会定义数据和节点之间的距离,并且要求数据必须存放在其算法指定的节点上,一般为距离最近的节点,才能实现o(logn)级别的数据访问。[0027]然而,人机物数字对象无法在物理空间上远离产生该数字对象的终端设备。一方面终端设备无法像互联网的p2p节点一样可以直接和任意节点建立路由关系,终端设备一般仅能和其临近的手机、网关等设备通过wifi、蓝牙、zigbee等物联网协议建立连接;另一方面,由于人机物数字对象的时效性和隐私性,强行将人机物数字对象存放于远离生产终端的节点上不仅不能保证访问到的数字对象是最新的,同时也存在隐私泄露风险。[0028]基于上述现有技术存在的缺陷,使得现有的doa难以在人机物融合环境下做到实时有效地访问到分散空间中的任意人机物数字对象,为此,本技术实施例旨在提供一种基于双向路由的人机物融合环境下的数字对象访问方法,实现基于dht的p2p网络中数据实体的数据标识与其存储位置的解耦,进而允许数字对象的数据实体存放于全网任意节点,满足人机物融合环境下数字对象空间约束的同时也可以实现o(logn)级别的访问效率。[0029]参照图2,示出了本技术一种人机物融合环境下的数字对象访问方法,所述方法可以包括以下步骤:步骤s101:基于分布式哈希表dht构建p2p网络,其中,p2p网络中的每个节点包括节点对应的节点标识;根据节点标识,利用kademlia算法构建每个节点对应的kad路由表。[0030]本实施例需要说明的是,基于dht的p2p网络中,每个参与节点会被分配一个全网唯一的标识,一般为定长的散列值(hash)。而在kademlia算法中,则是为每个节点分配一个长度为160bit的节点标识idnode,同时定义节点之间的距离d为两个节点的哈希值的异或。[0031]在kademlia算法中,每个节点均本地维护一张kad路由表,kad路由表由160个k‑桶(k‑bucket)组成,每个k‑桶中存有k个其他节点的路由项,路由项以<idnode,address>形式表示,在发现新节点时本地节点nodelocal按照该节点与自己的距离将其放置在不同的k‑桶中,其中第i个k‑桶中保存距离在[2i,2i+1)范围内的节点,若k‑桶中路由项数量已超过k,则替换掉最久未响应节点的路由项。在收到节点标识为idtarget的目标节点nodetarget的查找消息时,nodelocal会计算自己和idtarget的距离d(nodelocal,nodetarget),并将消息转发至对应k‑桶中距离目标最近的α个节点,其中,α为消息转发节点数量,也称之为消息并行度。根据k‑桶的构建规则,下一跳节点nodenext和nodetarget的距离将满足d(nodenext,nodetarget)≤d(nodelocal,nodetarget)/2,即每次消息转发到下一跳节点nodenext时,下一跳节点nodenext与目标节点nodetarget之间的距离将至少缩短一半,从而保证在logn跳之内消息可以从任意节点转发至目标节点。需要说明的是,还可以提高消息并行度α来增加节点传递消息时所选择的邻居节点数量以提高查询成功率和效率。[0032]由于在kad路由表中,消息是由距离目标节点更远的节点向距离目标节点更近的的节点进行传递,因此可将基于kademlia的寻址本文称之为“正向寻址”,节点的kademlia路由表称之为“正向路由表”。[0033]步骤s102:以p2p网络中的任意节点为目标节点,计算目标节点对应的kad路由表中的各个节点距离目标节点的逻辑距离,并根据各个节点距离目标节点的逻辑距离,构建索引二叉树;本实施例需要说明的是,数字对象的数据实体存储在基于kademlia算法的p2p中的节点时,数据实体data也会被分配一个数据标识iddata。dht会根据数据实体data的数据标识iddata选择全网与数据实体距离最近的k个节点,并将k份数据副本分别存储于这k个节点中,在数据查询时只需要找到全网d(data,node)最小的节点即可找到目标数据。通过此种方式,dht对数据实体data的查询请求即可视为对标识为iddata的节点的查找,从任意节点开始仅通过最多logn次消息路由即可找到目标数据。在p2p存储中,节点之间的消息传递延迟是数据寻址的主要开销,因此基于dht的p2p存储可以极大提高数据寻址的效率。然而也是由于dht的这种特性,数据必须按照其标识存放在全网距离最近的节点中,因而无法根据节点的存储空间、带宽和可用性的异构性来将数据实体存放在合适的节点上,导致数据访问的效率往往取决于存储网络中的短板节点。因此在基于dht的p2p存储网络中,提升数据访问效率的首要挑战就在于实现数据实体的数据标识和其存储位置之间的解耦。[0034]为了实现基于dht的p2p网络中数据实体的数据标识与其存储位置的解耦,在本实施方式中,基于目标节点与kad路由表中的各个节点的距离,将kad路由表的节点之间的路由关系转化为索引二叉树的形式。具体地,步骤s102可以包括以下具体子步骤:子步骤s102‑1:以p2p网络中的任意节点为目标节点,采用以下异或计算公式,计算目标节点对应的kad路由表中的各个节点距离目标节点的逻辑距离;d(node1,node2)=idnode1⊕idnode2ꢀꢀꢀꢀ(1);式中,node1为目标节点,idnode1为目标节点的节点标识;node2为kad路由表中的任意节点,idnode2为kad路由表中的任意节点的节点标识;d(node1,node2)为目标节点与kad路由表中的任意节点之间的逻辑距离。[0035]在一个示例中,idnode1为00110,idnode2为00111,则经过公式(1)的计算得到d(node1,node2)=001,即,node1和node2之间的逻辑距离为1。[0036]子步骤s102‑2:根据各个节点距离目标节点的逻辑距离,将索引二叉树的第i层的树节点按照升序或者降序的顺序依次保存距离目标节点的逻辑距离在[2i‑1,2i)范围内的节点,其中,i为正整数。[0037]参照图3,示出了本技术实施例中的基于双向路由的数字对象索引示意图,图3所示的节点网络规模n=15。[0038]参照图3中的图3(a),其中,索引二叉树的根节点即为全网距离目标节点最近的节点,该根节点在索引二叉树的层级为第1层;第2层则为距离目标节点的逻辑距离在[21,22)范围内的节点,即与目标节点的距离为2、3的节点;第3层则为距离目标节点的逻辑距离在[22,23)范围内的节点,即与目标节点的距离为4、5、6、7的节点;依次类推,在获得各个层级的节点之后,将这些节点按照升序或者降序的顺序进行排列,以距离大的节点指向距离小的节点为方向,构建索引二叉树。[0039]需要说明的是,在实际运用中,由于可能存在部分节点失效等情况,因此,索引二叉树并不一定是棵满树,如图3中与目标节点的距离为5的节点失效,那么在数据寻址的过程中,与目标节点的距离为10的节点便可直接跳转到与目标节点的距离为2的节点中,在这类情况下,数据寻址的效率会更快;或者,与目标节点的距离为1的节点失效,那么距离目标节点的最近的节点与目标节点之间的距离有可能是2、3或者其他距离等。[0040]因而,当索引二叉树为一棵满树时,属于“情况最坏”的情形,也即需要理论上的最多次的跳转才能跳转到目标节点的请况。故应当理解,图3中的索引二叉树仅为一个示例,本实施方式对于树的具体结构并不作具体限制。[0041]步骤s103:在索引二叉树中的任意节点获得数字对象的数据实体的情况下,将节点确定为临近仓库节点。[0042]在本实施方式中,由于dht会根据数据实体data的数据标识iddata选择全网与数据实体距离最近的k个节点,并将k份数据副本分别存储于这k个节点中,因此,索引二叉树中的任意节点均可作为用于存储数据实体的临近仓库节点。[0043]步骤s104:临近仓库节点针对数据实体生成第一数据标识,并将第一数据标识依次向临近仓库节点的上一级父节点传递,直至第一数据标识到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表。[0044]在本实施方式中,继续参照图3中的图3(a),以与目标节点的距离为10的节点(以下简称10号节点)为例,将其作为存储数据实体的临近仓库节点,临近仓库节点在数据存储阶段,会生成与数据实体对应的第一数据标识,并将第一数据标识向上一级父节点传递,即传递到与目标节点的距离为5(以下简称5号节点)的节点,随后5号节点将第一数据标识传递给与目标节点的距离为2的节点(以下简称2号节点),直至第一数据标识到达索引二叉树的根节点,即与目标节点的距离为2的节点,直至到达与目标节点的距离为1的节点(以下简称根节点)。[0045]这样,当根节点收到针对第一数据标识对应的数据实体的查询请求时,根节点便可知道数据实体存在于2号节点的路由表中,2号节点知道数据实体存在于5号节点的路由表中,5号节点知道数据实体存在于10号节点的路由表中,直到反向查询到10号节点中,并最终在10号节点找到所需的数据实体。因此,反向路由表的寻址过程可称之为“反向寻址”。[0046]步骤s105:在索引二叉树中的任意节点获得针对数据实体的查询请求的情况下,将节点确定为查询起始节点。[0047]需要说明的是,在本实施方式中,任意索引二叉树中的任意节点均可作为查询请求的起始节点。[0048]步骤s106:查询起始节点在未存储有反向路由表的情况下,按照kad路由表,在索引二叉树中依次向其上一级父节点转发查询请求,直至查询请求到达包含有第一数据标识的反向路由表的父节点或根节点。[0049]在本实施方式中,按照kad路由表寻址规则进行寻址,即为正向寻址的过程,具体指每次消息转发到下一跳节点nodenext时,下一跳节点nodenext与目标节点nodetarget之间的距离将至少缩短一半。参照图3中的图3(b),以与目标节点的距离为7的节点(以下简称7号节点)为查询起始节点,按照kad路由表的寻址规则,7号节点会向与目标节点的距离为3的节点(以下简称3号节点)转发查询请求,3号节点则向根节点转发查询请求。[0050]本实施方式需要说明的是,在正向寻址的过程中,查询到根节点为“最坏的情况”,即需要跳转最多次到根节点的情况。若查询起始节点为4号节点的情况,则只需要跳转一次就能找到包含第一数据标识的反向路由表的2号节点,并在2号节点开始反向寻址,进而无需跳转到根节点。[0051]本实施方式需要进一步说明的是,若查询起始节点恰好为存储有反向路由表,例如查询起始节点为根节点、2号节点或者5号节点的情况下,那么可直接根据反向路由表找寻到第一数据标识对应的数据实体。[0052]步骤s107:包含有第一数据标识的反向路由表的父节点或根节点根据反向路由表,将查询请求转发至临近仓库节点。[0053]在本实施方式中,当查询请求转发到包含有针对第一数据标识的反向路由表的父节点或根节点时,对应的父节点或根节点便可直接根据反向路由表找到第一数据标识对应的数据实体。[0054]步骤s108:临近仓库节点根据查询请求,将数据实体的当前状态信息返回给查询起始节点。[0055]在本实施方式中,基于索引二叉树,查询请求通过正向路由表和反向路由表必然可以在logn跳内到达临近仓库节点,实现o(logn)级别的访问效率,临近仓库节点则根据查询请求,将数据实体的当前状态信息返回给查询起始节点,完成对数字对象的数据实体的状态查询。[0056]本技术实施例基于双向路由的人机物融合环境下的数字对象访问方法,基于采用对等网络体系结构的p2p网络用于存储数字对象的数据实体,进而实现将空间分散的对应终端设备之间的连接,构建人机物数字对象访问环境;同时,通过将k份数据副本分别存储于这k个节点的常数级多备份的方式将人机物数字对象的数据实体备份于常数个节点中,以保障数字对象访问的高可用性,最后,采用分布式哈希表dht技术优化终端设备对应的节点之间的连接关系并通过双向路由技术建立数字对象索引算法,实现基于dht的p2p网络中数据实体的数据标识与其存储位置的解耦,允许数字对象的数据实体存储在p2p网络中的任意节点中,避免将人机物数字对象存放于远离生产终端的节点存在的隐私泄露风险,满足人机物融合环境下数字对象空间约束的同时提高数字对象的访问效率,同时保证访问到的数字对象是最新的。[0057]在一个可行的实施方式中,步骤s104可以具体包括以下子步骤:子步骤s104‑1:临近仓库节点基于布隆过滤器生成反向路由表,反向路由表包括三元路由组<idnode,address,set[bfvector]>,其中,idnode为临近仓库节点的节点标识,address为临近仓库节点的网络地址,set[bfvector]为临近仓库节点包含的数据标识集合。[0058]本实施方式需要说明的是,布隆过滤器(bloomfilter)是一种二进制向量数据结构,同时也是一种结构简单而空间复杂度较小的随机数据结构,它具有较好的空间和时间效率,它可以精确表示集合并回答类似“元素x是否在集合a中”的判定。[0059]需要说明的是,基于bloomfilter生成的反向路由表中的set[bfvector]以向量集合的方式存储路由项中的数据标识集合,意味着采用bloomfilter可将多个数据实体分别对应的数据标识均存储在节点的set[bfvector],同时满足多个数据实体的存储与查询需求。[0060]子步骤s104‑2:临近仓库节点生成数据实体的第一数据标识,将第一数据标识写入临近仓库节点的set[bfvector]中,并向上一级父节点传递第一数据标识。[0061]子步骤s104‑3:父节点在获得第一数据标识的情况下,判断父节点是否包含指向临近仓库节点的反向路由表。[0062]子步骤s104‑4:若包括,父节点将第一数据标识写入父节点的set[bfvector]中,并将第一数据标识传递给父节点的下一个父节点,直至到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表。[0063]子步骤s104‑5:若不包括,父节点基于布隆过滤器生成父节点的三元路由组,将第一数据标识写入父节点的set[bfvector]中,并将第一数据标识传递给父节点的下一个父节点,直至到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表。[0064]在本实施方式中,第一数据标识途径的每个节点均会基于bloomfilter生成一个反向路由表,反向路由表包括三元路由组<idnode,address,set[bfvector]>。[0065]在一个例子中,进行参照图3(a),以10号节点作为临近仓库节点,10号节点会首先基于bloomfilter生成反向路由表,并将第一数据标识写入10号节点的set[bfvector]中,并将第一数据标识向5号节点进行传递。5号节点判断是否包含有针对10号节点的路由项。若包括,则,说明无需再构建新的三元路由组,则直接将第一数据标识写入5号节点的set[bfvector]中,并将第一数据标识向2号节点进行传递;若不包括,则生成新的三元路由组后,将第一数据标识写入5号节点的set[bfvector]中,并将第一数据标识向2号节点进行传递。进而确保经过反向路由表一定能反向查询到第一数据标识对应的数据实体所在的临近仓库节点。[0066]在本实施方式中,由于布隆过滤器的存储开销、存储复杂度和判定复杂度为常数级别,因此,在满足反向路由表的构建需求的同时,还能减少反向路由表的存储开销。[0067]需要说明的是,bloomfilter虽然会有一定的假阳性概率,即对于不属于集合的元素有一定概率判定该元素属于此集合,但是bloomfilter的假阳性不影响本实施方式数据寻址的准确率。因为在反向寻址过程中若目标数据在反向路由表中则一定可以将寻址消息传递给离数据存储节点更近的邻居节点,因此bloomfilter的假阳性不影响正确的反向寻址路径。bloomfilter的假阳性会导致消息有一定概率被转发至错误节点,但也只会影响反向寻址的复杂度,并且最多也会经过2logn跳之后停止,因此,基于bloomfilter的反向路由表即使在最坏的情况仍然可以实现o(logn)级别的访问效率。[0068]在一个可行的实施方式中,步骤s106可以包括以下具体子步骤:子步骤s106‑1:查询起始节点在未存储有反向路由表的情况下,按照kad路由表,在索引二叉树中依次向其上一级父节点转发查询请求,其中,查询请求包括第一数据标识和查询起始节点的节点标识;在本实施方式中,将查询起始节点的节点标识写入查询请求,可以在查找到目标数据即第一数据标识对应的数据实体时,可直接将数据实体的状态信息返回查询起始节点。[0069]子步骤s106‑2:在上一级父节点中的set[bfvector]中不包含第一数据标识的情况下,上一级父节点将查询请求传递给下一个父节点,直至查询请求到达包含有第一数据标识的反向路由表的父节点或根节点。[0070]在本实施方式中,即在进行正向路由的过程中,同样基于bloomfilter用于判断第一数据标识是否存在于上一级父节点的set[bfvector]中,若存在,则说明上一级父节点存在针对第一数据标识的反向路由表,这种情况下,直接根据反向路由表进行反向寻址;若不存在,则继续向根节点进行查询请求的传递。[0071]由于根节点必定包含针对第一数据标识的反向路由表,因而,无论查询起始节点在哪个节点,最终必然经过有限次跳转可查询到针对第一数据标识的反向路由表,并进行反向路由,进而实现对数据实体的访问。[0072]在本实施方式中,将进一步对本技术实施例提供的一种人机物融合环境下的数字对象访问方法进行算法开销的分析,以证明本实施方式从任意节点出发均能找到目标数据,且时间、存储、网络开销均较低。[0073]寻址复杂度分析:在基于kademlia算法构建的结构化p2p网络中,针对某个数据可得一张有向无环图,本实施方式中的反向路由表的构建流程可以看做是从任意节点向根节点的路由过程,其长度最长为logn,因此反向路由表构建算法的复杂度为o(logn)。针对数字实体的寻址流程可以分为正向和反向两个阶段,其中正向阶段为任意节点向根节点的路由,而反向阶段则是从根节点沿着有向无环图中的边逆向路由的过程,长度最长也为logn,因此本实施方式的寻址复杂度为o(logn)。[0074]假阳性对寻址效率的影响:bloomfilter的假阳性不会影响寻址的正确性和复杂度,仅会增加一定的冗余消息(同一条消息多次传递视为多条)。通过对假阳性概率的合理设置可以保证假阳性所造成冗余消息量不会带来较大的网络开销。[0075]对于节点规模为n的网络,节点标识至少包含logn个比特,即每个节点本地需要有logn个k‑桶,每个k‑桶最多有k个邻居节点,其中k为节点路由表容量,从而得出每个节点正向路由表中路由项的数量最多为k×logn。假设节点间连接关系构建随机,正向路由表中路由关系分布均匀,则根据对称性原则,节点反向路由表中所包含的邻居节点数量亦为k×logn。又有假阳性概率p,因此反向寻址过程中每一跳可能引发的假阳性寻址消息分叉数量期望为kp×logn。而所有反向寻址均会在logn跳内停止,产生在第一跳的假阳性消息最多经过logn跳,产生于第二跳的假阳性消息最多经过logn‑1跳,以此类推。故假阳性导致的冗余消息量最多为:式中,r为冗余消息量;k为节点路由表容量;p为假阳性概率;n为节点规模。[0076]对于节点规模为1000,k‑桶容量为20的kademlia存储网络,令假阳性概率为0.001,则单次查询由于反向路由表的假阳性而产生的冗余消息量最多约为10条。此外,假阳性导致的冗余寻址和正确寻址路径并行,因此不会影响查询的响应时间。[0077]本实施方式的存储开销主要体现在反向路由表中bloomfilter所占空间,本实施方式通过评估不同网络规模n,数据量m以及消息并行度α的情况下平均每个节点在反向路由表中所包含的bloomfilter向量数量来评估本实施方式的存储开销。经过模拟试验发现,平均每个节点反向路由表中所包含的bloomfilter向量数量随着α和m的增加而增加且最终趋于稳定。示例地,对于n=1000,α=3的存储网络中,m达到10000时平均每个节点所含bloomfilter向量数量约为60。假设每个bloomfilter期望所包含元素个数为1000,假阳性概率p=0.001,则每个bloomfilter向量所占用存储空间:因而平均每个节点反向路由表总开销仅约为60*s=864kbits。[0078]综上,本实施方式提供的基于双向路由技术的人机物融合环境下的数字对象访问方法在不增加数据寻址复杂度的情况下,不仅实现了数据实体的数据标识与其存储位置的解耦,允许数字对象的数据实体存储在p2p网络中的任意节点中,从任意节点出发均能找到目标数据,并且本实施方式的时间、存储、网络开销均较低。[0079]第二方面,参照图4,基于相同发明构思,本技术实施例提供了一种人机物融合环境下的数字对象访问系统600,系统包括:p2p网络构建模块601,用于基于分布式哈希表dht构建p2p网络,其中,p2p网络中的每个节点包括节点对应的节点标识;根据节点标识,利用kademlia算法构建每个节点对应的kad路由表;索引二叉树构建模块602,用于以p2p网络中的任意节点为目标节点,计算目标节点对应的kad路由表中的各个节点距离目标节点的逻辑距离,并根据各个节点距离目标节点的逻辑距离,构建索引二叉树;第一确定模块203,用于在索引二叉树中的任意节点获得数字对象的数据实体的情况下,将节点确定为临近仓库节点;反向路由表构建模块604,配置于临近仓库节点,反向路由表构建模块604用于针对数据实体生成第一数据标识,并将第一数据标识依次向临近仓库节点的上一级父节点传递,直至第一数据标识到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表;第二确定模块605,用于在索引二叉树中的任意节点获得针对数据实体的查询请求的情况下,将节点确定为查询起始节点;正向查询模块606,配置于查询起始节点,正向查询模块606在未存储有反向路由表的情况下,按照kad路由表,在索引二叉树中依次向其上一级父节点转发查询请求,直至查询请求到达包含有第一数据标识的反向路由表的父节点或根节点;反向查询模块607,配置于包含有第一数据标识的反向路由表的父节点或根节点,反向查询模块607用于根据反向路由表,将查询请求转发至临近仓库节点;信息返回模块608,配置于临近仓库节点,信息返回模块608用于将临近仓库节点针对查询请求返回的数字对象状态信息返回给查询起始节点。[0080]在本技术一实施例中,索引二叉树构建模块602包括:距离计算子模块,采用以下异或计算公式,计算目标节点对应的kad路由表中的各个节点距离目标节点的逻辑距离;d(node1,node2)=idnode1⊕idnode2;式中,node1为目标节点,idnode1为目标节点的节点标识;node2为kad路由表中的任意节点,idnode2为kad路由表中的任意节点的节点标识;d(node1,node2)为目标节点与kad路由表中的任意节点之间的逻辑距离。[0081]在本技术一实施例中,索引二叉树构建模块602还包括:树构建子模块,用于根据各个节点距离目标节点的逻辑距离,将索引二叉树的第i层的树节点按照升序或者降序的顺序依次保存距离目标节点的逻辑距离在[2i‑1,2i)范围内的节点,其中,i为正整数。[0082]在本技术一实施例中,反向路由表构建模块604包括:反向路由表生成子模块,配置于临近仓库节点,反向路由表生成子模块用于基于布隆过滤器生成反向路由表,反向路由表包括三元路由组<idnode,address,set[bfvector]>,其中,idnode为临近仓库节点的节点标识,address为临近仓库节点的网络地址,set[bfvector]为临近仓库节点包含的数据标识集合;第一传递子模块,配置于临近仓库节点,第一传递子模块用于生成数据实体的第一数据标识,将第一数据标识写入临近仓库节点的set[bfvector]中,并向上一级父节点传递第一数据标识;判断子模块,用于在父节点获得第一数据标识的情况下,判断父节点是否包含指向临近仓库节点的反向路由表;第二传递子模块,配置于父节点,第二传递子模块用于在父节点包含指向临近仓库节点的反向路由表情况下,将第一数据标识写入父节点的set[bfvector]中,并将第一数据标识传递给下一个父节点,直至到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表;第三传递子模块,配置于父节点,第三传递子模块用于在父节点不包含指向临近仓库节点的反向路由表的情况下,基于布隆过滤器生成父节点的三元路由组,将第一数据标识写入父节点的set[bfvector]中,并将第一数据标识传递给下一个父节点,直至到达索引二叉树的根节点,以使父节点和根节点构建包含有第一数据标识的反向路由表。[0083]在本技术一实施例中,正向查询模块606包括:第四传递子模块,配置于查询起始节点,第四传递子模块用于在查询起始节点在未存储有反向路由表的情况下,将查询请求按照kad路由表,依次向上一级父节点转发查询请求,其中,查询请求包括第一数据标识和查询请求的发起节点的节点标识;第二判断子模块,用于判断上一级父节点中的set[bfvector]中是否包含第一数据标识;第五传递子模块,配置于上一级父节点,第五传递子模块用于在上一级父节点中的set[bfvector]中包含第一数据标识的情况下,将第一数据标识对应的数字对象状态信息返回给查询起始节点;第六传递子模块,配置于上一级父节点,第六传递子模块用于在上一级父节点中的set[bfvector]中不包含第一数据标识的情况下,将查询请求传递给上一级父节点的下一个父节点,直至查询请求到达包含有第一数据标识的反向路由表的父节点或根节点。[0084]需要说明的是,本技术实施例的人机物融合环境下的数字对象访问系统600的具体实施方式可参见前述本技术实施例的人机物融合环境下的数字对象访问方法的具体实施方式,在此不再赘述。[0085]本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd‑rom、光学存储器等)上实施的计算机程序产品的形式。[0086]本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0087]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0088]这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0089]尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。[0090]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。[0091]以上对本发明所提供的一种人机物融合环境下的数字对象访问方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1