WebSpider的设计与实现(一)ppt课件

上传人:我*** 文档编号:148528128 上传时间:2020-10-20 格式:PPT 页数:20 大小:192KB
返回 下载 相关 举报
WebSpider的设计与实现(一)ppt课件_第1页
第1页 / 共20页
WebSpider的设计与实现(一)ppt课件_第2页
第2页 / 共20页
WebSpider的设计与实现(一)ppt课件_第3页
第3页 / 共20页
WebSpider的设计与实现(一)ppt课件_第4页
第4页 / 共20页
WebSpider的设计与实现(一)ppt课件_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《WebSpider的设计与实现(一)ppt课件》由会员分享,可在线阅读,更多相关《WebSpider的设计与实现(一)ppt课件(20页珍藏版)》请在金锄头文库上搜索。

1、Web Spider的设计与实现,(一) 基于ProActive的分布式并行 PSpider 1.0,引 言,互联网信息量非常巨大并且不断快速增长,所以提高搜索引擎的Web Spider的数据采集和更新速度有着重要意义。 在分布式并行计算方面,传统的基于MPI的技术具有程序可移植性差和配置复杂等不足。如果直接用java开发,在多线程和分布式java应用程序之间还存在很大的缝隙,而且为了在多线程应用程序上构建分布式应用程序而禁止了代码重用。编程人员增加了很大的负担。,ProAcitive,ProActive是一个由法国的INIRA的Denis Caromel教授带领的开发小组开发的适合并行、分布

2、和并发计算,在统一框架具有的移动性和安全性的java开源开发包,是ObjectWeb consortium 开源中间件的一部分。 我们实验室的研究情况,主动对象,主动对象(Active Object, AO)是ProActive计算概念的核心 。它包括一个远程对象和一个线程。这个线程控制主动对象的活动,以及和其他已经部署好的主动对象协同工作。主动对象是在标准对象的基础上增加了位置透明、活动透明和同步三种功能。主动对象的通讯默认是异步模式的。一个主动对象包括一个主要的对象、一个线程、待处理请求队列。,异步调用,ProActive对主动对象的异步调用是通过Future对象来实现的。Future对象

3、是ProActive中为方法调用时自动产生表示调用的返回结果的对象。ProActive采用一种Wait-by-necessity方式来解决内部对象的同步,其思想如下:生成Future对象后可继续往下执行,除非是直接对Future对象的引用,才会自动停下等待,直到Future对象得到具体数值。Future对象的值变为可用时,会自动得到更新。,Type Group,所谓Type Group就是具有相同类型的主动对象的群,可以向普通对象一样调用其中的群方法。Typed Group群通信是建立在ProActive异步远程方法调用基础之上的,可以实现一次调用多个AO操作。如果有返回值,结果也是一个群。,

4、节点的部署,ProActive的部署文件是一个XML类型文件,它主要由三个部分构成:componentDefinition、deployment及infrastructure。用来提供虚拟节点(VirtualNode,简称VN)、 Java虚拟机(JVM)及节点(Node)的映射关系信息。ProActive在程序运行时从部署文件获取结点部署信息。,P-Spider的系统框架,P-Spider系统框架,协调器(SpiderCoordinator),由两个部分组成,这两个部分分别被设计成Spider和SpiderWorkload两个主动对象。 Spider负责对系统进行部署和管理。 SpiderW

5、orkload负责维护URL队列。,SpiderWorker,每个SpiderWorker也被设计成是一个主动对象。 每个计算节点上分派了多个SpiderWorker主动对象。 SpiderWorker根据读取到的URL下载页面,然后解析页面的HTML,提取出其中包含的URL。将提取出来的URL链接按照预先定义的统一的格式补充完整 。 对URL进行过滤,如去除带“?”的搜索产生的URL等。最后,统计下载URL数量,报告新发现的URL。,Spider类,public class Spider public void init() proActiveDescriptor = ProActive.g

6、etProactiveDescriptor(file:+./descriptors/spider.xml); /为ProActiveDescriptor指定具体的部署文件,spider.xml为部署文件名 proActiveDescriptor.activateMappings(); /根据部署文件,启动虚拟机,创建Node ProActive.turnActive(this); / 将对象Spider变为主动对象,spiderworkgroup=(SpiderWorker)ProActiveGroup.newGroup(SpiderWorker.class.getName(),params,

7、nodes); /以数组params中的数据作为参数,生成SpiderWorker类的主动对象,主动对象个数等于params中的参数的组数。并且把这些主动对象部署到nodes中指定的各个节点上去。同时定义名为spiderworkgroup的Type Group。 IntWrapper pageCount=spiderworkgroup.startwork (); /调用spiderworkgroup中每个主动对象的startwork()方法。定义返回值为pageCount。 ProActiveGroup.waitAll(pageCount); /阻塞线程,等待群pageCount全部成员返回。

8、 ,SpiderWorker类,public class SpiderWorker public IntWrapper startwork() int count0;/统计下载的URL数 while (curUrl = dequeue(urlQueue)!=null) par-do/各个节点并行工作 page=downloadPage(formatUrl(curUrl);/下载 foundUrls=extractUrls(page);/发现页面包含的URL reportUrl(foundUrls);/报告发现的URLs count+; return new IntWrapper(count); /ProActive异步调用条件,要求返回包装类型(wrapper) ,P-Spider的部署, , , ,实验,图2 P-Spider运行时IC2D监视结果,不足和将来的工作,SpiderWorkload 的url去重算法不能支持太大的规模,对此算法进行改进。 当规模太大的时候,协调器节点容易成为系统瓶颈。对系统结构进行改进。,心得体会,当系统规模较大的时候,设计阶段详细周全的考虑十分重要。 分布式程序和单机程序不同。 及时总结 夜深人静的时候是想家的时候,也是能够集中精力工作的时候。,The End,Thank you!,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号