一种基于志愿者计算的多租户专业云爬虫的制作方法_2

文档序号:9687549阅读:来源:国知局
037] 首先计算该用户可获得的共享值:
[003引
[0039] 根据当前资源池中的剩余资源数,调整该共享值:
[0040] 获取资源数= min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小 共享量},最小资源保证量}
[0041 ]资源剩余量=资源剩余量-获得资源数
[0042] 如果此轮循环中,资源剩余值未变,即没有资源分给任何作业,则将剩余的资源共 享给资源池中所有用户,即,执行b) C)并结束算法;
[0043] 将资源池中的用户按权重和缺额排序;
[0044] 按顺序依次计算每个用户的最小资源共享量 [004引首先计算该作业可获得的共享值:
[0046]
[0047] 根据当前资源池中的剩余资源数,调整该共享值:
[0048] 获取资源数= min{min{剩余资源数,用户尚需资源数与正运行资源数之和-最小 共享量},最小资源保证量}
[0049] 资源剩余量=资源剩余量-用户获得资源数
[0050] 需要注意的是,当执行完b)、c)后,资源剩余量可能仍大于0,运时候会将剩余的资 源剩余量共享给其他用户资源池;
[0051] (5)更新公平共享量
[0052] 具体步骤如下所示:
[0053] 初始化:当前所有用户的公平共享量置零;资源剩余量为系统中空闲的爬虫采集 客户端资源;
[0054] 遍历系统活动用户集合中的所有用户,计算每个用户的公平共享量:
[0055] 如果作业的最小共享量大于公平共享量,则将最小共享量作为公平共享量赋值给 用户,同时将此用户从活动用户集合中删除;
[0056] 将剩下的爬虫采集客户端资源按权重比例赋给活动用户集合中剩余的用户:
[0057]
[0058] 将公平共享量赋值给用户;
[0059] (6)更新缺额
[0060] 用户资源缺额=用户资源缺额+(公平共享量-活动用户数)X两次信息更新的时 间间隔;
[0061] (7)资源分配
[0062] 当系统中产生一个空闲爬虫采集客户端资源时,将此资源分配给缺额最大的用 户。
[0063] 本发明的有益效果:本发明针对现有的爬虫解决方案遇到诸如资源利用率低、开 发爬虫系统成本高及效率低等问题,提出了新的一种基于志愿者计算的多租户专业云爬虫 解决方案,本发明的优点包括:
[0064] 1)利用志愿者计算方式提高用户闲置资源的利用率;
[0065] 通过志愿者计算方式把用户在互联网上闲散的大规模计算资源聚集并作为采集 客户端利用起来,从而为构建多租户专业云爬虫对采集客户端计算资源需求较多的难题提 供了一种行之有效的解决途径。对于多租户专业云爬虫平台,志愿者计算意味着近乎免费 且无限的采集资源;而就志愿者而言,他们可W得到一个免费或者很便宜的互联网信息采 集服务。
[0066] 2)利用云服务的形式向用户提供互联网信息采集服务,不仅提高资源利用率,还 节约了用户开发爬虫系统的成本;
[0067] 本发明把数据处理和数据爬取分离,数据处理端W专有云的形式部署在化doop, Spark分布式计算框架之上,具备准实时数据处理、可扩展和可维护等特性;数据采集采用 志愿者共享计算资源模式;并用SAAS(软件即服务)的方式向用户提供互联网数据采集服 务,用户只要提供爬取的目标站点及需要返回的数据格式等,多租户专业云爬虫就能把用 户对应的数据爬取回来;
[0068] 3)基于用户等级的分布式公平调度器,不仅考虑了资源的公平共享,还考虑了用 户信息等因素,提高了资源的利用率及用户采集任务的响应时间;
[0069] 本发明提出的分布式调度器,利用两级资源池的方式来管理资源,具有支持多用 户多任务、资源公平共享(公平共享量由用户等级决定)、保证最小共享量、支持时间片抢 占、响应及时等特性;有效的为用户按需提供低成本、高可靠性、规模可伸缩的数据采集资 源及服务。
【附图说明】
[0070] 下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0071] 图1是本发明实施例整体架构图;
[0072] 图2是本发明实施例中数据爬取流程图;
[0073] 图3是本发明实施例中调度信息收集流程图;
[0074] 图4是本发明实施例中调度资源管理流程图。
【具体实施方式】
[0075] W下结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于运些实 施例。
[0076] 本发明的爬虫平台采用基于志愿者计算的分布式系统结构,由爬虫服务端、爬虫 采集客户端和用户管理客户端组成,整个系统相互配合协同工作,其整体架构见附图1。即 本发明由W下几个部分组成:
[0077] 1、用户管理客户端
[0078] 用户管理客户端是用户管理的口户,向用户提供W邸接口及REST API服务,用户通 过管理口户,定义爬虫任务,提交爬虫任务,设定爬虫参数,查看爬虫运行情况及获取爬取 回来的数据。用户向平台提交一个采集任务,到任务调度运行并返回结果如附图2所示,其 步骤为:
[0079] 1)首先用户A通过管理口户提交一个爬虫任务1,管理口户会将爬虫任务1相关信 息存储到Mysql数据库表,并将爬虫任务1的种子U化列表和其对应的状态信息存储到化ase 调度表;
[0080] 2)分布式的读取化ase调度表里的抓L记录和其状态信息,判断读取的抓L记录是 否要处理,如果不满足设定的要求,本次则不处理,反之跳到3);
[0081] 3)判断TOL记录对应网页内容是否存在及已爬取时间是否符合要求,如果符合要 求,贝峭巧lj4),反之则跳到5);
[0082] 4)根据TOL记录去化ase数据存储表获取对应TOL记录的站点数据,用当前用户信 息、爬虫任务信息和站点数据生成一条用户A爬虫任务1的记录数据,进入数据处理队列;等 待6)处理。
[0083] 5)根据用户信息和爬虫采集客户端负载情况等信息,调度分发对应U化记录到某 一爬虫采集客户端去采集,并返回采集来的站点数据,并根据用户信息、爬虫任务信息和站 点数据生成一条记录数据,进入数据处理队列,等待6)处理
[0084] 6)读取数据队列里的记录,并用对应规则解析网页内容、提取外链及数据抽取器 的学习,生成对应记录的索引并把原始数据及解析的数据存储到化ase数据表里。
[00化]7)更新化ase调度表对应U化记录的状态信息。
[0086] 8)用户可W通过口户站点或REST API服务获取爬取回来的数据;
[0087] 2、爬虫采集客户端
[0088] 爬虫采集客户端是由连接在互联网上的各种相对空闲主机组成,最主要的功能就 是采集互联网站点数据,爬虫采集客户端一般可W采集两种类型的数据即静态网页数据和 动态网页数据(DeepWeb);静态网页数据相对来说比较容易采集,而动态网页数据一般比较 难采集,因此运两类数据采集分别用不同的采集引擎实现,从而提高采集效率。静态数据采 集引擎用Apache下面的化化Client实现,动态网页数据一般是通过化vaScript生成的,因 此动态网页数据采集引擎必须有能够解析执行化vaScript脚本的功能,目前采用化mWnit 实现。爬虫采集客户端除了采集数据,还需收集运行主机的网络带宽速率的信息(当前阶段 没有考虑CPU、内存等其他负载信息),用于爬虫任务的调度管理。
[0089] 3、爬虫服务端
[0090] 爬虫服务端是整个平台的中枢,由分布式调度和分布式处理组成,分别实现爬虫 任务的调度和爬取回来的数据处理。将爬虫调度和数据处理部分分离,通过分布式数据存 储及分布式消息中间件来进行连接,增强了平台的可扩展性和可维护性。
[0091] 1)分布式调度;
[0092] 分布式调度是整个平台的控制中屯、,主要实现爬虫任务的调度、爬虫采集客户端 资源的管理
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1