【技术实现步骤摘要】
一种支持容错的分布式查询方法及装置
本专利技术涉及区块链
,特别是涉及一种支持容错的分布式查询方法以及一种支持容错的分布式查询装置。
技术介绍
由于不可篡改性、匿名性和去中心化等特性,区块链技术得到了工业界和学术界的广泛关注,催生了大量区块链应用,包括比特币、以太坊等。传统区块链采用链式结构账本,通过全网共识机制维护全局统一的最长链,交易吞吐量低、交易费用高且不可扩展,使其不能应用于对实时性要求较高和高吞吐量的场景中,如银行和交易所等。针对这一问题,近期的区块链研究和实践中出现了一种新型的基于图结构的分布式账本,与链式账本不同,基于图结构的账本通常采用非工作量证明机制PoW的共识算法,在联盟链的应用场景中,为了进一步提高交易吞吐量,并没有采用数据全网同步的方式,而采用了随机化存储的策略,交易被随机存放到网络中的若干节点上,且共识算法基于所有相关节点的检索结果。这种基于图结构随机存储的分布式账本对交易的查询提出了巨大挑战,即如何要在网络中节点的在线状态和节点之间的链路连接状态动态变化的环境下,检索出所有节点的相关 ...
【技术保护点】
1.一种支持容错的分布式查询方法,其特征在于,所述方法应用于对等计算P2P网络系统中,所述P2P网络系统包括多个节点,所述节点中包括积极列表Active List和消极列表Passive List,所述Active List分为活跃列表Eager List和惰性列表Lazy List;其中,所述Active List中的节点数量为固定值,所述Eager List中存放的是在P2P网络系统上和该节点建立TCP连接的节点,用于传递消息;所述Lazy List中存放的是所述Active List除Eager List中的剩余节点,用于传递消息的摘要或消息的ID,用于P2P网络系统 ...
【技术特征摘要】
1.一种支持容错的分布式查询方法,其特征在于,所述方法应用于对等计算P2P网络系统中,所述P2P网络系统包括多个节点,所述节点中包括积极列表ActiveList和消极列表PassiveList,所述ActiveList分为活跃列表EagerList和惰性列表LazyList;其中,所述ActiveList中的节点数量为固定值,所述EagerList中存放的是在P2P网络系统上和该节点建立TCP连接的节点,用于传递消息;所述LazyList中存放的是所述ActiveList除EagerList中的剩余节点,用于传递消息的摘要或消息的ID,用于P2P网络系统的优化和容错;所述PassiveList中存放的是随机节点,用于替换ActiveList中断开连接的节点,保证节点和所述P2P网络系统中网络的连接;所述方法包括:
在所述P2P网络系统中,第一节点获得其父节点广播的查询请求,所述第一节点为所述P2P网络系统中的任一节点;
所述第一节点通过树形维护程序将所述查询请求广播给自身的孩子节点;所述孩子节点用于利用所述P2P网络系统的树形结构,将所述查询请求再广播给自身相应的孩子节点,自身相应的孩子节点重复上述广播步骤,直至将所述查询请求广播至该P2P网络系统上的所有节点;每个节点在收到查询的请求后,检索本地数据库,并等待其孩子节点的结果返回,当收集完所有的孩子节点返回的数据后,做结算和去重操作,并将结果返回给其父节点;经过层层反馈,当接收到用户查询请求的根节点收到所有孩子节点的返回结果时,做最终的结算和去重操作,生成最终查询结果,并将最终查询结果返回给该用户;
针对所述树形维护程序,所述方法包括:
当构成所述P2P网络系统的边的第一节点和第二节点之间的连接断开时,所述第一节点将所述第二节点从自身的EagerList中移除;
所述第一节点依次向其PassiveList中的第一目标节点发起查询请求;所述查询请求包括检查第一目标节点是否在线的指令和查询第一目标节点的LazyList的大小的指令;
所述第一节点接收各个第一目标节点针对查询请求返回的查询结果,根据所述查询结果中的延迟和各个第一目标节点的LazyList的大小,从所述第一目标节点中选择一个LazyList的大小最小且延迟最低的第二目标节点;
所述第一节点将第二目标节点加入自身的LazyList中,并利用LazyList中的节点作为替补边来对所述P2P网络系统进行修复。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一节点中的PassiveList中的在线节点数量小于预设阈值时,所述第一节点生成一个固定的跳数TTL;
所述第一节点将带有该TTL的消息发送给其EagerList中的一个随机的第三目标节点;所述第三目标节点收到该消息后,把自己最新的PassiveList中的节点ID发送给第一节点,并将所述TTL减1,再随机发送给所述第三目标节点EagerList中的随机节点,重复上述步骤,直到所述TTL为0;
所述第一节点将所有收到的节点ID做汇总,随机从收到的所有节点中选M个,将这个M个节点加入到PassiveList中;其中,所述M=PassiveList中可存储的最大节点数减去PassiveList中当前存储的节点数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一节点将所述第二节点从自身的EagerList中移除后,将第二节点加入到自身的PassiveList中。
4.根据权利要求1所述的方法,其特征在于,在所述第一节点加入所述P2P网络系统之前,所述方法包括:
所述第一节点获取所述P2P网络系统的部分拓扑信息,应用所述拓扑信息初始化自身的EagerList、LazyList和PassiveList;
当完成EagerList、LazyList和PassiveList的初始化后,所述第一节点与其EagerList中的节点分别建立TCP长连接,用来构成所述P2P网络系统的边;
所述第一节点利用LazyList中的节点作为替补边来对所述P2P网络系统进行修复,仅留下一个传输速度相对较快且跳数最少的边,剩下的节点被最终移除到LazyList中。
5.根据权利要求4所述的方法,其特征在于,所述拓扑信息包括随机分配的节点NodeID;所述第一节点获取所述P2P网络系统的部分拓扑信息,应用所述拓扑信息初始化自身的EagerList、LazyList和PassiveList的步骤包括:
所述第一节点利用所述NodeID和KAD算法向P2P网络系统的网络发起请求,查找距离该NodeID最近的邻居节点,所述邻居节点包括所述第一节点的父节点和孩子节点;
所述第一节点从所述邻居节点中选择部分节点来初始化自身的EagerList、LazyList和PassiveList。...
【专利技术属性】
技术研发人员:蔡华谦,刘佳皓,黄罡,景翔,
申请(专利权)人:北京大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。