[发明专利]一种可扩展的分布式查询方法及装置有效
| 申请号: | 201911033551.7 | 申请日: | 2019-10-28 |
| 公开(公告)号: | CN110866046B | 公开(公告)日: | 2021-04-27 |
| 发明(设计)人: | 景翔;刘佳皓;黄罡;蔡华谦 | 申请(专利权)人: | 北京大学 |
| 主分类号: | G06F16/2458 | 分类号: | G06F16/2458;H04L29/08 |
| 代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 莎日娜 |
| 地址: | 100871*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 扩展 分布式 查询 方法 装置 | ||
1.一种可扩展的分布式查询方法,其特征在于,所述方法应用于对等计算P2P网络系统中,所述P2P网络系统包括多个节点,所述节点中包括积极列表Active List,所述ActiveList分为活跃列表Eager List和惰性列表Lazy List;其中,所述节点的Eager List中存放的是在P2P网络系统上和该节点建立TCP连接的节点,用于传递消息;所述节点的Lazy List是所述Active List除Eager List中的剩余节点,用于传递消息的摘要或消息的ID,用于P2P网络系统的优化和容错;所述方法包括:
在所述P2P网络系统中,第一节点获得其父节点广播的查询请求,所述第一节点为所述P2P网络系统中的任一节点;
所述第一节点通过树形维护程序将所述查询请求广播给自身的孩子节点;所述孩子节点用于利用所述P2P网络系统的树形结构,将所述查询请求再广播给自身相应的孩子节点,自身相应的孩子节点重复上述广播步骤,直至将所述查询请求广播至该P2P网络系统上的所有节点;每个节点在收到查询的请求后,检索本地数据库,并等待其孩子节点的结果返回,当收集完所有的孩子节点返回的数据后,做结算和去重操作,并将结果返回给其父节点;经过层层反馈,当接收到用户查询请求的根节点收到所有孩子节点的返回结果时,做最终的结算和去重操作,生成最终查询结果,并将最终查询结果返回给该用户;
针对所述树形维护程序,所述方法包括:
所述第一节点在将所述查询请求广播给自身的孩子节点时,向自身的孩子节点中的第二节点发送IHAVE消息,所述IHAVE消息中包括消息ID;
所述第二节点检查自己是否已收到与所述消息ID对应的用于传递所述查询请求的NORMAL消息;
如果所述第二节点在超时时间内未收到与所述消息ID对应的NORMAL消息,则执行以下步骤:
所述第二节点生成用于修复所述P2P网络系统的GRAFT消息;所述GRAFT消息包括所述消息ID和接收所述IHAVE消息的请求;
所述第二节点将所述GRAFT消息发送给所述第一节点,并将所述第一节点从自身的Lazy List中移动到Eager List中,使所述第一节点对所述P2P网络系统进行修复;
如果所述第二节点在超时时间内已收到与所述消息ID对应的NORMAL消息,则执行以下步骤:
所述第二节点计算IHAVE消息的接收跳数与NORMAL消息的接收跳数差;
所述第二节点判断所述跳数差是否超过跳数阈值;
若所述跳数差超过跳数阈值,所述第二节点对所述P2P网络系统进行修复。
2.根据权利要求1所述的方法,其特征在于,所述P2P网络系统包括BroadcastTree协议、MsgTransferProt协议和PartialView协议,所述BroadcastTree协议负责P2P网络系统的维护工作;所述MsgTransferProt协议负责查询消息的广播和查询结果的验证传递;所述PartialView协议负责管理每个节点的邻居节点,所述邻居节点包括父节点和孩子节点;其中,所述Active List位于P2P网络系统的PartialView协议中,所述PartialView协议还包括消极列表Passive List,所述Passive List中存放的是随机节点,用于替换Active List中断开连接的节点,保证节点和所述P2P网络系统的连接。
3.根据权利要求1或2所述的方法,其特征在于,每个节点中包括第一Map缓存、第二Map缓存以及第三Map缓存,第一Map缓存是ReceivedMsgMap,存放的是消息ID和消息的映射,用来缓存当前已经收到的消息,以便于响应其他尚未收到该消息的节点对该消息的请求;
所述第二Map缓存是NotReceivedMsgMap,缓存的是消息ID和发送该消息的节点的映射;当达到指定的时长时,仍未收到Eager List中的节点发送的该消息,触发Timer定时器,用于向发送该消息的节点请求该消息,并修复所述P2P网络系统;
所述第三Map缓存是TimingCacheMsgMap,负责缓存当前收到的消息,如果在指定的时间范围内收到Lazy List中的节点发送的消息,比较两者的跳数来决定是否优化所述P2P网络系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911033551.7/1.html,转载请声明来源钻瓜专利网。





