发明名称 一种基于对等网络的阿瑞斯索引系统的实现方法
摘要 本发明的目的是提供一种基于对等网络(阿瑞斯)索引系统及其实现方法。对于目前P2P流量成为网络负担的问题,部署P2P索引系统可以实现对内网用户hash搜索请求进行分析,通过与缓存系统的配合,向内网用户返回拥有资源的内网节点地址和缓存系统地址,从而达到将P2P流量限制在内网中,减少骨干网上带宽消耗的目的。通过memcached与mysql相结合的方式大大提高了资源检索的速度,解决了索引海量数据响应时间长的问题。同时,数据库的更新机制保证了用户检索到的信息都是最新的和可用的。
申请公布号 CN102137165A 申请公布日期 2011.07.27
申请号 CN201110106004.4 申请日期 2011.04.22
申请人 南京邮电大学 发明人 王汝传;唐鑫;李致远;韩志杰;邵星;林巧民;顾翔;魏靖凯
分类号 H04L29/08(2006.01)I;G06F17/30(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 叶连生
主权项 一种基于对等网络的阿瑞斯索引系统的实现方法,其特征在于基于对等网络的阿瑞斯索引系统包含有数据库子模块,伊珀尔epoll子模块和套接字socket通信子模块;系统启动后首先启动epoll子模块用来接收来自协议分析系统的资源请求报文,然后启动数据库子模块,根据epoll子模块接收到的哈希值hashid请求,在数据库子模块中的一种分布式的快取系统memcached服务器中进行查找,如果memcached中存在相应的hashid信息,则在memcached中提取其对应的节点列表peerlist信息,由epoll子模块返回给协议分析系统,如果在memcached中没找到相应信息,则连接数据库子模块的一个小型关系型数据库管理系统mysql数据库,根据hashid值查询数据库,如果在mysql数据库中找到了相应的hashid信息,则将hashid对应的peerlist值插入到memcached服务器中并使用epoll子模块将peerlist信息返回给协议分析系统,如果在mysql数据库中没找到相应hashid的记录,则使用套接字socket通信子模块请求缓存系统下载相应hashid的文件,缓存系统将文件下载完成以后,socket通信子模块接收缓存系统返回的节点信息和文件的hash值,数据库子模块的mysql记录相应信息,通过mysql的触发器机制将hash值信息同步到数据库子模块的memcached服务器中,当数据库中的记录被访问次数超过一定阀值的时候,使用socket通信子模块通知缓存系统更新相应hashid的peerlist列表,mysql进行相应的更新,过滤掉外网节点信息并通过触发器机制将hash值信息同步到memcached服务器中;所述的数据库子模块包含有一套分散式的快取系统memcached服务器和一个小型关系型数据库管理系统mysql数据库,mysql数据库中的数据在阿瑞斯ARES索引系统启动时拷贝到memcached服务器中,当来自协议分析系统的用户哈希hash请求到来时,先在memcached服务器中查找该hash请求对应的节点列表peerlist信息,若找到则按照造包格式将内网的peer信息返回给协议分析系统,若没找到则连接mysql数据库,根据哈希值hashid查询数据库;所述的数据库子模块在两种情况下更新mysql与memcached服务器中的信息,第一种情况是对于来自协议分析系统的hashid,没有在memcached服务器和mysql中找到其对应的peerlist信息,第二种情况是在mysql中建立一张内存表mysql数据库中的表名cinmemory,表名cinmemory仅包含hashid和数据库中用于计数的变量名count两个字段,hashid用来存放资源的hash值,count用来对资源进行访问计数,同一个hashid一旦被访问一次,则count值加一,设定阈值为15,即当count值增加到15以后便通知缓存系统更新相应的hashid和peerlist列表,同时count值清零;所述的epoll子模块的作用是与协议分析系统交互,在交互过程中,索引系统相当于服务器端,协议分析系统相当于客户端,epoll子模块通过循环来等待和处理来自协议分析系统的hash请求,具体步骤如下:步骤1).epoll子模块调用epoll_wait函数等待来自协议分析系统的hash请求;步骤2).epoll子模块调用accept函数接受协议分析系统的连接;步骤3).判断是否有空闲线程,若有,则设置线程活动标志为活动,接受客户端连接,设置服务索引,协议分析系统和索引系统连接成功,交互完毕后释放连接并设置线程活动标志位空闲;若没有空闲线程就丢弃客户端连接;所述的socket通信子模块在与缓存系统交互过程中,索引系统作为客户端,缓存系统作为服务器端。
地址 210003 江苏省南京市新模范马路66号