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

技术编号:20992280 阅读:43 留言:0更新日期:2019-04-29 22:20
本发明专利技术公开了一种针对多租户可线性扩展的高效爬虫平台及使用方法,爬虫规则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累积故障检测法定时检测爬虫节点的状态是否存活,同时使多租户的爬虫服务隔离。

An Efficient Crawler Platform with Linear Expansibility for Multi-tenant and Its Application Method

The invention discloses an efficient crawler platform for multi-tenant linear scalability and its usage method. The crawler rule Spider generates Spider Jobs with large crawler tasks through Web API or Sdk API, stores Spider Jobs with large crawler tasks into Jobs large task queue, extracts Job tasks from Jobs large task queue, expands Job tasks into small crawler tasks Spider Tasks to be performed, and then crawls. Spider Tasks are stored in Tasks small task queue of RedisDB Cluster, a reallocation database cluster. There are many Task tasks to be performed in Tasks small task queue. The interface of OCP platform takes any Task task from Tasks small task queue and returns the Task task to the crawler node. The worker Cluster of the crawler cluster terminal completes the work process of the crawler node. The invention breaks through the limitation of IP resources, dynamically manages and monitors the background service crawler cluster, uses priority task scheduling algorithm and Accuracy failure detector cumulative fault detection method to timely detect whether the status of the crawler node survives, and isolates the multi-tenant crawler service.

【技术实现步骤摘要】
一种针对多租户可线性扩展的高效爬虫平台及其使用方法
本专利技术涉及网络搜索领域
,具体的说,是一种针对多租户可线性扩展的高效爬虫平台及其使用方法。
技术介绍
网络爬虫是一种按照指定规则从Internet自动化地进行数据采集的一种通用技术,爬虫系统的架构,都存在着各种各样的内部或外部问题,例如带宽限制、处理速度限制、IP封锁限制、爬虫节点不足或者过剩、爬虫节点间的通信故障检测、任务调度不合理及后台数据存储扩展性弱等。针对海量的多源数据,通常采用分布式的方式进行数据的采集和存储,而对于分布式成百上千台的爬虫节点,如何高效地调度集群节点却面临着很大的挑战。
技术实现思路
本专利技术的目的在于提供一种针对多租户可线性扩展的高效爬虫方法,突破IP资源的限制,对后台服务爬虫集群进行动态管理和监控,使用优先级任务的调度算法和Accuralfailuredetector累积故障检测法定时检测爬虫节点的状态是否存活,同时使多租户的爬虫服务隔离。本专利技术通过下述技术方案实现:一种针对多租户可线性扩展的高效爬虫平台,包括OCP平台,所述OCP平台包括数据库集群ScyllaDBCluster、重分配数据库集群RedisDBCluster、后端服务器集群BackendServerCluster、监听程序Monitor、爬虫集群终端WorkerCluster。进一步地,为了更好的实现本专利技术,所述数据库集群ScyllaDBCluster用于持久化存储数据,支持分布式线性扩展;所述重分配数据库集群RedisDBCluster用于爬虫大任务SpiderJobs和爬虫执行小任务SpiderTasks的接收与分发,支持分布式线性扩展;所述后端服务器集群BackendServerCluster用于提供爬虫服务的接口以及OCP平台的Web展示接口,支持分布式线性扩展。进一步地,为了更好的实现本专利技术,所述监听程序Monitor包括爬虫主机状态监听程序HostsStatus、爬虫集群状态监测程序WorkerStatus、小任务执行状态监测程序TasksStatus;所述爬虫主机状态监听程序HostsStatus根据自定义的Accuralfailuredetector累积故障检测法动态反应网络状况;所述爬虫集群状态监测程序WorkerStatus用于监控爬虫节点进程的工作状态是否正常;所述小任务执行状态监测程序TasksStatus用于监控Task任务是否执行成功。进一步地,为了更好的实现本专利技术,所述爬虫集群终端WorkerCluster用于完成爬虫进程WorkerProcess的工作,支持分布式线性扩展。进一步地,为了更好的实现本专利技术,具体包括以下步骤:步骤F1:启动OCP平台,爬虫节点进行数据采集;步骤F2:新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Workers;步骤F3:在OCP平台上为租户Client编写爬虫规则Spider;步骤F4:爬虫规则Spider通过WebAPI或者SdkAPI生成爬虫大任务SpiderJobs,并将爬虫大任务SpiderJobs存入数据库集群ScyllaDBCluster中的Jobs大任务队列中;步骤F5:启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务SpiderTasks,再将爬虫小任务SpiderTasks存入数据库集群ScyllaDBCluster;同时将爬虫小任务SpiderTasks推送到重分配数据库集群RedisDBCluster中的Tasks小任务队列中;步骤F6:爬虫Worker调用OCP平台的接口连接重分配数据库集群RedisDBCluster,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点;同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级;步骤F7:爬虫节点取到Task任务后开始执行,将执行结果Result写入到数据库集群ScyllaDBCluster中;步骤F8:爬虫主机状态监听程序HostsStatus使用Accuralfailuredetector累积故障检测法定时检测爬虫节点的状态是否存活;;如果不存活,则返回步骤F2;如果存活,则返回步骤F6继续取出Task任务进行执行,直到Tasks小任务队列中的所有Task任务都成功执行完毕后,结束工作。进一步地,为了更好的实现本专利技术,所述步骤F2具体包括以下步骤:步骤F21:在OCP平台上新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程WorkerProcess;步骤F22:根据租户Client的配置需求数量计算需要的爬虫主机Hosts的数量;步骤F23:爬虫主机状态监听程序HostsStatus检测可用的爬虫主机Hosts的数量,并判断可用的爬虫主机Hosts数量是否足够;若不足,则重建爬虫主机Hosts,爬虫主机状态监听程序HostsStatus再次检测可用的爬虫主机Hosts的数量,直到可用的爬虫主机Hosts的数量足够;若足够,则进行下一步;步骤F24:爬虫集群状态监测程序WorkerStatus将爬虫Worker分配到爬虫主机Hosts上,在爬虫主机Hosts上启动爬虫进程WorkerProcess。进一步地,为了更好的实现本专利技术,所述步骤F4具体是指:爬虫规则Spider通过WebAPI配置爬虫大任务SpiderJobs,且使用SdkAPI调用并产生爬虫大任务SpiderJobs;将爬虫大任务SpiderJobs分别存入数据库集群ScyllaDBCluster和重分配数据库集群RedisDBCluster中。进一步地,为了更好的实现本专利技术,所述步骤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平台的后端服务器集群BackendServerCluster设本文档来自技高网...

【技术保护点】
1.一种针对多租户可线性扩展的高效爬虫平台,其特征在于:包括OCP平台,所述OCP平台包括数据库集群ScyllaDB Cluster、重分配数据库集群RedisDB Cluster、后端服务器集群Backend Server Cluster、监听程序Monitor、爬虫集群终端Worker Cluster。

【技术特征摘要】
1.一种针对多租户可线性扩展的高效爬虫平台,其特征在于:包括OCP平台,所述OCP平台包括数据库集群ScyllaDBCluster、重分配数据库集群RedisDBCluster、后端服务器集群BackendServerCluster、监听程序Monitor、爬虫集群终端WorkerCluster。2.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述数据库集群ScyllaDBCluster用于持久化存储数据,支持分布式线性扩展;所述重分配数据库集群RedisDBCluster用于爬虫大任务SpiderJobs和爬虫执行小任务SpiderTasks的接收与分发,支持分布式线性扩展;所述后端服务器集群BackendServerCluster用于提供爬虫服务的接口以及OCP平台的Web展示接口,支持分布式线性扩展。3.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述监听程序Monitor包括爬虫主机状态监听程序HostsStatus、爬虫集群状态监测程序WorkerStatus、小任务执行状态监测程序TasksStatus;所述爬虫主机状态监听程序HostsStatus根据自定义的Accuralfailuredetector累积故障检测法动态反应网络状况;所述爬虫集群状态监测程序WorkerStatus用于监控爬虫节点进程的工作状态是否正常;所述小任务执行状态监测程序TasksStatus用于监控Task任务是否执行成功。4.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台,其特征在于:所述爬虫集群终端WorkerCluster用于完成爬虫进程WorkerProcess的工作,支持分布式线性扩展。5.根据权利要求1所述的一种针对多租户可线性扩展的高效爬虫平台的使用方法,其特征在于:具体包括以下步骤:步骤F1:启动OCP平台,爬虫节点进行数据采集;步骤F2:新增租户Client,根据租户Client的配置需求,自动重建租户Client需要的爬虫主机Hosts和爬虫进程Workers;步骤F3:在OCP平台上为租户Client编写爬虫规则Spider;步骤F4:爬虫规则Spider通过WebAPI或者SdkAPI生成爬虫大任务SpiderJobs,并将爬虫大任务SpiderJobs存入数据库集群ScyllaDBCluster中的Jobs大任务队列中;步骤F5:启动Jobs大任务队列的展开程序,从Jobs大任务队列中取出Job任务,并将Job任务展开为待执行的爬虫小任务SpiderTasks,再将爬虫小任务SpiderTasks存入数据库集群ScyllaDBCluster;同时将爬虫小任务SpiderTasks推送到重分配数据库集群RedisDBCluster中的Tasks小任务队列中;步骤F6:爬虫Worker调用OCP平台的接口连接重分配数据库集群RedisDBCluster,OCP平台的接口从Tasks小任务队列中取出任意Task任务,并将该Task任务返回给爬虫节点;同时提升Tasks小任务队列中长时间未被取出执行的Task任务的优先级;步骤F7:爬虫节点取到Task任务后开始执行,将执行结果Result写入到数据库集群ScyllaDBCluster中;步骤F8:爬虫主机状态监听程序HostsStatus使用Accuralfailuredetector累积故障检测法定时检测爬虫节点的状态是否存活;如果不存活,则返回步骤F2;如果存活,则返回步骤F6继续取出Task任务进行执行,直到Tasks小任务队列中的所有Task任务都成功执行完毕后,结束工作。6.根据权...

【专利技术属性】
技术研发人员:辛如意杨礼
申请(专利权)人:成都睿码科技有限责任公司杭州数峰科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1