一种任务队列生成方法、装置及设备制造方法及图纸

技术编号:24168053 阅读:16 留言:0更新日期:2020-05-16 02:03
公开了一种任务队列生成方法、装置及设备。通过将需要爬取的待处理任务根据各自需要访问的主机进行哈希运算,并分配到预定义长度的N维数组中,然后从数组中的每个数组元素中分别取出一个待处理任务,并放入任务队列的端部,从而形成新的任务队列。

A task queue generation method, device and device

【技术实现步骤摘要】
一种任务队列生成方法、装置及设备
本说明书实施例涉及信息
,尤其涉及一种任务队列生成方法、装置及设备。
技术介绍
在进行诸如批量取证、下载等任务时,经常需要利用到爬虫技术。例如,采用爬虫节点对于某个与证据相关的页面进行资料的爬取下载等等。在批量爬取的过程中,如果对于任务不做处理,就会经常会发生对于同一爬虫节点对于某个站点访问过于频繁而导致爬虫节点被封,进而影响资料的爬取,降低了爬取效率。基于此,需要一种可以提高爬取效率的任务队列生成方案。
技术实现思路
本申请实施例的目的是提供一种可以提高爬取效率的任务队列生成方案。为解决上述技术问题,本申请实施例是这样实现的:一方面,本说明书实施例提供一种任务队列生成方法,包括:获取多个待处理任务,其中,任一待处理任务中包含统一资源定位符URL;针对任一待处理任务,确定其所包含的URL中的主机名,计算所述主机名的哈希值;基于预定义的长度为N的数组,确定所述主机名的哈希值对所述长度N的余数;将该待处理任务分配至所述数组中与所述余数对应的数组元素中,其中,所述数组元素用于存储待分配任务;从所述数组的每个数组元素中各取出一个待处理任务,将取出的N个待处理任务,添加至当前的任务队列中的端部,生成新的任务队列。另一方面,本说明书实施例还提供一种基于前述的任务队列的分配方法,包括:针对任一任务处理节点,获取该任务处理节点的权重;从所述任务队列的另一端依次取出待处理任务,根据各任务处理节点的权重将取出的待分类任务分配给各任务处理节点,其中,任务处理节点的权重与被分配到任务的概率正相关。与一方面对应的,本说明书实施例还提供一种任务队列生成装置,包括:获取模块,获取多个待处理任务,其中,任一待处理任务中包含统一资源定位符URL;计算模块,针对任一待处理任务,确定其所包含的URL中的主机名,计算所述主机名的哈希值;确定模块,基于预定义的长度为N的数组,确定所述主机名的哈希值对所述长度N的余数;分配模块,将该待处理任务分配至所述数组中与所述余数对应的数组元素中,其中,所述数组元素用于存储待分配任务;添加模块,从所述数组的每个数组元素中各取出一个待处理任务,将取出的N个待处理任务,添加至当前的任务队列中的端部,生成新的任务队列。与另一方面对应的,本说明书实施例还提供一种基于权利前述的任务队列的分配装置,包括:权重获取模块,针对任一任务处理节点,获取该任务处理节点的权重;分配模块,从所述任务队列的另一端依次取出待处理任务,根据各任务处理节点的权重将取出的待分类任务分配给各任务处理节点,其中,任务处理节点的权重与被分配到任务的概率正相关。通过本说明书实施例所提供的方案,将需要爬取的任务根据各自需要访问的主机进行哈希运算,并分配到预定义长度的N维数组中,然后数组中的每个元素中分别取出一个待处理任务,并放入任务队列的端部,从而形成新的任务队列。通过这种方式,在批量爬取的任务队列中,可以有效的将包含相同主机的URL的任务间隔开,避免了对于同一主机的高频访问,提高了爬取效率。另一方面,当存在多节点对前述的任务队列进行处理时,还可以采用基于各节点权重进行相应的任务队列的分配,在保障不会高频访问同一节点的同时提升任务队列被处理的效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为本说明书实施例所提供的一种任务队列生成方式的流程示意图;图2为本说明书实施例所提供出的一种数组的逻辑示意图;图3为本说明书实施例所提供的一种规范化预处理的示意图;图4为本说明书实施例所提供的一种任务队列的分配方法;图5是本说明书实施例提供的一种任务队列生成装置的结构示意图;图6是本说明书实施例提供的一种任务队列的分配装置的结构示意图;图7是用于配置本说明书实施例方法的一种设备的结构示意图。具体实施方式为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。在当前爬虫技术的应运用非常的广泛。例如,在基于区块链的取证服务中,用户将自己的作品存证在区块链网络中,而服务端可以自动的对存证作品进行网络监测,并进行取证。监测的结果即为在公开的网络上得到一个与已经存证的作品类似的疑似侵权作品,取证的方式即为需要从将监测得到的结果进行本地保存,形成证据并上传区块链网络,以便日后举证。在实际应用中,由于一个作品的监测周期可能很长,因此长期处于监测中的作品是非常多的,这就造成需要取证的任务也非常多。经常是批量化的任务需要进行处理。这就容易造成取证节点高频访问同一站点,容易被封。当前的处理方式一般都是优化请求头、设置爬取时间间隔、使用虚拟IP等方案,但还没有针对任务到达爬取节点之前来就对任务进行处理,以避免被封从而提高效率的方案。基于此,本说明书实施例提供一种任务队列生成方法,应用于待处理任务到达爬取节点之前,基于本方案生成的任务队列进行爬取,可以避免对于同一主机的高频访问,提高了爬取效率。如图1所示,图1为本说明书实施例所提供的一种任务队列生成方式的流程示意图,包括:S101,获取多个待处理任务,其中,任一待处理任务中包含统一资源定位符URL。如前所述,在区块链的取证场景中就经常需要发生批量进行爬取的任务。具体而言,服务端每调用一次区块链取证服务,首先需要创建一个取证任务(即待处理任务),然后将待处理任务发送给软链机系统,软链机系统将对应的任务分配到爬虫节点(爬虫节点可以是一个,也可以是多个),爬取的任务结束后将爬取结果返回给软链机系统,然后完成上链过程。在实际应用中,一个待处理任务其中需要包含明确的统一资源定位符(UniformResourceLocator,URL)。例如,“http://www.alipay.com/a/b”即为一个URL,用于指定本次爬取任务的具体资源。在多个待处理任务中,各待处理任务的URL可以相同,也可以不同。例如,在5个待处理任务中,可能任务1至4中所包含的URL均为相同的“URL1”,而任务5所包含的URL即为“URL2”。S103,针对任一待处理任务,确定其所包含的URL中的主机名,计本文档来自技高网...

【技术保护点】
1.一种任务队列生成方法,包括:/n获取多个待处理任务,其中,任一待处理任务中包含统一资源定位符URL;/n针对任一待处理任务,确定其所包含的URL中的主机名,计算所述主机名的哈希值;/n基于预定义的长度为N的数组,确定所述主机名的哈希值对所述长度N的余数;/n将该待处理任务分配至所述数组中与所述余数对应的数组元素中,其中,所述数组元素用于存储待分配任务;/n从所述数组的每个数组元素中各取出一个待处理任务,将取出的N个待处理任务,添加至当前的任务队列中的端部,生成新的任务队列。/n

【技术特征摘要】
1.一种任务队列生成方法,包括:
获取多个待处理任务,其中,任一待处理任务中包含统一资源定位符URL;
针对任一待处理任务,确定其所包含的URL中的主机名,计算所述主机名的哈希值;
基于预定义的长度为N的数组,确定所述主机名的哈希值对所述长度N的余数;
将该待处理任务分配至所述数组中与所述余数对应的数组元素中,其中,所述数组元素用于存储待分配任务;
从所述数组的每个数组元素中各取出一个待处理任务,将取出的N个待处理任务,添加至当前的任务队列中的端部,生成新的任务队列。


2.如权利要求1所述的方法,获取包含统一资源定位符URL的待处理任务,包括:
对所述URL进行规范化预处理,获取包含规范化预处理的URL的待处理任务。


3.如权利要求1所述的方法,将取出的N个待处理任务,添加至当前的任务队列中的端部,包括:
确定所述N个待处理任务中各任务的优先级别,将优先级别高的待处理任务从端部移除,并添加至当前的任务队列中的另一端。


4.如权利要求1所述的方法,还包括:
若所述新的任务队列中待处理任务的数量超过预设值,则暂停获取新的待处理任务。


5.如权利要求1所述的方法,将该待处理任务分配至所述数组中与所述余数对应的数组元素中,包括:
确定所述数组元素的索引标识对应的分类标识,生成包含所述分类标识的待处理任务,其中,所述分类标识与所述索引标识一一对应;
将包含分类标识的待处理任务分配至所述数组中与所述余数对应的数组元素中。


6.一种基于权利要求1至5任一所述的任务队列的分配方法,包括:
针对任一任务处理节点,获取该任务处理节点的权重;
从所述任务队列的另一端依次取出待处理任务,根据各任务处理节点的权重将取出的待分类任务分配给各任务处理节点,其中,任务处理节点的权重与被分配到任务的概率正相关。


7.如权利要求6所述的方法,当所述任务队列中的待处理任务还包含分类标识时,
相应的,获取该任务处理节点的权重,包括:分别获取该任务处理节点对于各类任务的权重,其中,该任务处理节点对于i类任务的权重与该任务处理节点当前正在处理的第i类任务的数量负相关,N≥i≥1;
相应的,根据各任务处理节点的权重分配给各任务处理节点,包括:根据各任务处理节点对于i类任务的权重,将第i类待处理任务分配给各任务处理节点。


8.一种任务队列生成装置,包括:
获取模块,获取多个待处理任务,其中,任一待处理任务中包含统一资源...

【专利技术属性】
技术研发人员:官砚楚彭雪银金戈
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1