CN110929126A - 一种基于远程过程调用实现的分布式爬虫调度方法 - Google Patents
一种基于远程过程调用实现的分布式爬虫调度方法 Download PDFInfo
- Publication number
- CN110929126A CN110929126A CN201911214436.XA CN201911214436A CN110929126A CN 110929126 A CN110929126 A CN 110929126A CN 201911214436 A CN201911214436 A CN 201911214436A CN 110929126 A CN110929126 A CN 110929126A
- Authority
- CN
- China
- Prior art keywords
- crawler
- seed
- seeds
- client
- distributed
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于远程过程调用实现的分布式爬虫调度方法、装置、服务端、***及可读存储介质,该方案基于Thrift通信框架实现爬虫调度,能够实现远程跨语言调用;在存储方面,将爬虫种子以散列结构的形式存储在redis集群,提升了爬虫种子的存储效率和访问速度;在操作方面,向客户端提供爬虫种子的操作接口,使得用户能够依据自身需求配置爬虫种子,且通过redis锁避免了数据一致性问题。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种基于远程过程调用实现的分布式爬虫调度方法、装置、服务端、***及可读存储介质。
背景技术
随着互联网的规模迅速增长,其相关的服务和信息量也随之快速增长。在这些信息得到人们广泛应用的同时,专门负责互联网信息收集工作的网络爬虫也面临着巨大的挑战。
目前,国内外的大型互联网公司、相关研究机构已经给出了一些较为成熟的解决方案,有些也已投入使用,但是这些方案大都只能为一般用户提供一种不可定制的服务,无法满足广大用户日益增长的需求。分布式爬虫需要考虑的问题主要有以下几个:爬虫任务的统一调度、存储问题、速度问题。
可见,如何在分布式场景下提供一种可靠的高效的爬虫调度方案,是亟待本领域技术人员解决的问题。
发明内容
本申请的目的是提供一种基于远程过程调用实现的分布式爬虫调度方法、装置、服务端、***及可读存储介质,用以实现在分布式场景下提供可靠的高效的爬虫调度方案的目的。其具体方案如下:
第一方面,本申请提供了一种基于远程过程调用实现的分布式爬虫调度方法,应用于基于Thrift通信框架的服务端,包括:
将爬虫种子以散列结构的形式存储在redis集群中;
向客户端提供所述爬虫种子的操作接口;
获取持有redis锁的客户端发送的对所述操作接口的调用请求;
根据所述调用请求,对目标爬虫种子执行相应的处理操作。
优选的,所述将爬虫种子以散列结构的形式存储在redis集群中,包括:
确定爬虫种子的标识信息组合,并生成所述标识信息组合的MD5值,其中所述标识信息组合包括:目标URL、业务组、采集任务ID;
将所述MD5值作为散列结构的key,以将所述爬虫种子存储在redis集群中。
优选的,所述将爬虫种子以散列结构的形式存储在redis集群中,包括:
将爬虫种子以散列结构的形式存储在redis集群中的种子队列,其中所述种子队列中的各个爬虫种子根据时间戳进行顺序排列。
优选的,所述种子队列与业务组一一对应,所述将爬虫种子以散列结构的形式存储在redis集群中的种子队列,包括:
根据爬虫种子所在的业务组,将该爬虫种子以散列结构的形式存储在redis集群中相应的种子队列。
优选的,所述向客户端提供所述爬虫种子的操作接口,包括:
向客户端提供所述爬虫种子的操作接口,所述操作接口包括以下任意一项或多项:添加接口、更新接口、删除接口、调度接口。
优选的,若所述操作接口为更新接口,所述根据所述调用请求,对目标爬虫种子执行相应的处理操作,包括:
根据所述调用请求,对目标爬虫种子中相应的配置项执行更新操作,其中所述配置项包括以下任意一项或多项:目标URL、采集深度、采集广度、采集优先级、采集任务ID、业务组、采集时间。
第二方面,本申请提供了一种基于远程过程调用实现的分布式爬虫调度装置,应用于基于Thrift通信框架的服务端,包括:
存储模块:用于将爬虫种子以散列结构的形式存储在redis集群中;
接口提供模块:用于向客户端提供所述爬虫种子的操作接口;
请求获取模块:用于获取持有redis锁的客户端发送的对所述操作接口的调用请求;
操作模块:用于根据所述调用请求,对目标爬虫种子执行相应的处理操作。
第三方面,本申请提供了一种基于远程过程调用实现的分布式爬虫调度服务端,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如上所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
第四方面,本申请提供了一种基于远程过程调用实现的分布式爬虫调度***,包括:基于Thrift通信框架的服务端和客户端;
其中,所述服务端用于将爬虫种子以散列结构的形式存储在redis集群中,并向所述客户端提供所述爬虫种子的操作接口;还用于获取持有redis锁的客户端发送的对所述操作接口的调用请求,并根据所述调用请求对目标爬虫种子执行相应的处理操作。
第五方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
本申请所提供的一种基于远程过程调用实现的分布式爬虫调度方法,应用于基于Thrift通信框架的服务端,包括:将爬虫种子以散列结构的形式存储在redis集群中;向客户端提供爬虫种子的操作接口;获取持有redis锁的客户端发送的对操作接口的调用请求;根据调用请求,对目标爬虫种子执行相应的处理操作。可见,该方法基于Thrift通信框架,能够实现远程跨语言调用;在存储方面,将爬虫种子以散列结构的形式存储在redis集群,提升了爬虫种子的存储效率和访问速度;在操作方面,向客户端提供爬虫种子的操作接口,使得用户能够依据自身需求配置爬虫种子,且通过redis锁避免了数据一致性问题。
此外,本申请还提供了一种基于远程过程调用实现的分布式爬虫调度装置、服务端、***及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所提供的一种基于远程过程调用实现的分布式爬虫调度方法实施例一的实现流程图;
图2为本申请所提供的一种基于远程过程调用实现的分布式爬虫调度方法实施例二中对删除接口调用请求的响应过程流程示意图;
图3为本申请所提供的一种基于远程过程调用实现的分布式爬虫调度方法实施例二的实现流程图;
图4为本申请所提供的一种基于远程过程调用实现的分布式爬虫调度装置实施例的功能框图;
图5为本申请所提供的一种基于远程过程调用实现的分布式爬虫调度服务端实施例的结构示意图。
具体实施方式
本申请的核心是提供一种基于远程过程调用实现的分布式爬虫调度方法、装置、服务端、***及可读存储介质,能够实现远程跨语言调用,且对传统的爬虫调度器进行了优化,提升了爬虫种子的存储效率和访问速度,允许用户能够依据自身需求配置爬虫种子,还通过redis锁避免了数据一致性问题。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面对本申请提供的一种基于远程过程调用实现的分布式爬虫调度方法实施例一进行介绍,参见图1,实施例一应用于基于Thrift通信框架的服务端,包括:
S101、将爬虫种子以散列结构的形式存储在redis集群中;
S102、向客户端提供所述爬虫种子的操作接口;
S103、获取持有redis锁的客户端发送的对所述操作接口的调用请求;
S104、根据所述调用请求,对目标爬虫种子执行相应的处理操作。
考虑到本实施例的应用场景为远程过程调用,具体的,在众多的远程过程调用框架中,本实施例选择Thrift作为种子调度器底层的通信框架。Thrift是一个可扩展且跨语言的软件框架,它结合了功能强大的软件堆栈和代码生成引擎,允许通过一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务端通信的无缝跨编程语言。
爬虫***一般可以分为四个模块,即种子生成器、种子调度器、数据采集器和通用模块,本实施例主要实现对种子调度器的优化。因此,本实施例具体应用于基于Thrift通信框架的服务端上的种子调度器。
种子调度器用于向客户端提供爬虫种子调度服务,具体的,向客户端提供多种对爬虫种子进行操作的服务接口,并响应客户端通过网络发送的对接口的调用请求。上述爬虫种子,是一种包含目标URL的、并且能为其定义各种采集行为的数据结构体。上述数据采集器可以根据所配置的爬虫种子,以一种特定的方式采集爬虫种子的目标URL。比如,采集目标URL使用哪种类型的代理、采集次数、采集频率、采集优先级以及使用哪种类型的解析器进行数据解析等。
作为一种具体的实施方式,本实施例向客户端提供的爬虫种子的操作接口包括以下任意一种或多种:添加接口、更新接口、删除接口、调度接口。其中,种子添加接口用于将生成的爬虫种子下发至种子调度器,以便种子调度器进一步对爬虫种子进行存储操作;种子更新接口用于将需要更新的爬虫种子下发至种子调度器,种子调度器进一步对爬虫种子进行更新操作;种子删除接口用于将需要删除的爬虫种子告知种子调度器,种子调度器进一步对爬虫种子进行删除操作;种子调度接口用于将选举出来的种子送往数据采集器,然后种子调度器进一步对已调度的种子进行更新清理工作。
由于种子调度器有一个很重要的工作,就是对爬虫种子进行存储,因此爬虫种子存储介质选型显得尤为重要。首先,根据上文可知,爬虫种子会经常进行存储、更新、删除、调度、更新清理的工作,因此爬虫种子并不需要持久化的存储在物理介质中;其次,种子调度器作为整个爬虫体系最为核心的部分,对其稳定性会要求非常的高,所以本实施例选择集群版的redis作为爬虫种子的存储介质。redis集群具有多节点、存储容量大、数据类型丰富等特点,非常符合本实施例对爬虫种子存储介质的选择要求。
此外,为保证爬虫种子的访问性能和存储效率,本实施例以散列结构的形式对爬虫种子进行存储。具体的,在得到爬虫种子之后,种子调度器根据该爬虫种子生成key值,并将爬虫种子以key-value的形式存储至redis集群中。
最后,考虑到分布式的应用场景,本实施例设置了redis锁。在实施过程中,服务端只接收并响应持有redis锁的客户端发送的对操作接口的调用请求,从而避免多个客户端同时对爬虫种子进行操作带来的数据一致性问题。
本实施例所提供一种基于远程过程调用实现的分布式爬虫调度方法,应用于基于Thrift通信框架的服务端,包括:将爬虫种子以散列结构的形式存储在redis集群中;向客户端提供爬虫种子的操作接口;获取持有redis锁的客户端发送的对操作接口的调用请求;根据调用请求,对目标爬虫种子执行相应的处理操作。可见,该方法基于Thrift通信框架,能够实现远程跨语言调用;在存储方面,将爬虫种子以散列结构的形式存储在redis集群,提升了爬虫种子的存储效率和访问速度;在操作方面,向客户端提供爬虫种子的操作接口,使得用户能够依据自身需求配置爬虫种子,且通过redis锁避免了数据一致性问题。
下面开始详细介绍本申请提供的一种基于远程过程调用实现的分布式爬虫调度方法实施例二,实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。
参见图2,实施例二应用于基于Thrift通信框架的服务端上的种子调度器,包括:
S201、确定爬虫种子的标识信息组合,并生成所述标识信息组合的MD5值,其中所述标识信息组合包括:目标URL、业务组、采集任务ID;
S202、将所述MD5值作为散列结构的key,根据爬虫种子所在的业务组,将该爬虫种子以散列结构的形式存储在redis集群中相应的种子队列;
其中所述种子队列中的各个爬虫种子根据时间戳进行顺序排列,各个种子队列与业务组一一对应。
S203、向客户端提供所述爬虫种子的操作接口;所述操作接口包括:添加接口、更新接口、删除接口、调度接口;
S204、获取持有redis锁的客户端发送的对所述操作接口的调用请求;
当客户端调用的是更新接口时,本实施例的种子调度器可以对目标爬虫种子中的以下任意一项或多项的配置项进行更新:目标URL、采集深度、采集广度、采集优先级、采集任务ID、业务组、采集时间。
S205、根据所述调用请求,对目标爬虫种子执行相应的处理操作。
本实施例为每个爬虫种子生成一个ID以作为散列结构的Key,从而保证其ID的唯一性。考虑到不同的业务组内可能存在相同的目标URL,不同的任务批次中也有可能存在相同的目标URL。因此,本实施例采用目标URL+业务组+任务ID的组合,生成相应的MD5值,以作为爬虫种子的key。
如果爬虫种子直接入库,那么所有的爬虫种子将会是一个混乱的、不被管理的状态,这样的爬虫种子是不被作用的爬虫种子,无法利用它采集数据。因此,本实施例设置了种子队列,从而保证爬虫种子的相对有序。具体的,种子队列采用有序集合的结构存储种子ID,每个种子ID都会有个时间戳,种子队列按其时间戳进行排列。
在此基础之上,分别为不同的业务组设置相应的种子队列,保证业务组与种子队列一一对应,将同一业务组下的爬虫种子加入与该业务组相对应的种子队列中,这样可以实时的知道该业务组下的爬虫种子还剩下多少,可以很方便的跟进爬虫任务进度。
作为一种具体的实施方式,本实施例中基于Thrift通信框架的爬虫种子内容及结构如下所示:
struct seedRecord{#种子结构体
1:required string url,#目标URL
2:required i32 idepth=0,#采集深度
3:required i32 xdepth=0,#采集广度
4:required i32 cur_idepth=0,#当前采集深度
5:required i32 cur_xdepth=0,#当前采集广度
6:required string priority="2",#采集优先级
7:required string task="default",#采集任务id
8:required string cgroup="",#业务组
9:required string tag="",#种子标签
10:required string source="",#种子来源
11:required map<string,string>extend={},#扩展字段
12:required string gtime="",#采集时间
13:required string type="",#种子类型
14:required i32 refresh=0,#采集频率
15:required i32 stime=1#采集次数
}
struct seedList{#种子列表结构体
1:required list<seedRecord>seeds=[],
}
作为一种具体的实施方式,本实施例中基于Thrift通信框架的接口通信内容及接口结构如下所示:
service SeederService{#种子添加、更新、删除服务端接口结构bool add_seed(1:required seedRecord seed_record),
bool update_seed(1:required seedRecord seed_record),
bool delete_seed(1:required seedRecord seed_record),
}
service CrawlerService{#种子调度服务端接口接口
seedList get_batch(1:required string spider_id),
}
如图3所示,下面以客户端调用删除接口为例,对本实施例中种子调度器的响应过程进行介绍:接收客户端对删除接口的调用请求;根据客户端对删除接口的调用请求,判断该客户端是否持有redis锁;若持有,则确定待进行删除的目标爬虫种子,并进一步判断当前redis集群中是否存在目标爬虫种子;若不存在,则直接向客户端反馈无法删除,目标爬虫种子不存在的信息;若存在,则删除目标爬虫种子的key,再删除该目标爬虫种子数据;最后,再对目标爬虫种子所在的种子队列进行优先级的更新。值得一提的是,根据批量删除或单个删除的两种不同情形,此处待进行删除的爬虫种子可以为单个,也可以为多个。
本实施例不再介绍客户端对其他操作接口的调用过程,具体可以参照上述对删除接口的调用过程。
综上,本实施例提供的一种基于远程过程调用实现的分布式爬虫调度方法,应用于基于Thrift通信框架的服务端上的种子调度器,包括:采用目标URL+业务组+任务ID的组合,生成相应的MD5值;将MD5值作为爬虫种子的key,并根据爬虫种子所在的业务组,将爬虫种子以散列结构的形式存储在redis集群中相应的种子队列;向客户端提供爬虫种子的操作接口,例如添加接口、删除接口、更新接口、调度接口;获取持有redis锁的客户端发送的对操作接口的调用请求;根据调用请求,对目标爬虫种子执行相应的处理操作。
可见,本实施例在实施例一的基础上,将目标URL+业务组+任务ID的组合的MD5值作为爬虫种子的key,保证了其唯一性;而且,通过为不同业务组分别设置种子队列,不仅保证了爬虫种子的有序性,还方便了对爬虫种子的管理。
下面对本申请实施例提供的一种基于远程过程调用实现的分布式爬虫调度装置进行介绍,下文描述的一种基于远程过程调用实现的分布式爬虫调度装置与上文描述的一种基于远程过程调用实现的分布式爬虫调度方法可相互对应参照。
该装置应用于基于Thrift通信框架的服务端,如图4所示,包括:
存储模块401:用于将爬虫种子以散列结构的形式存储在redis集群中;
接口提供模块402:用于向客户端提供所述爬虫种子的操作接口;
请求获取模块403:用于获取持有redis锁的客户端发送的对所述操作接口的调用请求;
操作模块404:用于根据所述调用请求,对目标爬虫种子执行相应的处理操作。
本实施例的基于远程过程调用实现的分布式爬虫调度装置用于实现前述的基于远程过程调用实现的分布式爬虫调度方法,因此该装置中的具体实施方式可见前文中的基于远程过程调用实现的分布式爬虫调度方法的实施例部分,例如,存储模块401、接口提供模块402、请求获取模块403、操作模块404,分别用于实现上述基于远程过程调用实现的分布式爬虫调度方法中步骤S101,S102,S103,S104。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的基于远程过程调用实现的分布式爬虫调度装置用于实现前述的基于远程过程调用实现的分布式爬虫调度方法,因此其作用与上述方法的作用相对应,这里不再赘述。
此外,本申请还提供了一种基于远程过程调用实现的分布式爬虫调度服务端,如图5所示,包括:
存储器100:用于存储计算机程序;
处理器200:用于执行所述计算机程序,以实现如上文所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
本申请还提供了一种基于远程过程调用实现的分布式爬虫调度***,包括:基于Thrift通信框架的服务端和客户端;
其中,所述服务端用于将爬虫种子以散列结构的形式存储在redis集群中,并向所述客户端提供所述爬虫种子的操作接口;还用于获取持有redis锁的客户端发送的对所述操作接口的调用请求,并根据所述调用请求对目标爬虫种子执行相应的处理操作。
最后,本申请还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于远程过程调用实现的分布式爬虫调度方法,其特征在于,应用于基于Thrift通信框架的服务端,包括:
将爬虫种子以散列结构的形式存储在redis集群中;
向客户端提供所述爬虫种子的操作接口;
获取持有redis锁的客户端发送的对所述操作接口的调用请求;
根据所述调用请求,对目标爬虫种子执行相应的处理操作。
2.如权利要求1所述的方法,其特征在于,所述将爬虫种子以散列结构的形式存储在redis集群中,包括:
确定爬虫种子的标识信息组合,并生成所述标识信息组合的MD5值,其中所述标识信息组合包括:目标URL、业务组、采集任务ID;
将所述MD5值作为散列结构的key,以将所述爬虫种子存储在redis集群中。
3.如权利要求2所述的方法,其特征在于,所述将爬虫种子以散列结构的形式存储在redis集群中,包括:
将爬虫种子以散列结构的形式存储在redis集群中的种子队列,其中所述种子队列中的各个爬虫种子根据时间戳进行顺序排列。
4.如权利要求3所述的方法,其特征在于,所述种子队列与业务组一一对应,所述将爬虫种子以散列结构的形式存储在redis集群中的种子队列,包括:
根据爬虫种子所在的业务组,将该爬虫种子以散列结构的形式存储在redis集群中相应的种子队列。
5.如权利要求1所述的方法,其特征在于,所述向客户端提供所述爬虫种子的操作接口,包括:
向客户端提供所述爬虫种子的操作接口,所述操作接口包括以下任意一项或多项:添加接口、更新接口、删除接口、调度接口。
6.如权利要求5所述的方法,其特征在于,若所述操作接口为更新接口,所述根据所述调用请求,对目标爬虫种子执行相应的处理操作,包括:
根据所述调用请求,对目标爬虫种子中相应的配置项执行更新操作,其中所述配置项包括以下任意一项或多项:目标URL、采集深度、采集广度、采集优先级、采集任务ID、业务组、采集时间。
7.一种基于远程过程调用实现的分布式爬虫调度装置,其特征在于,应用于基于Thrift通信框架的服务端,包括:
存储模块:用于将爬虫种子以散列结构的形式存储在redis集群中;
接口提供模块:用于向客户端提供所述爬虫种子的操作接口;
请求获取模块:用于获取持有redis锁的客户端发送的对所述操作接口的调用请求;
操作模块:用于根据所述调用请求,对目标爬虫种子执行相应的处理操作。
8.一种基于远程过程调用实现的分布式爬虫调度服务端,其特征在于,包括:
存储器:用于存储计算机程序;
处理器:用于执行所述计算机程序,以实现如权利要求1-6任意一项所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
9.一种基于远程过程调用实现的分布式爬虫调度***,其特征在于,包括:基于Thrift通信框架的服务端和客户端;
其中,所述服务端用于将爬虫种子以散列结构的形式存储在redis集群中,并向所述客户端提供所述爬虫种子的操作接口;还用于获取持有redis锁的客户端发送的对所述操作接口的调用请求,并根据所述调用请求对目标爬虫种子执行相应的处理操作。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-6任意一项所述的一种基于远程过程调用实现的分布式爬虫调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911214436.XA CN110929126A (zh) | 2019-12-02 | 2019-12-02 | 一种基于远程过程调用实现的分布式爬虫调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911214436.XA CN110929126A (zh) | 2019-12-02 | 2019-12-02 | 一种基于远程过程调用实现的分布式爬虫调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110929126A true CN110929126A (zh) | 2020-03-27 |
Family
ID=69848423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911214436.XA Pending CN110929126A (zh) | 2019-12-02 | 2019-12-02 | 一种基于远程过程调用实现的分布式爬虫调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110929126A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898011A (zh) * | 2020-07-15 | 2020-11-06 | 北京明亮的星文化传媒有限公司 | 基于Kubernetes和Typescript扩展数据方法和*** |
CN113742549A (zh) * | 2020-05-28 | 2021-12-03 | 上海交通大学 | 基于计算资源的分布式爬虫调度***及方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
CN106503017A (zh) * | 2015-09-08 | 2017-03-15 | 摩贝(上海)生物科技有限公司 | 一种分布式爬虫***任务抓取***和方法 |
WO2017117595A1 (en) * | 2015-12-31 | 2017-07-06 | Fractal Industries, Inc. | Distributed system for large volume deep web data extraction |
CN107193960A (zh) * | 2017-05-24 | 2017-09-22 | 南京大学 | 一种分布式爬虫***及周期性增量抓取方法 |
CN107943991A (zh) * | 2017-12-01 | 2018-04-20 | 成都嗨翻屋文化传播有限公司 | 一种基于内存数据库的分布式爬虫框架及实现方法 |
CN108875091A (zh) * | 2018-08-14 | 2018-11-23 | 杭州费尔斯通科技有限公司 | 一种统一管理的分布式网络爬虫*** |
CN109359231A (zh) * | 2017-12-29 | 2019-02-19 | 广州Tcl智能家居科技有限公司 | 一种分布式网络爬虫的信息爬取方法、服务器及存储介质 |
CN109614533A (zh) * | 2018-11-28 | 2019-04-12 | 常州市武进区半导体照明应用技术研究院 | 一种基于Docker集群的分布式爬虫*** |
CN110147475A (zh) * | 2019-03-29 | 2019-08-20 | 汇通达网络股份有限公司 | 一种分布式部署的网络数据采集*** |
CN110262888A (zh) * | 2019-06-26 | 2019-09-20 | 京东数字科技控股有限公司 | 任务调度方法和装置及计算节点执行任务的方法和装置 |
-
2019
- 2019-12-02 CN CN201911214436.XA patent/CN110929126A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503017A (zh) * | 2015-09-08 | 2017-03-15 | 摩贝(上海)生物科技有限公司 | 一种分布式爬虫***任务抓取***和方法 |
WO2017117595A1 (en) * | 2015-12-31 | 2017-07-06 | Fractal Industries, Inc. | Distributed system for large volume deep web data extraction |
CN105677918A (zh) * | 2016-03-03 | 2016-06-15 | 浪潮软件股份有限公司 | 一种基于Kafka和Quartz的分布式爬虫架构及其实现方法 |
CN107193960A (zh) * | 2017-05-24 | 2017-09-22 | 南京大学 | 一种分布式爬虫***及周期性增量抓取方法 |
CN107943991A (zh) * | 2017-12-01 | 2018-04-20 | 成都嗨翻屋文化传播有限公司 | 一种基于内存数据库的分布式爬虫框架及实现方法 |
CN109359231A (zh) * | 2017-12-29 | 2019-02-19 | 广州Tcl智能家居科技有限公司 | 一种分布式网络爬虫的信息爬取方法、服务器及存储介质 |
CN108875091A (zh) * | 2018-08-14 | 2018-11-23 | 杭州费尔斯通科技有限公司 | 一种统一管理的分布式网络爬虫*** |
CN109614533A (zh) * | 2018-11-28 | 2019-04-12 | 常州市武进区半导体照明应用技术研究院 | 一种基于Docker集群的分布式爬虫*** |
CN110147475A (zh) * | 2019-03-29 | 2019-08-20 | 汇通达网络股份有限公司 | 一种分布式部署的网络数据采集*** |
CN110262888A (zh) * | 2019-06-26 | 2019-09-20 | 京东数字科技控股有限公司 | 任务调度方法和装置及计算节点执行任务的方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742549A (zh) * | 2020-05-28 | 2021-12-03 | 上海交通大学 | 基于计算资源的分布式爬虫调度***及方法 |
CN111898011A (zh) * | 2020-07-15 | 2020-11-06 | 北京明亮的星文化传媒有限公司 | 基于Kubernetes和Typescript扩展数据方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487771B2 (en) | Per-node custom code engine for distributed query processing | |
US9489237B1 (en) | Dynamic tree determination for data processing | |
US8584136B2 (en) | Context-aware request dispatching in clustered environments | |
CN102571420B (zh) | 一种网元数据管理方法及*** | |
CN104573068A (zh) | 一种基于大数据的信息处理方法 | |
CN108390933B (zh) | 消息分发方法、装置、服务器及存储介质 | |
CN113032419B (zh) | 一种多源数据聚合搜索方法、装置、设备及存储介质 | |
US20190045008A1 (en) | Systems and methods for generating, deploying, and managing data infrastructure stacks | |
US10169348B2 (en) | Using a file path to determine file locality for applications | |
CN104333573B (zh) | 一种大并发量请求的处理方法及处理*** | |
WO2021139431A1 (zh) | 微服务的数据同步方法、装置、电子设备及存储介质 | |
CN113760453B (zh) | 容器镜像分发***及容器镜像推送、拉取和删除方法 | |
CN112084206A (zh) | 数据库的事务请求处理方法、相关设备及存储介质 | |
CN105183470A (zh) | 一种自然语言处理***化服务平台 | |
CN110659124A (zh) | 一种消息处理方法和装置 | |
CN110929126A (zh) | 一种基于远程过程调用实现的分布式爬虫调度方法 | |
Rogers et al. | Bundle and pool architecture for multi-language, robust, scalable workflow executions | |
CN103559247A (zh) | 一种数据业务处理方法及装置 | |
CN113014608A (zh) | 一种流量分发控制方法、装置、电子设备及存储介质 | |
CN111414356A (zh) | 数据存储方法、装置、非关系数据库***及存储介质 | |
CN109391658A (zh) | 一种账号数据同步方法及其设备、存储介质、终端 | |
US11757703B1 (en) | Access requests processing and failover handling across multiple fault tolerance zones | |
CN115630122A (zh) | 一种数据同步方法、装置、存储介质和计算机设备 | |
CN116775420A (zh) | 基于Flink流计算的信创云平台资源展示和预警方法及*** | |
CN115757642A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200327 |