CN109684058A - 一种针对多租户可线性扩展的高效爬虫平台及其使用方法 - Google Patents

一种针对多租户可线性扩展的高效爬虫平台及其使用方法 Download PDF

Info

Publication number
CN109684058A
CN109684058A CN201811549420.XA CN201811549420A CN109684058A CN 109684058 A CN109684058 A CN 109684058A CN 201811549420 A CN201811549420 A CN 201811549420A CN 109684058 A CN109684058 A CN 109684058A
Authority
CN
China
Prior art keywords
crawler
task
cluster
platform
spider
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811549420.XA
Other languages
English (en)
Other versions
CN109684058B (zh
Inventor
辛如意
杨礼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Digital Peak Technology Co Ltd
Chengdu Rui Code Technology Co Ltd
Original Assignee
Hangzhou Digital Peak Technology Co Ltd
Chengdu Rui Code Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Digital Peak Technology Co Ltd, Chengdu Rui Code Technology Co Ltd filed Critical Hangzhou Digital Peak Technology Co Ltd
Priority to CN201811549420.XA priority Critical patent/CN109684058B/zh
Publication of CN109684058A publication Critical patent/CN109684058A/zh
Application granted granted Critical
Publication of CN109684058B publication Critical patent/CN109684058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种针对多租户可线性扩展的高效爬虫平台及使用方法,爬虫规则Spider通过Web API或Sdk API生成爬虫大任务Spider Jobs,将爬虫大任务Spider Jobs存入Jobs大任务队列中,从Jobs大任务队列中取出Job任务,将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入重分配数据库集群RedisDB Cluster的Tasks小任务队列中。Tasks小任务队列中有多个待执行的Task任务,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点,由爬虫集群终端Worker Cluster完成爬虫节点的工作进程。本发明突破IP资源的限制,对后台服务爬虫集群进行动态管理和监控,使用优先级任务的调度算法和Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活,同时使多租户的爬虫服务隔离。

Description

一种针对多租户可线性扩展的高效爬虫平台及其使用方法
技术领域
本发明涉及网络搜索领域技术领域,具体的说,是一种针对多租户可线性扩展的高效爬虫平台及其使用方法。
背景技术
网络爬虫是一种按照指定规则从Internet自动化地进行数据采集的一种通用技术,爬虫系统的架构,都存在着各种各样的内部或外部问题,例如带宽限制、处理速度限制、IP封锁限制、爬虫节点不足或者过剩、爬虫节点间的通信故障检测、任务调度不合理及后台数据存储扩展性弱等。针对海量的多源数据,通常采用分布式的方式进行数据的采集和存储,而对于分布式成百上千台的爬虫节点,如何高效地调度集群节点却面临着很大的挑战。
发明内容
本发明的目的在于提供一种针对多租户可线性扩展的高效爬虫方法,突破IP资源的限制,对后台服务爬虫集群进行动态管理和监控,使用优先级任务的调度算法和Accuralfailure detector累积故障检测法定时检测爬虫节点的状态是否存活,同时使多租户的爬虫服务隔离。
本发明通过下述技术方案实现:一种针对多租户可线性扩展的高效爬虫平台,包括OCP平台,所述OCP平台包括数据库集群ScyllaDB Cluster、重分配数据库集群RedisDBCluster、后端服务器集群Backend Server Cluster、监听程序Monitor、爬虫集群终端Worker Cluster。
进一步地,为了更好的实现本发明,所述数据库集群ScyllaDB Cluster用于持久化存储数据,支持分布式线性扩展;所述重分配数据库集群RedisDB Cluster用于爬虫大任务Spider Jobs和爬虫执行小任务Spider Tasks的接收与分发,支持分布式线性扩展;所述后端服务器集群Backend Server Cluster用于提供爬虫服务的接口以及OCP平台的Web展示接口,支持分布式线性扩展。
进一步地,为了更好的实现本发明,所述监听程序Monitor包括爬虫主机状态监听程序Hosts Status、爬虫集群状态监测程序Worker Status、小任务执行状态监测程序Tasks Status;所述爬虫主机状态监听程序Hosts Status根据自定义的Accural failuredetector累积故障检测法动态反应网络状况;
所述爬虫集群状态监测程序Worker Status用于监控爬虫节点进程的工作状态是否正常;所述小任务执行状态监测程序Tasks Status用于监控Task任务是否执行成功。
进一步地,为了更好的实现本发明,所述爬虫集群终端Worker Cluster用于完成爬虫进程Worker Process的工作,支持分布式线性扩展。
进一步地,为了更好的实现本发明,具体包括以下步骤:
步骤F1:启动OCP平台,爬虫节点进行数据采集;
步骤F2:新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Workers;
步骤F3:在OCP平台上为租户Client编写爬虫规则Spider;
步骤F4:爬虫规则Spider通过Web API或者Sdk API生成爬虫大任务Spider Jobs,并将爬虫大任务Spider Jobs存入数据库集群ScyllaDB Cluster中的Jobs大任务队列中;
步骤F5:启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入数据库集群ScyllaDB Cluster;同时将爬虫小任务Spider Tasks推送到重分配数据库集群RedisDB Cluster中的Tasks小任务队列中;
步骤F6:爬虫Worker调用OCP平台的接口连接重分配数据库集群RedisDBCluster,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点;同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级;
步骤F7:爬虫节点取到Task任务后开始执行,将执行结果Result写入到数据库集群ScyllaDB Cluster中;
步骤F8:爬虫主机状态监听程序Hosts Status使用Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活;;
如果不存活,则返回步骤F2;
如果存活,则返回步骤F6继续取出Task任务进行执行,直到Tasks小任务队列中的所有Task任务都成功执行完毕后,结束工作。
进一步地,为了更好的实现本发明,所述步骤F2具体包括以下步骤:
步骤F21:在OCP平台上新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Worker Process;
步骤F22:根据租户Client的配置需求数量计算需要的爬虫主机Hosts的数量;
步骤F23:爬虫主机状态监听程序Hosts Status检测可用的爬虫主机Hosts的数量,并判断可用的爬虫主机Hosts数量是否足够;
若不足,则重建爬虫主机Hosts,爬虫主机状态监听程序Hosts Status再次检测可用的爬虫主机Hosts的数量,直到可用的爬虫主机Hosts的数量足够;若足够,则进行下一步;
步骤F24:爬虫集群状态监测程序Worker Status将爬虫Worker分配到爬虫主机Hosts上,在爬虫主机Hosts上启动爬虫进程Worker Process。
进一步地,为了更好的实现本发明,所述步骤F4具体是指:
爬虫规则Spider通过Web API配置爬虫大任务Spider Jobs,且使用Sdk API调用并产生爬虫大任务Spider Jobs;将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDBCluster和重分配数据库集群RedisDB Cluster中。
进一步地,为了更好的实现本发明,所述步骤F6具体包括以下步骤:
步骤F61:OCP平台的接口从Tasks小任务队列中取出待执行的Task任务,并获取该待执行的Task任务中最早的创建时间oldest_created_at;
步骤F62:获取Task任务的当前优先级priority和创建时间created_at;
步骤F63:OCP平台根据当前优先级priority和创建时间created_at生成需要调整Task任务优先级的更新因子α;
步骤F64:判断更新因子α与预更新Task任务的控制因子β的大小;如果更新因子α小于控制因子β,则返回步骤F61;如果更新因子α大于控制因子β,则更新Task任务的当前优先级priority,使得priority=priority*(2^α);如果更新因子α小于控制因子β,则不更新该Task任务。
进一步地,为了更好的实现本发明,所述步骤F63具体包括以下步骤:
步骤F63-1:OCP平台根据当前优先级priority和创建时间created_at,获取当前时间now_at;
步骤F63-2:令更新因子α=(now_at-created_at)/(now_at-oldest_created_at)。
进一步地,为了更好的实现本发明,所述步骤F8具体包括以下步骤:
步骤F81:OCP平台的后端服务器集群Backend Server Cluster设计一个窗口大小为w的服务队列q,用于接收爬虫集群终端Worker Cluster发送的心跳,得到心跳的时间间隔t_int,将其写入服务队列q中;
步骤F82:根据时间间隔t_int,计算服务队列q中时间间隔t_int的调和平均数:
步骤F83:获取爬虫Worker的上一次报告时间t_last,令:
phi=log(t_now-t_last)/t_hm(2)
其中phi为爬虫主机状态监听程序Hosts Status生成的一个检测值,用于判断爬虫节点是否存活;
如果phi大于指定的阈值,则爬虫节点不存活;
若phi未小于指定的阈值,则爬虫节点存活。
工作原理:
爬虫规则Spider通过Web API或者Sdk API生成爬虫大任务Spider Jobs,将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDB Cluster和重分配数据库集群RedisDBCluster中的Jobs大任务队列中,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入重分配数据库集群RedisDB Cluster的Tasks小任务队列中。Tasks小任务队列中有多个待执行的Task任务,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点,由爬虫集群终端Worker Cluster完成爬虫节点的工作进程。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明突破了IP资源的限制;
(2)本发明可对后台爬虫服务集群进行动态监控和管理;
(3)本发明使用优先级任务的调度算法和Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活,同时使多租户的爬虫服务隔离。
附图说明
图1为本发明OPC平台工作及任务调度流程图;
图2为本发明OCP平台架构图;
图3为本发明OCP平台对租户Client的机器自动重建流程;
图4为本发明Task任务优先级调整算法流程图。
具体实施方式
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
本发明通过下述技术方案实现,如图1-图4所示,一种针对多租户可线性扩展的高效爬虫平台的使用方法,具体包括以下步骤:
步骤F1:启动OCP平台,爬虫节点进行数据采集;
步骤F2:新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Workers;
步骤F3:在OCP平台上为租户Client编写爬虫规则Spider;
步骤F4:爬虫规则Spider通过Web API或者Sdk API生成爬虫大任务Spider Jobs,并将爬虫大任务Spider Jobs存入数据库集群ScyllaDB Cluster中的Jobs大任务队列中;
步骤F5:启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入数据库集群ScyllaDB Cluster;同时将爬虫小任务Spider Tasks推送到重分配数据库集群RedisDB Cluster中的Tasks小任务队列中;
步骤F6:爬虫Worker调用OCP平台的接口连接重分配数据库集群RedisDBCluster,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点;同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级;
步骤F7:爬虫节点取到Task任务后开始执行,将执行结果Result写入到数据库集群ScyllaDB Cluster中;
步骤F8:爬虫主机状态监听程序Hosts Status使用Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活;如果不存活,则返回步骤F2;如果存活,则返回步骤F6继续取出Task任务进行执行,直到Tasks小任务队列中的所有Task任务都成功执行完毕后,结束工作。
需要说明的是,通过上述改进,所述OCP平台包括后端服务器集群Backend ServerCluster、数据库集群ScyllaDB Cluster、重分配数据库集群RedisDB Cluster、爬虫大任务Spider Jobs、监听程序Monitor、爬虫集群终端Worker Cluster六大模块。其中后端服务器集群Backend Server Cluste提供爬虫服务的各种接口以及平台的Web展示接口;数据库集群ScyllaDB Cluster用于持久化存储数据;重分配数据库集群RedisDB Cluster用于爬虫任务的接收与分发;根据租户Client的需求,通过Web API或者Sdk API生成待执行的爬虫大任务Spider Jobs,OPC平台根据Job大任务展开生成Task小任务,Task小任务传递给爬虫节点进行爬取;监听程序Monitor在OCP平台添加租户Client后,爬虫节点自动构建与部署;爬虫集群终端Worker Cluster真正完成爬虫节点的工作进程。
爬虫规则Spider通过Web API或者Sdk API生成爬虫大任务Spider Jobs,将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDB Cluster和重分配数据库集群RedisDBCluster中的Jobs大任务队列中,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入重分配数据库集群RedisDB Cluster的Tasks小任务队列中。Tasks小任务队列中有多个待执行的Task任务,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点,由爬虫集群终端Worker Cluster完成爬虫节点的工作进程。
从Tasks小任务队列中提取Task任务执行时,同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级。爬虫主机状态监听程序Hosts Status使用Accuralfailure detector累积故障检测法定时检测爬虫节点的状态是否为存活。
本实施例的其他部分与上述实施例相同,故不再赘述。
实施例2:
本实施例在上述实施例的基础上做进一步优化,如图2所示,所述步骤F2具体包括以下步骤:
步骤F21:在OCP平台上新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Worker Process;
步骤F22:根据租户Client的配置需求数量计算需要的爬虫主机Hosts的数量;
步骤F23:爬虫主机状态监听程序Hosts Status检测可用的爬虫主机Hosts的数量,并判断可用的爬虫主机Hosts数量是否足够;
若不足,则重建爬虫主机Hosts,爬虫主机状态监听程序Hosts Status再次检测可用的爬虫主机Hosts的数量,直到可用的爬虫主机Hosts的数量足够;若足够,则进行下一步;
步骤F24:爬虫集群状态监测程序Worker Status将爬虫Worker分配到爬虫主机Hosts上,在爬虫主机Hosts上启动爬虫进程Worker Process。
需要说明的是,通过上述改进,如图3所示,本实施例为OCP平台对新来租户Client的机器自动重建流程。
本实施例的其他部分与上述实施例相同,故不再赘述。
实施例3:
本实施例在上述实施例的基础上做进一步优化,如图1-图2所示,所述步骤F4具体是指:
爬虫规则Spider通过Web API配置爬虫大任务Spider Jobs,且使用Sdk API调用并产生爬虫大任务Spider Jobs;将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDBCluster和重分配数据库集群RedisDB Cluster中。
需要说明的是,通过上述改进,将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDB Cluster和重分配数据库集群RedisDB Cluster中的Jobs大任务队列中。
启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入数据库集群ScyllaDB Cluster;同时将爬虫小任务Spider Tasks推送到重分配数据库集群RedisDBCluster中的Tasks小任务队列中,等待OCP平台提取执行Tasks小任务队列中的Task任务。
本实施例的其他部分与上述实施例相同,故不再赘述。
实施例4:
本实施例在上述实施例的基础上做进一步优化,如图4所示,所述步骤F6具体包括以下步骤:
步骤F61:OCP平台的接口从Tasks小任务队列中取出待执行的Task任务,并获取该待执行的Task任务中最早的创建时间oldest_created_at;
步骤F62:获取Task任务的当前优先级priority和创建时间created_at;
步骤F63:OCP平台根据当前优先级priority和创建时间created_at生成需要调整Task任务优先级的更新因子α;
所述步骤F63具体包括以下步骤:
步骤F63-1:OCP平台根据当前优先级priority和创建时间created_at,获取当前时间now_at;
步骤F63-2:令更新因子α=(now_at-created_at)/(now_at-oldest_created_at);
步骤F64:判断更新因子α与预更新Task任务的控制因子β的大小;如果更新因子α小于控制因子β,则返回步骤F61;如果更新因子α大于控制因子β,则更新Task任务的当前优先级priority,使得priority=priority*(2^α);如果更新因子α小于控制因子β,则不更新该Task任务。
需要说明的是,通过上述改进,本实施例为爬虫任务优先级的调整算法,Tasks小任务队列中有多个Task任务,OCP平台的接口从Tasks小任务队列中依次取出待执行的Task任务,还未成功执行的Task任务由本实施例的算法对其进行优先级调整。
其中created_at为需调整优先级的Task任务的创建时间,priority为该Task任务的当前优先级,now_at为当前时间,根据当前优先级priority、创建时间created_at以及当前时间now_at生成需要调整Task任务优先级的更新因子α:
α=(now_at-created_at)/(now_at-oldest_created_at)
再判断更新因子α与预更新Task任务的控制因子β的大小,控制因子β在[0,1]之间,用于控制更新调整Task任务的比例。如果更新因子α大于控制因子β,则更新Task任务的当前优先级priority,使得更新后的优先级priority=priority*(2^α);如果更新因子α小于控制因子β,则不更新该Task任务。
本实施例的其他部分与上述实施例相同,故不再赘述。
实施例5:
本实施例在上述实施例的基础上做进一步优化,所述步骤F8具体包括以下步骤:
步骤F81:OCP平台的后端服务器集群Backend Server Cluster设计一个窗口大小为w的服务队列q,用于接收爬虫集群终端Worker Cluster发送的心跳,得到心跳的时间间隔t_int,将其写入服务队列q中;
步骤F82:根据时间间隔t_int,计算服务队列q中时间间隔t_int的调和平均数:
步骤F83:获取爬虫Worker的上一次报告时间t_last,令:
phi=log(t_now-t_last)/t_hm(2)
其中phi为爬虫主机状态监听程序Hosts Status生成的一个检测值,用于判断爬虫节点是否存活;如果phi大于指定的阈值,则爬虫节点不存活;若phi未小于指定的阈值,则爬虫节点存活。
需要说明的是,通过上述改进,本实施例为爬虫节点状态动态感知监测的算法,具体来说,为了更好的满足状态检测需求,减小计算量,提高效率,爬虫主机状态监听程序Hosts Status使用Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活。
本实施例的其他部分与上述实施例相同,故不再赘述。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

Claims (10)

1.一种针对多租户可线性扩展的高效爬虫平台,其特征在于:包括OCP平台,所述OCP平台包括数据库集群ScyllaDB Cluster、重分配数据库集群RedisDB Cluster、后端服务器集群Backend Server Cluster、监听程序Monitor、爬虫集群终端Worker Cluster。
2.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述数据库集群ScyllaDB Cluster用于持久化存储数据,支持分布式线性扩展;所述重分配数据库集群RedisDB Cluster用于爬虫大任务Spider Jobs和爬虫执行小任务SpiderTasks的接收与分发,支持分布式线性扩展;所述后端服务器集群Backend Server Cluster用于提供爬虫服务的接口以及OCP平台的Web展示接口,支持分布式线性扩展。
3.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述监听程序Monitor包括爬虫主机状态监听程序Hosts Status、爬虫集群状态监测程序Worker Status、小任务执行状态监测程序Tasks Status;所述爬虫主机状态监听程序Hosts Status根据自定义的Accural failure detector累积故障检测法动态反应网络状况;
所述爬虫集群状态监测程序Worker Status用于监控爬虫节点进程的工作状态是否正常;所述小任务执行状态监测程序Tasks Status用于监控Task任务是否执行成功。
4.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述爬虫集群终端Worker Cluster用于完成爬虫进程Worker Process的工作,支持分布式线性扩展。
5.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:具体包括以下步骤:
步骤F1:启动OCP平台,爬虫节点进行数据采集;
步骤F2:新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Workers;
步骤F3:在OCP平台上为租户Client编写爬虫规则Spider;
步骤F4:爬虫规则Spider通过Web API或者Sdk API生成爬虫大任务Spider Jobs,并将爬虫大任务Spider Jobs存入数据库集群ScyllaDB Cluster中的Jobs大任务队列中;
步骤F5:启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务Spider Tasks,再将爬虫小任务Spider Tasks存入数据库集群ScyllaDB Cluster;同时将爬虫小任务Spider Tasks推送到重分配数据库集群RedisDB Cluster中的Tasks小任务队列中;
步骤F6:爬虫Worker调用OCP平台的接口连接重分配数据库集群RedisDB Cluster,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点;同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级;
步骤F7:爬虫节点取到Task任务后开始执行,将执行结果Result写入到数据库集群ScyllaDB Cluster中;
步骤F8:爬虫主机状态监听程序Hosts Status使用Accural failure detector累积故障检测法定时检测爬虫节点的状态是否存活;
如果不存活,则返回步骤F2;
如果存活,则返回步骤F6继续取出Task任务进行执行,直到Tasks小任务队列中的所有Task任务都成功执行完毕后,结束工作。
6.根据权利要求5所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:所述步骤F2具体包括以下步骤:
步骤F21:在OCP平台上新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Worker Process;
步骤F22:根据租户Client的配置需求数量计算需要的爬虫主机Hosts的数量;
步骤F23:爬虫主机状态监听程序Hosts Status检测可用的爬虫主机Hosts的数量,并判断可用的爬虫主机Hosts数量是否足够;
若不足,则重建爬虫主机Hosts,爬虫主机状态监听程序Hosts Status再次检测可用的爬虫主机Hosts的数量,直到可用的爬虫主机Hosts的数量足够;若足够,则进行下一步;
步骤F24:爬虫集群状态监测程序Worker Status将爬虫Worker分配到爬虫主机Hosts上,在爬虫主机Hosts上启动爬虫进程Worker Process。
7.根据权利要求6所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:所述步骤F4具体是指:
爬虫规则Spider通过Web API配置爬虫大任务Spider Jobs,且使用Sdk API调用并产生爬虫大任务Spider Jobs;将爬虫大任务Spider Jobs分别存入数据库集群ScyllaDBCluster和重分配数据库集群RedisDB Cluster中。
8.根据权利要求7所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:所述步骤F6具体包括以下步骤:
步骤F61:OCP平台的接口从Tasks小任务队列中取出待执行的Task任务,并获取该待执行的Task任务中最早的创建时间oldest_created_at;
步骤F62:获取Task任务的当前优先级priority和创建时间created_at;
步骤F63:OCP平台根据当前优先级priority和创建时间created_at生成需要调整Task任务优先级的更新因子α;
步骤F64:判断更新因子α与预更新Task任务的控制因子β的大小;如果更新因子α小于控制因子β,则返回步骤F61;如果更新因子α大于控制因子β,则更新Task任务的当前优先级priority,使得priority=priority*(2^α);如果更新因子α小于控制因子β,则不更新该Task任务。
9.根据权利要求8所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:所述步骤F63具体包括以下步骤:
步骤F63-1:OCP平台根据当前优先级priority和创建时间created_at,获取当前时间now_at;
步骤F63-2:令更新因子α=(now_at-created_at)/(now_at-oldest_created_at)。
10.根据权利要求9所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:所述步骤F8具体包括以下步骤:
步骤F81:OCP平台的后端服务器集群Backend Server Cluster设计一个窗口大小为w的服务队列q,用于接收爬虫集群终端Worker Cluster发送的心跳,得到心跳的时间间隔t_int,将其写入服务队列q中;
步骤F82:根据时间间隔t_int,计算服务队列q中时间间隔t_int的调和平均数:
步骤F83:获取爬虫Worker的上一次报告时间t_last,令:
phi=log(t_now-t_last)/t_hm (2)
其中phi为爬虫主机状态监听程序Hosts Status生成的一个检测值,用于判断爬虫节点是否存活;
如果phi大于指定的阈值,则爬虫节点不存活;
若phi未小于指定的阈值,则爬虫节点存活。
CN201811549420.XA 2018-12-18 2018-12-18 一种针对多租户可线性扩展的高效爬虫平台及其使用方法 Active CN109684058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811549420.XA CN109684058B (zh) 2018-12-18 2018-12-18 一种针对多租户可线性扩展的高效爬虫平台及其使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811549420.XA CN109684058B (zh) 2018-12-18 2018-12-18 一种针对多租户可线性扩展的高效爬虫平台及其使用方法

Publications (2)

Publication Number Publication Date
CN109684058A true CN109684058A (zh) 2019-04-26
CN109684058B CN109684058B (zh) 2022-11-04

Family

ID=66186787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811549420.XA Active CN109684058B (zh) 2018-12-18 2018-12-18 一种针对多租户可线性扩展的高效爬虫平台及其使用方法

Country Status (1)

Country Link
CN (1) CN109684058B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673942A (zh) * 2019-09-29 2020-01-10 北京浪潮数据技术有限公司 一种云平台的异步进程结束方法、装置及云平台服务器
CN111026947A (zh) * 2019-12-18 2020-04-17 烽火通信科技股份有限公司 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774782B1 (en) * 2003-12-18 2010-08-10 Google Inc. Limiting requests by web crawlers to a web host
CN103491165A (zh) * 2013-09-22 2014-01-01 复旦大学 自动检测屏蔽的通用分布式爬虫系统
WO2017113687A1 (zh) * 2015-12-28 2017-07-06 乐视控股(北京)有限公司 爬虫系统及方法
CN107071009A (zh) * 2017-03-28 2017-08-18 江苏飞搏软件股份有限公司 一种负载均衡的分布式大数据爬虫系统
CN107193960A (zh) * 2017-05-24 2017-09-22 南京大学 一种分布式爬虫系统及周期性增量抓取方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774782B1 (en) * 2003-12-18 2010-08-10 Google Inc. Limiting requests by web crawlers to a web host
CN103491165A (zh) * 2013-09-22 2014-01-01 复旦大学 自动检测屏蔽的通用分布式爬虫系统
WO2017113687A1 (zh) * 2015-12-28 2017-07-06 乐视控股(北京)有限公司 爬虫系统及方法
CN107071009A (zh) * 2017-03-28 2017-08-18 江苏飞搏软件股份有限公司 一种负载均衡的分布式大数据爬虫系统
CN107193960A (zh) * 2017-05-24 2017-09-22 南京大学 一种分布式爬虫系统及周期性增量抓取方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673942A (zh) * 2019-09-29 2020-01-10 北京浪潮数据技术有限公司 一种云平台的异步进程结束方法、装置及云平台服务器
CN110673942B (zh) * 2019-09-29 2022-06-17 北京浪潮数据技术有限公司 一种云平台的异步进程结束方法、装置及云平台服务器
CN111026947A (zh) * 2019-12-18 2020-04-17 烽火通信科技股份有限公司 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法
CN111026947B (zh) * 2019-12-18 2022-08-12 烽火通信科技股份有限公司 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法

Also Published As

Publication number Publication date
CN109684058B (zh) 2022-11-04

Similar Documents

Publication Publication Date Title
CN106126346B (zh) 一种大规模分布式数据采集系统及方法
US11119911B2 (en) Garbage collection method and device
CN102332125B (zh) 基于后继任务的工作流挖掘方法
CN104618693B (zh) 一种基于云计算的监控视频在线处理任务管理方法及系统
CN105045832B (zh) 一种数据采集方法及装置
CN106936620B (zh) 一种告警事件的处理方法和处理装置
CN103645909A (zh) 定时任务的处理方法及装置
CN113900810A (zh) 分布式图处理方法、系统及存储介质
CN109857527A (zh) 一种分布式任务调度方法、系统、分布式装置和Redis数据库
CN109684058A (zh) 一种针对多租户可线性扩展的高效爬虫平台及其使用方法
CN106789141A (zh) 一种网关设备故障处理方法及装置
CN105224404B (zh) 基于集群技术的继电保护定值整定计算方法
CN102281331A (zh) 一种用于工业现场的远程监控系统及其监控方法
CN104270272B (zh) 一种基于移动Agent的电能质量监测数据管理方案
CN106559278B (zh) 数据处理状态监控方法和装置
CN113342826A (zh) 一种对不同数据采集引擎的数据操作进行统一管理的方法、存储介质及系统
CN111064586B (zh) 一种分布式并行计费方法
CN104283958B (zh) 一种系统任务调度方法
CN109039781B (zh) 一种网络设备故障诊断方法、执行节点、服务器和系统
CN105357060A (zh) 一种获取网络设备性能数据的方法、装置和系统
CN105740054A (zh) 一种虚拟机管理方法及装置
CN112686004B (zh) 基于区块链的单份文档多接口编辑方法
CN112613626B (zh) 备调系统运行状态的监测方法、装置和计算机设备
CN107122246A (zh) 智能数值模拟作业管理与反馈方法
CN113393087A (zh) 一种继电保护故障计算任务的并发处理方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant