数据采集方法及系统的制作方法

文档序号:9687558阅读:293来源:国知局
数据采集方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及数据采集技术领域,尤其涉及一种数据采集方法及系统。
【背景技术】
[0002]现有开源的网络爬虫很多,比如说Heri trix,是一个由java开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。但它是单实例的爬虫,爬虫之间不能进行合作。由于每个爬虫是单独进行工作的,因此在硬件和系统失败时,恢复能力很差。
[0003]另外,Nutch也是开源的爬虫系统、但架构过于复杂,灵活度不高。不能有效的对采集进行管理和监控。

【发明内容】

[0004]针对现有技术的缺陷,本发明提供一种数据采集方法及系统,实现了对爬虫集群的有效状态监控和管理、提高了数据采集的效率,且具有较强的容错能力。
[0005]第一方面,本发明提供了一种数据采集方法,所述方法包括:
[0006]多个节点启动时自动注册到zookeeper服务器上;
[0007]所述zookeeper服务器从所述多个节点中确定主节点和采集节点;
[0008]所述主节点获取采集任务,并将获取的采集任务存入集群数据库中;
[0009]所述主节点将已存入集群数据库的采集任务分配给所述主节点和/或多个采集节点,以使所述主节点和/或各采集节点读取所述集群数据库中相应的采集任务;
[0010]当某一采集节点出现故障时,所述主节点收回该采集节点的采集任务,并将该采集任务分配给所述主节点和/或除该采集节点以外的其他采集节点。
[0011]其中,所述主节点获取采集任务,并将获取的采集任务存入集群数据库中,包括:
[0012]所述主节点获取采集任务,并将获取的采集任务按照任务标识分别存入集群数据库的各个数据库中。
[0013]其中,所述主节点将已存入集群数据库的采集任务分配给所述主节点和/或多个采集节点,以使所述主节点和/或各采集节点读取所述集群数据库中相应的采集任务,包括:
[0014]所述主节点将已存入集群数据库中的采集任务按照任务标识分配给主节点和/或多个采集节点,并将分配结果记录在zookeeper服务器中,以使主节点和/或各采集节点通过zookeeper服务器获取对应各自节点的任务标识,并根据任务标识读取所述集群数据库的相应数据库中的采集任务。
[0015]其中,所述方法还包括:
[0016]当某一采集节点出现故障,所述主节点向管理中心发送关于该采集节点发生故障的报警信息。
[0017]其中,所述方法还包括:
[0018]所述zookeeper服务器从多个节点中确定从节点,所述从节点用于在所述主节点出现故障后,接替所述主节点的工作。
[0019]其中,所述方法还包括:
[0020]所述从节点向管理中心发送关于主节点发生故障的报警信息。
[0021]其中,所述zookeeper服务器将第一个注册到zookeeper服务器的节点确定为主节点;将第二个注册到zookeeper服务器的节点确定为从节点;将第N个注册到zookeeper服务器的节点确定为采集节点,N>2,N为正整数。
[0022]第二方面,本发明还提供了一种数据采集系统,包括zookeeper服务器、集群数据库和多个节点;所述多个节点在启动时自动注册到所述zookeeper服务器上;
[0023]所述zookeeper服务器,用于从所述多个节点中确定主节点和采集节点;
[0024]所述主节点,用于获取采集任务,并将获取的采集任务存入所述集群数据库中;
[0025]所述主节点,还用于将已存入集群数据库的采集任务分配给所述主节点和/或多个采集节点,以使所述主节点和/或各采集节点到所述集群数据库中执行相应的采集任务;
[0026]所述主节点,还用于在某一采集节点出现故障时,收回该采集节点的采集任务,并将该采集任务分配给所述主节点和/或除该采集节点以外的其他采集节点。
[0027]其中,所述主节点具体用于:获取采集任务,并将获取的采集任务按照任务标识分别存入集群数据库的各个数据库中。
[0028]其中,所述主节点还具体用于:将已存入集群数据库中的采集任务按照任务标识分配给主节点和/或多个采集节点,并将分配结果记录在zookeeper服务器中;
[0029]所述主节点还具体用于:向所述zookeeper服务器发送请求信号,以请求获取与所述主节点对应的任务标识,并根据获取的任务标识读取所述集群数据库的相应数据库中的采集任务;
[0030]和/或,
[0031]所述采集节点具体用于:向所述zookeeper服务器发送请求信号,以请求获取与所述采集节点对应的任务标识,并根据获取的任务标识读取所述集群数据库的相应数据库中的米集任务。
[0032]由上述技术方案可知,本发明提供的数据采集方法,采用集群方式由zookeeper月艮务器协同管理和分配任务、实现了对爬虫集群的有效状态监控和管理、实现了爬虫集群的科学调度、增强了数据采集的灵活性、提高了数据采集的效率。且本发明所述的数据采集方法具有较强的容错机制。
【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
[0034]图1是本发明第一个实施例提供的数据采集方法的流程图;
[0035]图2是本发明提供的数据采集方法的工作原理示意图;
[0036]图3是本发明第二个实施例提供的数据采集系统的结构示意图。
【具体实施方式】
[0037]下面将结合本公开实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038]图1示出了本发明第一个实施例提供的数据采集方法的流程图。如图1所示,本实施例提供的数据采集方法包括如下步骤:
[0039]步骤101:多个节点启动时自动注册到zookeeper服务器上。
[0040]在本步骤中,所述多个节点上均部署有采集应用,所述多个节点在启动的时候自动注册到zookeeper服务器中。本实施例所述的节点可以为部署有采集应用的计算机。
[0041 ] 步骤102:所述zookeeper服务器从所述多个节点中确定主节点和采集节点。
[0042]在本步骤中,所述zookeeper服务器从多个节点中确定主节点和采集节点,例如zookeeper服务器可以根据节点注册到zookeeper服务器的先后顺序自动确定主节点和采集节点。
[0043]步骤103:所述主节点获取采集任务,并将获取的采集任务存入集群数据库中。
[0044]在本步骤中,优选地,所述主节点获取采集任务,并将获取的采集任务存入集群数据库中,包括:
[0045]所述主节点获取采集任务,并将获取的采集任务按照任务标识分别存入集群数据库的各个数据库中。
[0046]在本步骤中,假设所述集群数据库为redis,则主节点负责读取任务库进行种子初始化并根据task id作为一个队列key存入redis集群。这样处理有两个优势:①存入redis集群按照任务划分可以在集群中分布的均匀,不至于采集任务集中到一台机器造成压力;②可以按照任务划分并将任务指定给采集节点,保证节点任务独立。
[0047]步骤104:所述主节点将已存入集群数据库的采集任务分配给所述主节点和/或多个采集节点,以使所述主节点和/或各采集节点读取所述集群数据库中相应的采集任务;当某一采集节点出现故障时,所述主节点收回该采集节点的采集任务,并将该采集任务分配给所述主节点和/或除该采集节点以外的其他采集节点。
[0048]在本步骤中,优选地,所述主节点将已存入集群数据库的采集任务分配给所述主节点和/或多个采集节点,以使所述主节点和/或各采集节点读取所述集群数据库中相应的米集任务,包括:
[0049]所述主节点将已存入集群数据库中的采集任务按照任务标识分配给主节点和/或多个采集节点,并将分配结果记录在zookeeper服务器中,以使主节点和/或各采集节点通过zookeeper服务器获取对应各自节点的任务标识,并根据任务标识读取所述集群数据库的相应数据库中的采集任务。
[0050]从上面描述可知,主节点另外一个重要的任务就是将已经存入reids中的task均分指定到采集节点中,并记录到zookeeper中的status文件中。这样采集节点就可以直接读取zookeeper中分配给自己的tasks去redis中获取待采集任务。
[°°51 ] 具体地,zookeeper保存的数据结构如下,其中tasks保存分配给自己的task id的json数据,其中spiderl、spider2、‘"、spiderN表示主节点和/或采集节点。
[0052]/spider/spiderl/tasks
[0053]/spider2/tasks
[0054]/spider3/tasks
[0055]/spiderN/tasks
[0056]/status.properties
[0057]图2示出了本实施例所述的数据采集方法的工作原理图,参见图2,主节点(即图2中的采集主)从采集任务库DB中获取采集任务,然后将获取的采集任务按照任务ID存入到集群数据库的各个数据库中,如图2中Redis的6个数据库中,然后主节点将已存入集群数据库的采集任务分配给所述自身、从节点(即图中的采集从)以及多个采集节点(即图中的采集),并将任务分配情况记录到zookeeper服务器中,例如任务1、任务2分别存放在数据库1和数据库2中,且任务1、任务2分配给主节点。又如,任务3、任务4分别存放在数据库3和数据库4中,且任务3、任务4分配给从节点;任务5存放在数据库5中,且任务5分配给采集节点3;任务6存放在数据库6中,且任务6分配给采集节点N。这样,主节点、从节点和各采集节点就可以通过zookee
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1